Bu belgede, Google Play Faturalandırma Kitaplığı'nın (PBL) 7 veya 8 sürümlerinden PBL 9'a nasıl geçiş yapılacağı ve yeni özelliklerle nasıl entegrasyon sağlanacağı açıklanmaktadır.
9.0.0 sürümündeki değişikliklerin tam listesi için sürüm notlarına bakın.
Genel Bakış
PBL 9, mevcut API'lerde iyileştirmeler içerir ve daha önce desteği sonlandırılan API'leri kaldırır. Kitaplığın bu sürümünde, yeni alt yanıt kodları aracılığıyla daha zengin hata bağlamı da sunuluyor.
PBL yükseltmesi için geriye dönük uyumluluk
PBL 9'a geçmek için sürüm notlarında ve bu taşıma rehberinin ilerleyen bölümlerinde açıklandığı gibi, mevcut API referanslarınızdan bazılarını uygulamanızdan güncellemeniz veya kaldırmanız gerekir.
PBL 7 veya 8'den PBL 9'a yükseltme
PBL 7 veya 8'den PBL 9'a yükseltmek için aşağıdaki adımları uygulayın:
Uygulamanızın
build.gradledosyasındaki Play Faturalandırma Kitaplığı bağımlılık sürümünü güncelleyin.dependencies { def billing_version = "9.0.0" implementation "com.android.billingclient:billing:$billing_version" }Kotlin kullanıyorsanız Google Play Faturalandırma Kitaplığı KTX modülü, Google Play Faturalandırma Kitaplığı'nı kullanırken deyimsel Kotlin yazmanızı sağlayan Kotlin uzantıları ve eş yordam desteği içerir. Bu uzantıları projenize dahil etmek için uygulamanızın
build.gradledosyasına aşağıdaki bağımlılığı gösterildiği gibi ekleyin:dependencies { val billing_version = "9.0.0" implementation("com.android.billingclient:billing-ktx:$billing_version") }(Yalnızca Play Faturalandırma Kitaplığı 7'den Play Faturalandırma Kitaplığı 9'a yükseltme için geçerlidir.)
queryProductDetailsAsyncyönteminin uygulamasını güncelleyin.ProductDetailsResponseListener.onProductDetailsResponseyönteminin imzasında değişiklik yapıldı. Bu nedenle,queryProductDetailsAsyncuygulamasında değişiklik yapmanız gerekiyor. Daha fazla bilgi için Satın alınabilecek ürünleri gösterme başlıklı makaleyi inceleyin.Kaldırılan API'leri işleyin.
Aşağıdaki tabloda, kaldırılan API'ler ve uygulamanızda kullanmanız gereken ilgili alternatif API'ler listelenmiştir.
Şu
PBL 9, aşağıdaki tabloda listelenen API'leri artık desteklemiyor. Uygulamanızda kaldırılan bu API'lerden herhangi biri kullanılıyorsa ilgili alternatif API'ler için tabloya bakın.
Daha önce kullanımdan kaldırılan API kaldırıldı Kullanılacak alternatif API queryPurchaseHistoryAsync API'leri Sorgu İşlem Geçmişi bölümüne bakın. Ücretsiz denemelere uygunluğu belirlemek için queryPurchaseHistoryAsync kullanıyorsanız artık kullanıcının hangi tekliflere uygun olduğunu belirlemek için ProductDetails.getSubscriptionOfferDetails() kullanmanız gerekir. BillingClient.SkuType BillingClient.ProductType. INAPP ve SUBS ürün türü sabitleri, işlevsel olarak kullanımdan kaldırılan SKU türü sabitlerine benzer. SkuDetails ProductDetails. Bu, tek seferlik ürünleri destekleyen yeni veri modelidir. SkuDetailsParams queryProductDetailsAsync ile QueryProductDetailsParams'ı kullanın. SkuDetailsResponseListener queryProductDetailsAsync ile ProductDetailsResponseListener'ı kullanın. QueryPurchaseHistoryParams - Etkin veya bekleyen satın alma işlemleri için queryPurchasesAsync'i kullanın.
- Tüketilen satın alma işlemlerini arka uç sunucularınızda izleyin.
- İptal edilen veya geçersiz kılınan satın alma işlemleri için sunucu tarafı Voided Purchases API'yi kullanın.
getSkuDetailsList ve setSkuDetailsList BillingFlowParams.Builder.setProductDetailsParamsList'i kullanın. querySkuDetailsAsync queryProductDetailsAsync enablePendingPurchases() (parametresiz API) enablePendingPurchases(PendingPurchasesParams params)
Desteği sonlandırılan enablePendingPurchases() işlevinin, işlevsel olarakenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())ile eşdeğer olduğunu unutmayın.queryPurchasesAsync(String skuType, PurchasesResponseListener listener) queryPurchasesAsync Şu
Aşağıdaki tabloda, PBL 9'da kaldırılan API'ler ve uygulamanızda kullanmanız gereken ilgili alternatif API'ler listelenmiştir.
Daha önce kullanımdan kaldırılan API kaldırıldı Kullanılacak alternatif API BillingClient.SkuType BillingClient.ProductType. INAPP ve SUBS ürün türü sabitleri, işlevsel olarak kullanımdan kaldırılan SKU türü sabitlerine benzer. SkuDetails ProductDetails. Bu, tek seferlik ürünleri destekleyen yeni veri modelidir. SkuDetailsParams queryProductDetailsAsync ile QueryProductDetailsParams'ı kullanın. SkuDetailsResponseListener queryProductDetailsAsync ile ProductDetailsResponseListener'ı kullanın. QueryPurchaseHistoryParams - Etkin veya beklemedeki satın alma işlemleri için queryProductDetailsAsync işlevini kullanın.
- Tüketilen satın alma işlemlerini arka uç sunucularınızda izleyin.
- İptal edilen veya geçersiz kılınan satın alma işlemleri için sunucu tarafı Voided Purchases API'yi kullanın.
getSkuDetailsList ve setSkuDetailsList BillingFlowParams.Builder.setProductDetailsParamsList'i kullanın. (Önerilir) Otomatik hizmet yeniden bağlantısını etkinleştirin.
Play Faturalandırma Kitaplığı, hizmet bağlantısı kesilmişken bir API çağrısı yapılırsa hizmet bağlantısını otomatik olarak yeniden kurmayı deneyebilir. Daha fazla bilgi için Otomatik hizmet yeniden bağlantısını etkinleştirme başlıklı makaleyi inceleyin.
Yeni alt yanıt kodlarını işleyin.
launchBillingFlow()tarafından döndürülen BillingResult artık bir alt yanıt kodu alanı içerecek. Bu alan, hatanın daha ayrıntılı nedenini belirtmek için yalnızca bazı durumlarda doldurulur. Alt yanıt alanı aşağıdaki değerleri içerebilir:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS: Kullanıcının fonları, satın almaya çalıştığı öğenin fiyatından düşük olduğunda döndürülür.USER_INELIGIBLE- Kullanıcı, abonelik teklifi için yapılandırılmış uygunluk koşullarını karşılamadığında döndürülür.NO_APPLICABLE_SUB_RESPONSE_CODE: Başka bir alt yanıt kodu geçerli olmadığında döndürülen varsayılan değer.
Taşıma adımı: Daha iyi bir kullanıcı deneyimi sağlamak için
PurchasesUpdatedListenerveya eşdeğer sonuç işleme özelliğinizi, bu belirli alt yanıt kodlarını tanıyıp yanıtlayacak şekilde güncelleyin. Örneğin, ödeme yöntemlerini düzeltme istemi veya belirli bir hata mesajının gösterilmesi.Hata kodu yeniden sınıflandırma farkındalığı.
Play Store uygulamasının sistem tarafından engellendiği durumlarda (ör. OEM tarafından özelleştirilmiş çocuk modunda) PBL'den gelen yanıt kodu
ERRORolarak değiştirildi.BILLING_UNAVAILABLETaşıma adımı: Hata işleme mantığınızın bu değişikliği desteklediğinden ve bu özel senaryolarda genel bir hata almayı beklemediğinden emin olun.
DeveloperProvidedBillingDetails.getLinkUri()null değer alabilme özelliğini işleyin.Harici ödeme entegrasyonunun bir parçası olarak
DeveloperProvidedBillingDetailskullanıyorsanızgetLinkUri()artık@Nullableolarak adlandırılıyor.Taşıma adımı: Bu değişikliği güvenli bir şekilde ele almak için entegrasyon kodunuzun, ayrıştırma veya tarayıcı intent'lerini başlatmadan önce
DeveloperProvidedBillingDetails.getLinkUri()yönteminden gelen hemnullhem de boş dize ("") değerlerini işlediğinden emin olun. Örneğin:Kotlin
val linkUri = details.getLinkUri() if (!linkUri.isNullOrEmpty()) { val intent = Intent(Intent.ACTION_VIEW, Uri.parse(linkUri)) context.startActivity(intent) }Java
String linkUri = details.getLinkUri(); if (!android.text.TextUtils.isEmpty(linkUri)) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(linkUri)); context.startActivity(intent); }İsteğe bağlı değişiklikler.
Ön ödemeli planlar için bekleyen satın alma işlemlerini destekleyin. Daha fazla bilgi için Abonelikleri ve Bekleyen İşlemleri Yönetme başlıklı makaleyi inceleyin.
Sanal taksit abonelikleri. Daha fazla bilgi için Taksitli Abonelik Entegrasyonu başlıklı makaleyi inceleyin.