Bu kılavuz, Güvenilir Web Etkinliği olarak paketlenmiş web uygulamaları içindir. Kotlin veya Java ile yazılmış Android uygulamaları için Google Play Faturalandırma belgelerine bakın.
Google Play'de dijital ürün veya abonelik satan uygulamalar Google Play Faturalandırma'yı kullanmalıdır. Güvenilir Web Etkinliği'nde, Android ve ChromeOS'te Chrome 101 ve sonraki sürümlerde kullanılabilen aşağıdaki web API'lerini kullanarak entegrasyon yaparsınız:
- Dijital Ürünler API'si: Ürün ayrıntılarını ve kullanıcının satın alma işlemlerini alır.
- Payment Request API: Satın alma sürecini başlatır.
Şartlar
Google Play Faturalandırma'yı ayarlamak için aşağıdakiler gerekir:
- Birbirine bağlı Google Play Geliştirici hesabı ve Google Payments satıcı hesabı.
- Herkese açık, kapalı test veya dahili test kanalında sürümü olan bir Google Play Store girişi.
- Uygulamanızın Google Play Console'da yapılandırılan ürünleri ve abonelikleri.
- Çalışan bir Digital Asset Links yapılandırmasına sahip Güvenilir Web Etkinliği projesi.
Uygulamanızı Play Store'dan indirmeleri için kullanıcılardan ödeme almayın. PWA'nız web'de hâlâ kullanılabilir olduğundan ücretli indirme işlemi erişimi kısıtlamaz. Bunun yerine, özellikleri veya içerikleri uygulama içi satın alma işlemleri ya da aboneliklerle satın.
Android projenizde Google Play Faturalandırma'yı etkinleştirme
Uygulamanızı Bubblewrap ile oluşturuyorsanız projenizin kök dizinindeki twa-manifest.json dosyasında playBilling özelliğini etkinleştirin:
"features": {
"playBilling": {
"enabled": true
}
}
Ardından bubblewrap update ve bubblewrap build komutlarını çalıştırın ve yeni Android paketini Play Store'a yükleyin.
Uygulamanızı Android Studio'da oluşturuyorsanız Android Browser Helper Play Faturalandırma Kitaplığı'nı ekleyin. Gerekli DelegationService ve AndroidManifest.xml değişiklikleri için twa-play-billing demosuna bakın.
Google Play Faturalandırma desteğini kontrol etme
Play Store tanımlayıcısı https://play.google.com/billing ile getDigitalGoodsService() yöntemini çağırın. Yöntem eksikse veya çağrı başarısız olursa başka bir ödeme akışı kullanın:
if ('getDigitalGoodsService' in window) {
try {
const service =
await window.getDigitalGoodsService('https://play.google.com/billing');
// Google Play Billing is available.
} catch (error) {
// Google Play Billing isn't available. Use another payment flow.
}
}
Ürün ayrıntılarını gösterme
Ürün kimliklerinizin başlığını, açıklamasını ve fiyatını almak için getDetails() kullanın. Böylece gösterdiğiniz fiyatlar Play Store ile eşleşir:
const details = await service.getDetails(['shiny_sword', 'gem']);
for (const item of details) {
const localizedPrice = new Intl.NumberFormat(
navigator.language,
{style: 'currency', currency: item.price.currency}
).format(item.price.value);
renderProductDetails(
item.itemId, item.title, localizedPrice, item.description);
}
Digital Goods API, ürün kimliklerinizi listeleyemiyor. Bunları arka ucunuzdan sorgulamak için Google Play Developer API'yi kullanın.
Özelliği satın alma
data içinde ödeme yöntemi https://play.google.com/billing ve ürün kimliği sku olan bir PaymentRequest oluşturun. Google Play Faturalandırma, Google Play Console'daki fiyatı kullandığından total zorunludur ancak yok sayılır.
show() çözümlendikten sonra satın alma işlemini doğrulamak ve onaylamak için satın alma jetonunu arka ucunuza gönderin. Satın alma işlemini üç gün içinde onaylamazsanız Google Play kullanıcıya geri ödeme yapar ve satın alma işlemini iptal eder.
async function makePurchase(service, sku) {
const paymentMethods = [{
supportedMethods: 'https://play.google.com/billing',
data: {sku},
}];
// Required by the Payment Request API, but ignored by Google Play Billing.
const paymentDetails = {
total: {label: 'Total', amount: {currency: 'USD', value: '0'}},
};
const request = new PaymentRequest(paymentMethods, paymentDetails);
try {
const response = await request.show();
const {purchaseToken} = response.details;
if (await acknowledgePurchaseOnBackend(purchaseToken, sku)) {
// Optional: consume the purchase so the user can buy the item again.
await service.consume(purchaseToken);
await response.complete('success');
} else {
await response.complete('fail');
}
} catch (error) {
// An AbortError usually means the user canceled the purchase.
}
}
Kullanıcının satın alma işlemlerini kontrol etme
Kullanıcının sahip olduğu öğeleri (ör. etkin abonelikler, kullanılmamış satın alma işlemleri veya kullanılmış promosyon kodları) bulmak için listPurchases() yöntemini kullanın. Arka ucunuzda her satın alma işlemini doğrulayın ve onaylamadığınız tüm satın alma işlemlerini onaylayın:
const purchases = await service.listPurchases();
for (const p of purchases) {
await verifyOrAcknowledgePurchaseOnBackend(p.purchaseToken, p.itemId);
// Update the UI with items the user is entitled to.
}
Entegrasyonunuzu test edin
Play Store'da yayınlamadan önce bir Android cihazda test etmek için aşağıdaki adımları uygulayın:
- Geliştirici seçenekleri etkinleştirilmiş Android 9 veya sonraki bir sürümü kullanın.
- Chrome'da
chrome://flagsadresine gidip#enable-debug-for-store-billingayarını etkinleştirin. - Sitenizi HTTPS üzerinden sunun. Dijital Ürünler API'si, HTTP üzerinden kullanılamaz.
Uygulamanız Play Store'dan yüklendiğinde bu işarete ihtiyacınız yoktur. Test hesapları ve test ürünleriyle test etmek için Google Play Faturalandırma Kitaplığı entegrasyonunuzu test etme başlıklı makaleyi inceleyin.
Sonraki adımlar
- Google Play Developer API istemci kitaplığı ile arka ucunuzdaki satın alma işlemlerini doğrulayın.
- Abonelik satma hakkında bilgi edinin.
- Abonelik değişikliklerini takip etmek için gerçek zamanlı geliştirici bildirimlerini ayarlayın.