7 veya 8 sürümlerinden Google Play Faturalandırma Kitaplığı 9'a geçiş yapma

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:

  1. Uygulamanızın build.gradle dosyası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.gradle dosyası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")
    }
    
  2. (Yalnızca Play Faturalandırma Kitaplığı 7'den Play Faturalandırma Kitaplığı 9'a yükseltme için geçerlidir.) queryProductDetailsAsync yönteminin uygulamasını güncelleyin.

    ProductDetailsResponseListener.onProductDetailsResponse yönteminin imzasında değişiklik yapıldı. Bu nedenle, queryProductDetailsAsync uygulaması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.

  3. 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 olarak enablePendingPurchases(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.

  4. (Ö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.

  5. 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 PurchasesUpdatedListener veya 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.

  6. 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 ERROR olarak değiştirildi.BILLING_UNAVAILABLE

    Taşı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.

  7. DeveloperProvidedBillingDetails.getLinkUri() null değer alabilme özelliğini işleyin.

    Harici ödeme entegrasyonunun bir parçası olarak DeveloperProvidedBillingDetails kullanıyorsanız getLinkUri() artık @Nullable olarak 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 hem null hem 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);
    }
    
  8. İsteğe bağlı değişiklikler.