Uygulamanız Google Play üzerinden dağıtılıyorsa ve dijital ürünler satmak ya da teklif vermek istiyorsanız Google Play Faturalandırma hizmetini kullanmanız gerekir. Google Play Faturalandırma, abonelik veya hizmet yönetimi kataloğunuz, fiyatlarınız, abonelikleriniz, faydalı raporlarınız ve Play tarafından desteklenen ödeme akışı Kullanıcılarınıza aşina olan mağaza.
Güvenilir Web Etkinlikleri kullanılarak oluşturulan ve Google Play Store'dan sunulan uygulamalar için: entegrasyon için artık Payment Request API'yı ve Digital Goods API'yi kullanabilirsiniz. Google Play Faturalandırma Android ve ChromeOS için Chrome 101 ve sonraki sürümlerde kullanılabilir.
Bu kılavuzda, PWA'nıza Google Play Faturalandırma desteğini nasıl ekleyeceğinizi ve hem ChromeOS hem de Play Store için Google Play Store'da dağıtılmaktadır.
PWA'nıza Play Faturalandırma desteğini eklemek için iki web platformu API'si kullanacaksınız. İlgili içeriği oluşturmak için kullanılan Digital Goods API, SKU bilgilerini toplamak ve satın alma işlemleri ile yararlanma haklarını kontrol etmek için kullanılır. Google Play Store'dan. Payment Request API, Google Play Store'u ödeme yöntemini kullanabilir ve satın alma akışını tamamlayabilirsiniz.
Play Store'da uygulamalardan para kazanma
Uygulamanız, Play Store'da Google Play Faturalandırma ile iki şekilde para kazanabilir:
- Uygulama içi satın alma işlemleri, ek mobil uygulamalar gibi hem dayanıklı hem de tüketilebilir sanal ürünlerin satışına olanak tanır. veya reklamları kaldırma.
- Abonelikler, kullanıcılarınıza belirli aralıklarla ödeme yapmaları karşılığında içerik veya hizmetlere sürekli erişim imkanı sunar. haber abonelikleri veya üyelikler gibi avantajlar sunabilirsiniz.
Şartlar
Google Play Faturalandırma'yı ayarlamak için gerekenler:
- Şu özelliklere sahip bir Google Play Geliştirici hesabı ve bir Google Payments satıcı hesabı: birbirine bağlanmış olmalıdır.
- Aşağıdaki bir Play Store girişi: herkese açık, kapalı test veya dahili test kanalında yayınlayın.
- Uygulamanızın ürünlerini ve aboneliklerini Play Store'da oluşturmak ve yapılandırmak için.
- Çalışan bir Dijital Öğe Bağlantıları yapılandırmasına sahip, Bubblepack tarafından oluşturulmuş bir proje.
BubbleWrap projesini güncelleme
Bubblepack'i yüklemediyseniz yüklemeniz gerekir. Bkz. Nasıl başlayacağınıza ilişkin ayrıntılar için Hızlı Başlangıç Kılavuzu'na bakın. Bubblepack'iniz varsa 1.8.2 veya sonraki bir sürüme güncellediğinizden emin olun.
Bubblepack ayrıca bir bayrağın arkasında da yer alıyor. İçinde
Etkinleştirmek için twa-manifest.json
içinde proje yapılandırmasını değiştirmeniz gerekiyor.
yer alır ve hem alphaDependencies
hem de playBilling
öğesini etkinleştirir
özellik:
...,
"enableNotifications": true,
"features": {
"playBilling": {
"enabled": true
}
},
"alphaDependencies": {
"enabled": true
},
...
Yapılandırma dosyası güncellendikten sonra bubblewrap update
komutunu çalıştırarak yapılandırmayı
projesi ve ardından bubblewrap build
gelir.
paketinden Play Store'a geri yükleyebilirsiniz.
Dijital Ürünler API'sinin ve Google Play Faturalandırma'nın kullanılabilirliğini algılama özelliği
Digital Goods API şu anda Chrome tarafından yalnızca PWA'nın
ve kullanılabilir olup olmadığını kontrol etmek için kullanılabilir.
window
nesnesinde getDigitalGoodsService
:
if ('getDigitalGoodsService' in window) {
// Digital Goods API is supported!
}
Digital Goods API herhangi bir tarayıcıda kullanılabilir ve farklı mağazaları destekleyebilir. Bu amaçla
desteklenip desteklenmediğini kontrol etmek için
getDigitalGoodsService()
, mağaza kimliğini parametre olarak iletir. Google Play Store tanımlandı
https://play.google.com/billing
dizesine göre:
if ('getDigitalGoodsService' in window) {
// Digital Goods API is supported!
try {
const service =
await window.getDigitalGoodsService('https://play.google.com/billing');
// Google Play Billing is supported!
} catch (error) {
// Google Play Billing is not available. Use another payment flow.
return;
}
}
SKU ayrıntılarını alma
Digital Goods API, aşağıdaki gibi bilgilerin alınmasına olanak tanıyan getDetails()
özelliğini sunar:
ürün başlığını, açıklamasını ve en önemlisi de fiyatını ödeme arka ucundan takip edebilirsiniz.
Daha sonra bu bilgileri kullanım arayüzünüzde kullanabilir ve kullanıcıya daha fazla ayrıntı sağlayabilirsiniz:
const skuDetails = await service.getDetails(['shiny_sword', 'gem']);
for (item of skuDetails) {
// Format the price according to the user locale.
const localizedPrice = new Intl.NumberFormat(
navigator.language,
{style: 'currency', currency: item.price.currency}
).format(item.price.value);
// Render the price to the UI.
renderProductDetails(
item.itemId, item.title, localizedPrice, item.description);
}
Satın alma akışını oluşturma
PaymentRequest oluşturucusu iki parametre alır: Bir ödeme yöntemi listesi ve ödeme bilgileri
Güvenilir Web Etkinliği'ne girdiğinizde, Google Play faturalandırma ödeme yöntemini kullanarak
tanımlayıcı olarak https://play.google.com/billing
ayarlamak ve ürün SKU'sunu
veri üyesi:
async function makePurchase(service, sku) {
// Define the preferred payment method and item ID
const paymentMethods = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku,
}
}];
...
}
Ödeme ayrıntıları istense de Play Faturalandırma bu değerleri göz ardı eder ve değerleri hatalı değerlerle doldurulabilmeleri için Play Console'da SKU'yu oluştururken ayarlanan değerler:
const paymentDetails = {
total: {
label: `Total`,
amount: {currency: `USD`, value: `0`}
}
};
const request = new PaymentRequest(paymentMethods, paymentDetails);
Ödeme akışını başlatmak için ödeme isteği nesnesindeki show()
öğesini çağırın. Vaat başarılı olursa
başarılı bir şekilde ayarlanmış
olabilir. Ödeme başarılı olmadıysa, kullanıcı muhtemelen ödemeyi iptal etmiştir.
Taahhüt başarılı olursa satın alma işlemini doğrulamanız ve onaylamanız gerekir. Sahtekarlığa karşı koruma sağlamak için bu adım, arka ucunuz kullanılarak uygulanmalıdır. Şu bölüme göz atın: Doğrulamayı arka ucunuzda nasıl uygulayacağınızı öğrenmek için Play Faturalandırma belgelerini inceleyin. Satın alma işlemini onaylamazsanız kullanıcıya üç gün sonra geri ödeme yapılır ve Google Play, satın alma işlemini iptal eder.
...
const request = new PaymentRequest(paymentMethods, paymentDetails);
try {
const paymentResponse = await request.show();
const {purchaseToken} = paymentResponse.details;
// Call backend to validate and acknowledge the purchase.
if (await acknowledgePurchaseOnBackend(purchaseToken, sku)) {
// Optional: tell the PaymentRequest API the validation was
// successful. The user-agent may show a "payment successful"
// message to the user.
const paymentComplete = await paymentResponse.complete('success');
} else {
// Optional: tell the PaymentRequest API the validation failed. The
// user agent may show a message to the user.
const paymentComplete = await paymentResponse.complete('fail');
}
} catch(e) {
// The purchase failed, and we can handle the failure here. AbortError
// usually means a user cancellation
}
...
İsteğe bağlı olarak, satın alma işlemini "kullanıldı" olarak işaretlemek için purchaseToken'da consume()
çağrılabilir.
tekrar satın alınmasına izin verir.
Tüm bilgiler bir araya getirildiğinde, bir satın alma yöntemi aşağıdaki gibi görünür:
async function makePurchase(service, sku) {
// Define the preferred payment method and item ID
const paymentMethods = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku,
}
}];
// The "total" member of the paymentDetails is required by the Payment
// Request API, but is not used when using Google Play Billing. We can
// set it up with bogus details.
const paymentDetails = {
total: {
label: `Total`,
amount: {currency: `USD`, value: `0`}
}
};
const request = new PaymentRequest(paymentMethods, paymentDetails);
try {
const paymentResponse = await request.show();
const {purchaseToken} = paymentResponse.details;
// Call backend to validate and acknowledge the purchase.
if (await acknowledgePurchaseOnBackend(purchaseToken, sku)) {
// Optional: consume the purchase, allowing the user to purchase
// the same item again.
service.consume(purchaseToken);
// Optional: tell the PaymentRequest API the validation was
// successful. The user-agent may show a "payment successful"
// message to the user.
const paymentComplete =
await paymentResponse.complete('success');
} else {
// Optional: tell the PaymentRequest API the validation failed.
// The user agent may show a message to the user.
const paymentComplete = await paymentResponse.complete('fail');
}
} catch(e) {
// The purchase failed, and we can handle the failure here.
// AbortError usually means a user cancellation
}
}
Mevcut satın alma işlemlerinin durumunu kontrol etme
Digital Goods API, kullanıcının mevcut yararlanma hakları (uygulama içi gerçekleştirdikleri önceki satın alma işlemlerinden elde edilen gelirler veya devam eden abonelikler başka bir cihazda, önceki bir yüklemede yapılmış, promosyon kodundan kullanılmış veya yalnızca uygulamayı son açtıklarında.
const service =
await window.getDigitalGoodsService('https://play.google.com/billing');
...
const existingPurchases = await service.listPurchases();
for (const p of existingPurchases) {
// Update the UI with items the user is already entitled to.
console.log(`Users has entitlement for ${p.itemId}`);
}
Bu, daha önce yapılan ancak onaylanmayan satın alma işlemlerini kontrol etmek için de iyi bir fırsattır. Kullanıcılarınızın ödeme yapmalarını sağlamak için satın alma işlemlerini en kısa sürede onaylamanız önerilir. haklar yansıtıldığını görebilirsiniz.
const service =
await window.getDigitalGoodsService("https://play.google.com/billing");
...
const existingPurchases = await service.listPurchases();
for (const p of existingPurchases) {
await verifyOrAcknowledgePurchaseOnBackend(p.purchaseToken, p.itemId);
// Update the UI with items the user is already entitled to.
console.log(`Users has entitlement for ${p.itemId}`);
}
Entegrasyonunuzu test etme
Geliştirme Android cihazında
Digital Goods API, geliştirme Android cihazında test amacıyla etkinleştirilebilir:
- Geliştirici modunun etkin olması kaydıyla Android 9 veya daha yeni bir sürüme sahip olduğunuzdan emin olun.
- Chrome 101 veya daha yeni bir sürümü yükleyin.
chrome://flags
adresine gidip adla işaretle:#enable-debug-for-store-billing
- Sitenin bir https protokolü kullanılarak barındırıldığından emin olun. http kullanılması API'nin
undefined
olmasına neden olur
ChromeOS cihazda
Digital Goods API, sürüm 89'dan itibaren ChromeOS kararlı sürümünde kullanıma sunulacaktır. Dijital Ürünler API'sini test etmek de mümkündür:
- Play Store'dan uygulamanızı cihaza yükleyin.
- Sitenin bir https protokolü kullanılarak barındırıldığından emin olun. http kullanılması API'nin
undefined
olmasına neden olur
Test kullanıcıları ve kalite güvencesi ekipleri ile
Play Store, kullanıcı test hesapları ve test SKU'ları da dahil olmak üzere test için çeşitli olanaklar sağlar. Daha fazla bilgi için Google Play Faturalandırma test dokümanlarına göz atın.
Bir sonraki adım neresi?
Bu belgede açıklandığı gibi Play Faturalandırma API'sinin, yönetilen istemci tarafı bileşenleri bulunur. tarafından yapılmasını sağlayan özellikler.
- https://github.com/PEConn/beer adresinden Peter Conn'ın videosuna göz atın.
- Satın alma doğrulaması ile ilgili Play dokümanlarına göz atın.
- Şu anda bulabileceğiniz Google Play Developer API istemci kitaplıklarından birini kullanabilirsiniz birden fazla dilde kullanılabilir.
- Uygulamanızda abonelik modelini uyguluyorsanız Play Faturalandırma abonelikleriyle ilgili belgeler.
- Gerçek Zamanlı geliştirici bildirimlerini (RTDN) uygulayın ve Bir aboneliğin durumunu şurada sorgulamak yerine değiştiğinde arka uç bilgilendirilir: Oyna.
- Yinelenen abonelikleri önlemek için
linkedPurchaseToken
uygulayın. Bu blog yayınını şu bağlantıda okuyabilirsiniz: adım adım açıklayacağım.