Bu belgede, Google Play Faturalandırma Kitaplığı (PBL) 7 veya 8'den PBL 9'a nasıl geçiş yapılacağı ve yeni özelliklerin nasıl entegre edileceği açıklanmaktadır.
9.0.0 sürümündeki değişikliklerin tam listesi için sürüm notlarına bakın.
Android becerileri
GitHub'da gösterGoogle Play Faturalandırma Kitaplığı'nı yükseltme
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.Genel Bakış
PBL 9, mevcut API'lerde yapılan iyileştirmelerin yanı sıra daha önce desteği sonlandırılan API'lerin kaldırılmasını içerir. Kitaplığın bu sürümü, yeni alt yanıt kodları aracılığıyla daha zengin hata bağlamı da sunar.
PBL yükseltmesi için geriye dönük uyumluluk
PBL 9'a geçmek için sürüm notlarında ve bu geçiş 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ında Play Faturalandırma Kitaplığı bağımlılık sürümünü güncelleyin.dependencies { def billing_version = "9.1.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ıza olanak tanıyan 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.1.0" implementation("com.android.billingclient:billing-ktx:$billing_version") }(Yalnızca PBL 7'den PBL 9'a yükseltme için geçerlidir).
queryProductDetailsAsyncyönteminin uygulamasını güncelleyin.ProductDetailsResponseListener.onProductDetailsResponseyönteminin imzasında bir değişiklik yapıldı. Bu nedenle,queryProductDetailsAsyncuygulamasında değişiklik yapmanız gerekir. Daha fazla bilgi için Satın alınabilecek ürünleri gösterme başlıklı makaleyi inceleyin.Kaldırılan API'leri yönetin.
Aşağıdaki tabloda, kaldırılan API'ler ve uygulamanızda kullanmanız gereken alternatif API'ler listelenmiştir.
Yükseltme kaynağı
PBL 9, aşağıdaki tabloda listelenen API'leri artık desteklemiyor. Uygulamanızda bu kaldırılan API'lerden herhangi biri kullanılıyorsa alternatif API'ler için tabloya bakın.
Daha önce desteği sonlandırılan API kaldırıldı Kullanılacak alternatif API queryPurchaseHistoryAsync API'leri İşlem Geçmişini Sorgulama bölümüne bakın. Ücretsiz deneme tekliflerine uygunluğu belirlemek için queryPurchaseHistoryAsync yöntemini kullanıyorsanız artık kullanıcının hangi tekliflere uygun olduğunu belirlemek için ProductDetails.getSubscriptionOfferDetails() yöntemini kullanmanız gerekir. BillingClient.SkuType BillingClient.ProductType. INAPP ve SUBS ürün türü sabitleri, desteği sonlandırılan SKU türü sabitleriyle işlevsel olarak benzerdir. 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 yöntemini kullanın.
- Tüketilen satın alma işlemlerini arka uç sunucularınızda takip edin.
- İ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 yöntemini 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 Yükseltme kaynağı
Aşağıdaki tabloda, PBL 9'da kaldırılan API'ler ve uygulamanızda kullanmanız gereken alternatif API'ler listelenmiştir.
Daha önce desteği sonlandırılan API kaldırıldı Kullanılacak alternatif API BillingClient.SkuType BillingClient.ProductType. INAPP ve SUBS ürün türü sabitleri, desteği sonlandırılan SKU türü sabitleriyle işlevsel olarak benzerdir. 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 queryProductDetailsAsync yöntemini kullanın.
- Tüketilen satın alma işlemlerini arka uç sunucularınızda takip edin.
- İ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 yöntemini kullanın. (Önerilir) Otomatik hizmet yeniden bağlantısını etkinleştirin.
Play Faturalandırma Kitaplığı, hizmet bağlantısı kesikken bir API çağrısı yapılırsa hizmet bağlantısını otomatik olarak yeniden kurmaya çalışabilir. 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, yalnızca bazı durumlarda hatanın daha ayrıntılı bir nedenini belirtmek için doldurulur. Alt yanıt alanı aşağıdaki değerleri içerebilir:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS: Kullanıcının bakiyesi, satın almaya çalıştığı öğenin fiyatından düşük olduğunda döndürülür.USER_INELIGIBLE: Kullanıcı, bir 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 sunmak için
PurchasesUpdatedListenerveya eşdeğer sonuç işleme yönteminizi bu belirli alt yanıt kodlarını tanıyacak ve bunlara yanıt verecek şekilde güncelleyin. Örneğin, ödeme yöntemlerini düzeltme istemi veya belirli bir hata mesajı gösterilebilir.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
ERRORyerineBILLING_UNAVAILABLEolarak değiştirildi.Taşıma adımı: Hata işleme mantığınızın bu değişikliğe uyum sağladığından ve bu belirli senaryolarda genel bir hata almayı beklemediğinden emin olun.
DeveloperProvidedBillingDetails.getLinkUri()null değer alabilme özelliğini işleyin.Harici ödeme entegrasyonu kapsamında
DeveloperProvidedBillingDetailskullanıyorsanızgetLinkUri()artık@Nullableoldu.Taşıma adımı: Bu değişikliği güvenli bir şekilde yönetmek için entegrasyon kodunuzun, tarayıcı intent'lerini ayrıştırmadan veya başlatmadan önce
DeveloperProvidedBillingDetails.getLinkUri()yönteminden hemnullhem de boş dize ("") değerlerini işlediğinden emin olun. Örneğin:Kotlin
val linkUri = details.linkUri if (!linkUri.isNullOrEmpty()) { val intent = Intent(Intent.ACTION_VIEW, linkUri.toUri()) 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 Abonelikler Entegrasyonu başlıklı makaleyi inceleyin.