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

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.

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:

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

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

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

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

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

  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 yerine BILLING_UNAVAILABLE olarak 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.

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

    Harici ödeme entegrasyonu kapsamında DeveloperProvidedBillingDetails kullanıyorsanız getLinkUri() artık @Nullable oldu.

    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 hem null hem de boş dize ("") değerlerini işlediğinden emin olun. Örneğin:

    Kotlin

    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.