Bu konuda, Google Play Faturalandırma Kitaplığı 4 veya 5'ten Google Play Faturalandırma Kitaplığı 6 ve yeni abonelik özelliklerinin nasıl kullanılacağı.
6.0.0 sürümündeki değişikliklerin tam listesi için aşağıdaki sürüm notlar ekleyin.
Genel Bakış
Google Play Faturalandırma Kitaplığı 6, kullanıma sunulan yeni abonelik özelliklerini geliştiriyor birkaç iyileştirme daha ekledik. Bu özellikler sayesinde olanak tanıyıp operasyonel maliyetleri düşürerek SKU oluşturma ve yönetme çözümüdür.
Play Faturalandırma Kitaplığı ile sunulan yeni özellikler hakkında daha fazla bilgi için 5. Play'de aboneliklerle ilgili son değişiklikler bölümüne bakın Konsol.
Geriye dönük uyumlu Play Faturalandırma Kitaplığı'nı yeni sürüme geçirme
Tüm mevcut abonelik ürünleri otomatik olarak bu yeni sürüme dönüştürüldü. Play Faturalandırma Kitaplığı 5'in Mayıs 2022 sürümünün ve yeni abonelik platformu. Bu durum, herhangi bir abonelik yapmanız gerekmez. yeni sürümle uyumlu bir kataloğa sahip olması için sürümlerinden biridir. Aboneliklerin nasıl çalıştığıyla ilgili SKU'lar geriye dönük uyumlu aboneliklere dönüştürüldü. Daha fazla bilgi için Çalışma kılavuzu Play Console Yardım Merkezi'ndeki makalesine göz atın.
Uygulamanızın eski sürümleri çalışmaya devam eder
Geriye dönük uyumlu bir abonelik kataloğunuz varsa mevcut tüm sürümlerin uygulamanız bu ürünlerde amaçlandığı şekilde çalışmaya devam edecektir. Tek seferlik ürün satın alma işlemleri de eski sürümlerde sorunsuz bir şekilde çalışmaya devam edecektir.
Uygulamanızın kullanımdan kaldırılan yöntemlerin kullanıldığı sürümler (örneğin,
querySkuDetailsAsync()
)
geriye dönük olmayan temel planları veya teklifleri satamaz.
uyumlu olmalıdır. Geriye dönük uyumlu fırsatlar hakkında bilgi edinmek için Play
Console Yardım Merkezi
makalesine bakın.
Play Faturalandırma Kitaplığı 5 veya 6'ya yükseltme
Play Faturalandırma Kitaplığı 5 ve 6'da, kullanımdan kaldırılan yöntemler bulunuyor
querySkuDetailsAsync
ve BillingFlowParams.Builder.setSkuDetails
Faturalandırma olarak SkuDetails
akış parametresidir. Bu durumda, kademeli olarak Play Faturalandırma Kitaplığı 6'ya geçebilirsiniz
planlayarak bu süreci kolaylaştırabilirsiniz.
Taşıma işleminin ilk adımı olarak kitaplığı güncelleyebilirsiniz.
sürümünü kullanıyorsanız kataloğunuzu ve arka ucunuzu olduğu gibi bırakın ve
uygulamanızı kullanmaya devam edebilir. Şunu kullanmıyorsanız:
queryPurchases
, launchPriceChangeFlow
veya setVrPurchaseFlow
olmalı
beklendiği gibi çalışmaya devam eder. Daha sonra, yeni özellikleri tamamen benimsemek için
abonelik özellikleri Mayıs 2022'de kullanıma sunuldu.
Daha önce bu özellikleri Google Play Faturalandırma Kitaplığı ile kullandıysanız 5 geçiş için doğrudan Google Güncellemeleri Güncelle" etiketli bölümlere geçebilirsiniz Play Faturalandırma Kitaplığı ve Kullanıcının aboneliğini değiştirme satın alma işlemleri. Önceki bir sürümden başlıyorsanız veya henüz yeni özellikleri tam olarak kullanmaya başlamadıysanız, geçiş sürecinin adımları izleyerek bunları nasıl benimseyeceğinizi öğrenebilirsiniz.
Tam taşıma adımları
Arka uç ürün kataloğunuzda yeni abonelikler oluşturun
Play Console'u veya Play Developer API'yi kullanarak artık şunları yapabilirsiniz: Her biri birden fazla temel plana sahip tek bir abonelik yapılandırın. tekliflerdir. Abonelik teklifleri, esnek fiyatlandırma modelleri ve uygunluk seçeneklerine sahiptir. Çeşitli özellikleri kullanarak abonelik yaşam döngüsü boyunca fırsatlar oluşturabilirsiniz. otomatik yenilenen ve ön ödemeli planlar.
Yeni tarihinden önce, Play Faturalandırma Kitaplığı 6 entegrasyonunuz için abonelik platformu hakkında daha fazla bilgi edinin. Eski kataloğunuzda yinelenen ürünleri birleştirebilirsiniz Tek bir abonelik ve kullanım kapsamında aynı yararlanma hakkı avantajlarını temsil eden istediğiniz tüm seçenekleri temsil edecek temel plan ve teklif yapılandırmaları değer katar. Bu öneri hakkında daha fazla bilgi için bkz. Play Console Yardımı'nın bölümünden eski abonelikler makalesine göz atın.
Dönüştürülen abonelik ürünlerini
Mayıs 2022 sürümü; sürümleri ile satılacak olduklarından, bunları
uygulamanızın, querySkuDetailsAsync()
etkileyebileceğini öğrendiniz.
Dönüşüm sürecinde, kataloğunuzdaki abonelik ürünleri oluşturuldu Kazayla ortaya çıkabilecek değişiklikleri önlemek için Mayıs 2022'den önce salt okunur sorunları gidermeye çalışır. Bu aboneliklerde değişiklik yapmak ama ön ucunuzu ve kalitenizi etkileyebilecek arka uç entegrasyonları:
Ön uçta,
querySkuDetailsAsync()
kullanan uygulama sürümleri abonelik ürünü ayrıntılarında yalnızca geriye dönük uyumlu temel planlar satılabilir geriye dönük olarak uyumlu tek bir temel plan ve teklif olabilir. Bu nedenle, dönüştürülen aboneliklere yeni planlar veya teklifler eklerseniz Yeni ek temel planlar veya fırsatlar bu eski cihazlarda satılamayacak. sürümleri de ekleyebilirsiniz.Arka uçta, dönüştürülen aboneliklerinizi Play Console kullanıcı arayüzü. Bunları
inappproducts
ile yönetemezsiniz . Ayrıca Satın alma işlemlerini yönetmek için yeni abonelik satın alma durumu uç noktasına (purchases.subscriptionsv2.get
) geçin Bu abonelikler için eski satın alma durumu uç noktası (purchases.subscriptions.get
) yalnızca geriye dönük uyumlu temel planları ve teklifleri yönetmek için gereken veriler değeri için teklif verirsiniz. Daha fazla bilgi için Abonelik satın alma durumunu yönetme bölümünü inceleyin.
Yeni API ile arka uç abonelik kataloğunuzu yönetin
Abonelik ürün kataloğunuzu Google Play Developer API, yeni abonelik ürününü kullanmanız gerekiyor Abonelikler, temel planlar ve teklifler oluşturup yönetmek için uç noktaları tanımlama. Mayıs 2022 abonelik özelliklerini okuyun kılavuz bu sürümdeki ürün kataloğu API'sinde yapılan değişiklikler hakkında daha fazla bilgi edinin.
Bir otomatik ürün kataloğu yönetim modülünün,
Google Play Faturalandırma abonelikleri,
inappproducts
Yönetmek ve yayınlamak için yeni Subscription Publishing API ile API
abonelik kataloğunuzu kullanabilirsiniz. Üç yeni uç nokta vardır:
Monetization.subscriptions
abonelik ürünlerini yönetebilirsiniz.Monetization.basePlans
kullanabilirsiniz.Monetization.offers
seçeneğini tıklayın.
Bu yeni uç noktalar, tüm bu olanaklardan yararlanmak için kataloğunuzdaki yeni özellikler: temel plan ve teklif etiketleri, bölgesel hedefleme, ön ödemeli planlar ve daha fazlası.
Yine de
inappproducts
Tek seferlik satın alım ürünleri için uygulama içi ürün kataloğunuzu yöneten API.
Uygulamanızın kullanımdan kaldırılan yöntemlerin (ör. querySkuDetailsAsync()
) kullanıldığı sürümlerde, geriye dönük uyumlu olmayan temel planlar veya teklifler satılamaz. Geriye dönük uyumlu fırsatlar hakkında buradan bilgi edinebilirsiniz.
Google Play Faturalandırma Kitaplığı'nı güncelleme
Yeni abonelik ürünleri kataloğunuzu oluşturduktan sonra,
uygulamanızı Google Faturalandırma Kitaplığı 5'e taşıyabilirsiniz. Mevcut
Şu şekilde güncellenmiş sürüme sahip Play Faturalandırma Kitaplığı bağımlılığı:
uygulamanızın build.gradle
dosyası.
dependencies {
def billingVersion = "6.0.0"
implementation "com.android.billingclient:billing:$billingVersion"
}
Projeniz için herhangi bir çağrıda değişiklik yapmamış olsanız bile, yöntemler: Play Faturalandırma Kitaplığı 6 geriye dönük uyumludur. SKU kavramı gibi düşünülebilir. Kullanımdan kaldırılmış olarak görülse de artımlı süreçtir.
Faturalandırma İstemcisini ilk kullanıma hazırlayın ve Google Play ile bağlantı kurun
Satın alma işlemlerini Android uygulamasından başlatmanın ilk adımları aynıdır:
Satın alınabilecek ürünleri göster
Kullanıcının satın alabileceği tüm teklifleri almak için:
SkuDetailsParams
yerineQueryProductDetailsParams
yazınBillingClient.querySkuDetailsAsync()
görüşmesini değiştirBillingClient.queryProductDetailsAsync()
kullanmak için
Sorgu sonuçlarının artık SkuDetails
yerine ProductDetails
olduğunu unutmayın.
Her ProductDetails
öğede ürünle ilgili bilgiler yer alır
(kimlik, başlık, tür vb.). Abonelik ürünleri için ProductDetails
List<ProductDetails.SubscriptionOfferDetails>
içeren bir List<ProductDetails.SubscriptionOfferDetails>
abonelik teklifi ayrıntılarının yer aldığı listedir. Tek seferlik satın alımlarda geçerli olan ürünler için
ProductDetails
, ProductDetails.OneTimePurchaseOfferDetails
içeriyor. Bu
kullanıcılara hangi tekliflerin gösterileceğine karar vermek için kullanılabilir.
Aşağıdaki örnek, uygulamanızın değişiklikten önce ve sonra nasıl görünebileceğini gösterir aşağıdaki değişiklikleri yaparak:
Önce
Kotlin
val skuList = ArrayList<String>() skuList.add("up_basic_sub") val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS).build() billingClient.querySkuDetailsAsync(params) { billingResult, skuDetailsList -> // Process the result }
Java
List<String> skuList = new ArrayList<>(); skuList.add("up_basic_sub"); SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList).setType(SkuType.SUBS).build(); billingClient.querySkuDetailsAsync(params, new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) { // Process the result. } } );
Sonra
Kotlin
val productList = listOf( QueryProductDetailsParams.Product.newBuilder() .setProductId("up_basic_sub") .setProductType(BillingClient.ProductType.SUBS) .build() ) val params = QueryProductDetailsParams.newBuilder().setProductList(productList).build() billingClient.queryProductDetailsAsync(params) { billingResult, productDetailsList -> // Process the result }
Java
ImmutableList<Product> productList = ImmutableList.of(Product.newBuilder() .setProductId("up_basic_sub") .setProductType(ProductType.SUBS) .build()); QueryProductDetailsParams params = QueryProductDetailsParams.newBuilder() .setProductList(productList) .build(); billingClient.queryProductDetailsAsync( params, new ProductDetailsResponseListener() { public void onProductDetailsResponse(BillingResult billingResult, List<ProductDetails> productDetailsList) { // Process the result } } );
queryProductDetailsAsync
için geri çağırma, List<ProductDetails>
döndürüyor.
Her ProductDetails
öğede ürünle ilgili bilgiler yer alır
(kimlik, başlık, tür vb.). Aradaki temel fark abonelik
ürünler artık bir List<ProductDetails.SubscriptionOfferDetails>
de içeriyor
bir kampanya oluşturun.
Play Faturalandırma Kitaplığı'nın önceki sürümleri yeni
(abonelikler, temel planlar, teklifler vb.) içeren yeni sistem,
Her abonelik SKU'sunu geriye dönük uyumlu tek bir SKU'ya çevirir.
ve teklife dönüşebilir. Tek seferlik satın alımlarda kullanılan ürünler
ProductDetails
nesnesine taşındı. Tek seferlik teklif ayrıntıları
satın alınan ürüne
getOneTimePurchaseOfferDetails()
yöntemini çağırın.
Nadiren de olsa bazı cihazlar ProductDetails
ve queryProductDetailsAsync()
öğelerini desteklemeyebilir.
Bunun nedeni genellikle
Google Play Hizmetleri. Emin olmak için
destek alabileceğinizi
isFeatureSupported()
PRODUCT_DETAILS
için
özelliğini queryProductDetailsAsync
aramayı deneyin. Yanıt
OK
cihaz bu özelliği desteklediğinden queryProductDetailsAsync()
numaralı telefonu aramaya devam edebilirsiniz.
Yanıt FEATURE_NOT_SUPPORTED
ise
Bunun yerine,
querySkuDetailsAsync()
.
Geriye dönük uyumluluğun nasıl kullanılacağı hakkında daha fazla bilgi edinmek için
Mayıs 2022 abonelik özellikleri kılavuzunu inceleyin.
Teklif satın alma akışını başlatma
Bir fırsat için satın alma akışı başlatmak, akış başlatmaya çok benzerdir. isteyebilirsiniz. Sürüm 6'yı kullanarak bir satın alma isteği başlatmak için aşağıdakileri yapın:
BillingFlowParams
içinSkuDetails
kullanmak yerine,ProductDetailsParams
kullanın.- Teklif kimliği ve temel plan kimliği gibi teklif ayrıntılarına
SubscriptionOfferDetails
kullanılarak ulaşılabilir. nesnesini tanımlayın.
Kullanıcının seçtiği fırsatla bir ürün satın almak için offerToken
kazanın
ProductDetailsParams
nesnesine aktarmanızı sağlar.
BillingFlowParams
nesnesi oluşturduktan sonra faturalandırma akışını başlatın
BillingClient
aynı kalır.
Aşağıdaki örnek, uygulamanızın değişiklikten önce ve sonra nasıl görünebileceğini gösterir aşağıdaki değişiklikleri yaparak:
Önce
Kotlin
// An activity reference from which the billing flow will be launched. val activity : Activity = ... // Retrieve a value for "skuDetails" by calling querySkuDetailsAsync(). val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(skuDetails) .build() val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
Java
// An activity reference from which the billing flow will be launched. Activity activity = ...; // Retrieve a value for "skuDetails" by calling querySkuDetailsAsync(). BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(skuDetails) .build(); BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
Sonra
Kotlin
// An activity reference from which the billing flow will be launched. val activity : Activity = ...; val productDetailsParamsList = listOf( BillingFlowParams.ProductDetailsParams.newBuilder() // retrieve a value for "productDetails" by calling queryProductDetailsAsync() .setProductDetails(productDetails) // For One-time product, "setOfferToken" method shouldn't be called. // For subscriptions, to get the offer token corresponding to the selected // offer call productDetails.subscriptionOfferDetails?.get(selectedOfferIndex)?.offerToken .setOfferToken(selectedOfferToken) .build() ) val billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build() // Launch the billing flow val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
Java
// An activity reference from which the billing flow will be launched. Activity activity = ...; ImmutableList<ProductDetailsParams> productDetailsParamsList = ImmutableList.of( ProductDetailsParams.newBuilder() // retrieve a value for "productDetails" by calling queryProductDetailsAsync() .setProductDetails(productDetails) // For one-time products, "setOfferToken" method shouldn't be called. // For subscriptions, to get the offer token corresponding to the selected // offer call productDetails.getSubscriptionOfferDetails().get(selectedOfferIndex).getOfferToken() .setOfferToken(selectedOfferToken) .build() ); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); // Launch the billing flow BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
Satın alma işlemlerini gerçekleştirme
Satın alma işlemleri Google Play Faturalandırma Kitaplığı 6 ile benzer şekilde işlenmeye devam ediyor önceki sürümlere dönelim.
Kullanıcıya ait tüm etkin satın alma işlemlerini almak ve yeni satın almak istiyorsanız aşağıdakileri yapın:
BillingClient.SkuType
değeriniqueryPurchasesAsync()
, birQueryPurchasesParams
nesnesi iletin (BillingClient.ProductType
değeri içeren)
Aşağıdaki örnek, uygulamanızın daha önce ve sonra nasıl görünebileceğini şu değişiklikleri yaptıktan sonra:
Önce
Kotlin
billingClient.queryPurchasesAsync(BillingClient.SkuType.SUBS) { billingResult, purchaseList -> { // Process the result } }
Java
billingClient.queryPurchasesAsync( BillingClient.SkuType.SUBS, new PurchasesResponseListener() { public void onQueryPurchasesResponse( BillingResult billingResult, ListP<urchase >purchases) { // process the result } } );
Sonra
Kotlin
billingClient.queryPurchasesAsync( QueryPurchasesParams.newBuilder() .setProductType(BillingClient.ProductType.SUBS) .build() ) { billingResult, purchaseList -> // Process the result }
Java
billingClient.queryPurchasesAsync( QueryPurchasesParams.newBuilder().setProductType(ProductType.SUBS).build(), new PurchasesResponseListener() { public void onQueryPurchasesResponse( BillingResult billingResult, List<Purchase> purchases) { // Process the result } } );
Uygulama dışı satın alma işlemlerini yönetme adımları ve bekleyen işlemler değişmedi.
Arka ucunuzdaki yeni API ile abonelik satın alma durumunu yönetin
Abonelik satın alma durumu yönetim bileşeninizi taşımanız gerekir arka ucunuzda, oluşturulan yeni ürünlerin satın alımına geri dönüp bakarsınız. Mevcut abonelik satın alma durumunuzun yönetimi bileşeninin normal şekilde çalışması gerekir: Bu özellik, Mayıs 2022 lansmanından önce tanımlanmalıdır ve satın alma işlemlerini yönetmek için yeterli olmalıdır. sunar, ancak yeni işlevlerin hiçbirini desteklemez.
Satın alma işlemleri için yeni Subscription Purchases API'sini satın alma durumunu kontrol eden abonelik satın alma durumu yönetim modülü durumu sunar ve arka ucunuzda Play Faturalandırma aboneliği yararlanma haklarını yönetir. API'nin eski sürümü, yönetim için gerekli tüm ayrıntıları döndürmez satın alma işlemlerini izleyebilirsiniz. Önceki sürümlerdeki değişikliklerle ilgili ayrıntılar için Mayıs 2022'de sunulan yeni abonelik özellikleri rehberini inceleyin.
Normalde, yeni bir abonelik satın aldığınızda Subscription Purchases API'yi
SubscriptionNotification
Gerçek Zamanlı Geliştirici Bildirimi
abonelik durumuyla ilgili en son bilgileri görebilirsiniz. Mevcut şifrenizi
yeni sürümüyle purchases.subscriptions.get
için yapılan çağrılar
Subscription Purchases API'si, purchases.subscriptionsv2.get
.
Adında yeni bir kaynak var.
SubscriptionPurchaseV2
sahip olduğunuz
'nı inceleyin.
Bu yeni uç nokta, tüm abonelik ürünlerinizin ve satın aldığınız uygulamanın hangi sürüm olduğunu ve ürün tanımlandığında (Mayıs 2022 lansmanından önce veya sonra), Taşıma işleminden sonra aboneliğinizin yalnızca bu sürümüne ihtiyacınız olacak. modülünü kullanabilirsiniz.
Kullanıcının abonelik satın alma işlemlerini değiştirme
Play Faturalandırma Kitaplığı 5 ve önceki sürümlerde:
ProrationMode
kullanıcının abonelik satın alma işlemlerine (yükseltme gibi) değişiklikleri uygulamak için kullanıldı
veya alt sürüme geçme. Bu özellik kullanımdan kaldırıldı ve şununla değiştirildi:
ReplacementMode
kullanıma sunduk.
Abonelik fiyatı değişikliklerini yönetme
Daha önce desteği sonlandırılan launchPriceConfirmationFlow
API şuradan kaldırıldı:
Play Faturalandırma Kitaplığı 6. Alternatifler için fiyat değişikliklerine bakın
rehberini inceleyin.
Play Faturalandırma Kitaplığı hatalarını işleme
Play Faturalandırma Kitaplığı 6'da şunu belirten yeni bir NETWORK_ERROR
kodu eklendi:
Kullanıcının cihazı ile Google
Play sistemi. Kodlarda da değişiklikler yapıldı: SERVICE_TIMEOUT
ve
SERVICE_UNAVAILABLE
. Daha fazla bilgi için BillingResult yanıtının ele alınması bölümüne bakın.
ekleyebilirsiniz.
Beklemedeki işlemleri ele alma
Play Faturalandırma Kitaplığı 6.0.0 sürümünden itibaren sipariş oluşturmamaktadır
Bekleyen satın alma işlemlerinin kimliği. Bu satın alma işlemleri için sipariş kimliği şundan sonra doldurulur:
satın alma işlemi,
PURCHASED
durumu. Entegrasyonunuzun yalnızca
İşlemin tamamı tamamlandı. Şu ayrıntılar için satın alma jetonunu kullanmaya devam edebilirsiniz:
kayıtları. Bekleyen satın alma işlemlerinin ele alınması hakkında daha fazla bilgi için bkz. Play
Faturalandırma Kitaplığı entegrasyon kılavuzu ve
satın alma yaşam döngüsü yönetimi rehberini inceleyin.