Bu konu, Google Play Faturalandırma Kitaplığı ile ilgili sürüm notlarını içerir.
Google Play Faturalandırma Kitaplığı 6.1.0 Sürümü (14.11.2023)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 6.1.0 sürümü kullanıma sunulmuştur.
Değişiklik özeti
- Yalnızca alternatif faturalandırmayı (kullanıcı seçimi olmadan) destekleyecek API'ler eklendi
- Yalnızca alternatif faturalandırma sunma özelliğini işlevsel olarak etkinleştirmek için
BillingClient.Builder.enableAlternativeBillingOnly()
eklendi. - Yalnızca alternatif faturalandırma seçeneğinin sunulup sunulmadığını kontrol etmek için
BillingClient.isAlternativeBillingOnlyAvailableAsync()
eklendi. BillingClient.showAlternativeBillingOnlyInformationDialog()
, yalnızca alternatif faturalandırmanın kullanıldığı zamanları kullanıcılara bildirmek amacıyla bir bilgi iletişim kutusu göstermek için eklendi.- Yalnızca alternatif faturalandırmayla yapılan işlemleri bildirmek için gereken bir yük oluşturmak üzere
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
eklendi.
- Yalnızca alternatif faturalandırma sunma özelliğini işlevsel olarak etkinleştirmek için
- Kullanıcı tercihine göre faturalandırma API'leri güncellendi
- Kullanımdan kaldırıldı olarak işaretlenen AlternativeBillingListener yerine
UserChoiceBillingListener
eklendi. - Kullanımdan kaldırıldı olarak işaretlenen
AlternativeChoiceDetails
yerineUserChoiceDetails
eklendi. - Kullanımdan kaldırıldı olarak işaretlenen
BillingClient.Builder.enableAlternativeBilling()
yerineBillingClient.Builder.enableUserChoiceBilling()
eklendi.
- Kullanımdan kaldırıldı olarak işaretlenen AlternativeBillingListener yerine
- Google Play ülke bilgisini almak için
BillingClient.getBillingConfigAsync()
eklendi.
Google Play Faturalandırma Kitaplığı 6.0.1 Sürümü (22.06.2023)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 6.0.1 sürümü kullanıma sunulmuştur.
Değişiklik özeti
Play Faturalandırma Kitaplığı'nı Android 14 ile uyumlu olacak şekilde güncelleyin.
Google Play Faturalandırma Kitaplığı 6.0 Sürümü (10.05.2023)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 6.0.0 sürümü kullanıma sunulmuştur.
Değişiklik özeti
ProrationMode
yerine yeniReplacementMode
sıralaması eklendi.Geriye dönük uyumluluk nedeniyle
ProrationMode
hâlâ kullanılabilir.PENDING
satın alma işlemleri için sipariş kimliği kaldırıldı.Daha önce, satın alma işlemi beklemede olsa bile sipariş kimliği her zaman oluşturulurdu. 6.0.0 sürümünden itibaren, bekleyen satın alma işlemleri için sipariş kimliği oluşturulmayacak ve bu satın alma işlemleri için sipariş kimliği, satın alma işlemi
PURCHASED
durumuna taşındıktan sonra doldurulacaktır.queryPurchases
velaunchPriceConfirmationFlow
yöntemleri kaldırıldı.Daha önce kullanımdan kaldırılmış olarak işaretlenmiş olan
queryPurchases
velaunchPriceConfirmationFlow
yöntemleri artık Play Faturalandırma Kitaplığı 6.0.0'dan kaldırılmıştır. Geliştiriciler,queryPurchases
yerinequeryPurchasesAsync
kullanmalıdır.launchPriceConfirmationFlow
alternatifleri için Fiyat değişiklikleri bölümünü inceleyin.Yeni ağ hatası yanıt kodu eklendi.
PBL 6.0.0 sürümünden itibaren yeni bir ağ hatası yanıt kodu (
NETWORK_ERROR
) eklendi. Bu kod, ağ bağlantısı sorunu nedeniyle hata oluştuğunda döndürülür. Bu ağ bağlantısı hataları daha önceSERVICE_UNAVAILABLE
olarak raporlanıyordu.SERVICE_UNAVAILABLE
veSERVICE_TIMEOUT
güncellendi.PBL sürüm 6.0.0'dan itibaren işlemedeki zaman aşımından kaynaklanan hatalar, mevcut
SERVICE_TIMEOUT
yerineSERVICE_UNAVAILABLE
olarak döndürülür.Bu davranış, PBL'nin önceki sürümlerinde değişmez.
SERVICE_TIMEOUT
kaldırıldı.PBL 6.0.0 sürümünden itibaren
SERVICE_TIMEOUT
döndürülmez. PBL'nin önceki sürümleri bu kodu döndürmeye devam eder.Ek günlük kaydı eklendi.
Play Faturalandırma Kitaplığı 6 sürümünde, API kullanımı (başarı ve hata gibi) ve hizmet bağlantısı sorunlarıyla ilgili analiz sağlayan ek günlük kayıtları bulunur. Bu bilgiler, Play Faturalandırma Kitaplığı'nın performansını iyileştirmek ve hatalar için daha iyi destek sağlamak için kullanılır.
Google Play Faturalandırma Kitaplığı 5.2.1 Sürümü (22.06.2023)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 5.2.1 sürümü kullanıma sunulmuştur.
Değişiklik özeti
Play Faturalandırma Kitaplığı'nı Android 14 ile uyumlu olacak şekilde güncelleyin.
Google Play Faturalandırma Kitaplığı 5.2 Sürümü (06.04.2023)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 5.2.0 sürümü kullanıma sunuldu.
Değişiklik özeti
- Güney Kore'deki kullanıcılar için cep telefonu/tablette alternatif faturalandırma akışlarını desteklemek üzere sınıflar eklendi:
- Kaynak aboneliğin harici işlem kimliğini belirtmek için
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
yöntemi eklendi. - Güney Kore'deki kullanıcıların alternatif bir faturalandırma seçeneği belirlemesine izin vermek için
BillingClient.Builder.enableAlternativeBilling()
yöntemi eklendi.
Google Play Faturalandırma Kitaplığı 5.1 Sürümü (31.10.2022)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 5.1.0 sürümü kullanıma sunuldu.
Bu sürüm aşağıdaki değişiklikleri içerir.
Değişiklik özeti
- Teklif kimliğini almak için
ProductDetails.SubscriptionOfferDetails.getOfferId()
yöntemi eklendi. - Temel plan kimliğini almak için
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
yöntemi eklendi. targetSdkVersion
, 31 olarak güncellendi.
Google Play Faturalandırma Kitaplığı 5.0 Sürümü (11.05.2022)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 5.0.0 sürümü kullanıma sunulmuştur.
Bu sürüm aşağıdaki değişiklikleri içerir.
Değişiklik özeti
- Tek bir abonelik ürünü için birden fazla teklif oluşturmanıza olanak tanıyan yeni varlıklar da dahil olmak üzere abonelikler için yeni bir modeli kullanıma sunduk. Daha fazla bilgi için taşıma rehberine göz atın.
BillingClient.querySkuDetailsAsync()
yerineBillingClient.queryProductDetailsAsync()
eklendi.- AB kişiselleştirilmiş fiyatlandırma açıklama şartları için
setIsOfferPersonalized()
yöntemi eklendi. Bu yöntemin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için Kişiselleştirilmiş bir fiyat belirtme bölümüne bakın. - Daha önce kullanımdan kaldırılan ve Google Play Faturalandırma Kitaplığı 4.0.0'da kullanıma sunulan queryPurchasesAsync ile değiştirilen
queryPurchases()
kaldırıldı. launchPriceChangeFlow
desteği sonlandırılmış olup gelecekteki bir sürümde kaldırılacaktır. Alternatifler hakkında daha fazla bilgi edinmek için Fiyat değişikliği onay akışını başlatma bölümüne bakın.- Daha önce satın alma akışı örneklenirken kullanılan
setVrPurchaseFlow()
kaldırıldı. Önceki sürümlerde, bu yöntem kullanıcıyı satın alma işlemini Android cihazında tamamlamaya yönlendiriyordu. Bu yöntemi kaldırdığınızda kullanıcılar satın alma işlemini standart satın alma akışı üzerinden tamamlar.
Google Play Faturalandırma Kitaplığı 4.1 sürümü (23.02.2022)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 4.1.0 sürümü kullanıma sunulmuştur.
Bu sürüm aşağıdaki değişiklikleri içerir.
Değişiklik özeti
- Reddedilen abonelik ödemelerini ele almaya yardımcı olması için
BillingClient.showInAppMessages()
eklendi. Reddedilen abonelik ödemeleriyle ilgilenmek için uygulama içi mesajlaşmayı kullanma hakkında daha fazla bilgi edinmek için Reddedilen ödemelerle ilgilenme bölümüne bakın.
Google Play Faturalandırma Kitaplığı 4.0 Sürümü (18.05.2021)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantılarının 4.0.0 sürümü kullanıma sunulmuştur.
Değişiklik özeti
BillingClient.queryPurchases()
yerineBillingClient.queryPurchasesAsync()
eklendi. Bu değişiklik daha sonraki bir sürümde kaldırılacaktır.Yeni abonelik değiştirme modu
IMMEDIATE_AND_CHARGE_FULL_PRICE
eklendi.Play Faturalandırma Kitaplığı'nın bağlantı durumunu almak için
BillingClient.getConnectionState()
yöntemi eklendi.Javadoc ve uygulama, bir yöntemin hangi iş parçacığında çağrılabileceğini ve hangi iş parçacığı sonuçlarının gönderileceğini belirtecek şekilde güncellendi.
Abonelik güncellemelerini başlatmanın yeni yolu olarak
BillingFlowParams.Builder.setSubscriptionUpdateParams()
eklendi. Bu, kaldırılmış olanBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
,BillingFlowParams.Builder#setReplaceSkusProrationMode
,BillingFlowParams.Builder#setOldSku
yerine.Purchase.getQuantity()
vePurchaseHistoryRecord.getQuantity()
eklendi.Purchase#getSkus()
vePurchaseHistoryRecord#getSkus()
eklendi. Bunlar, kaldırılanPurchase#getSku
vePurchaseHistoryRecord#getSku
öğelerinin yerine geçer.BillingFlowParams#getSku
,BillingFlowParams#getSkuDetails
veBillingFlowParams#getSkuType
kaldırıldı.
Google Play Faturalandırma Kitaplığı 3.0.3 Sürümü (12.03.2021)
Google Play Faturalandırma Kitaplığı'nın 3.0.3 sürümü, Kotlin uzantısı ve Unity eklentisi artık kullanılabilir.
Java ve Kotlin Hata düzeltmeleri
endConnection()
çağrıldığında bellek sızıntısını düzeltin.- Tek görev başlatma modunu kullanan uygulamalar tarafından Google Play Faturalandırma Kitaplığı'nın kullanılmasıyla ilgili sorun düzeltildi. Bir uygulama Android başlatıcıdan devam ettirildiğinde ve faturalandırma iletişim kutusu askıya alınmadan önce görünür olduğunda
onPurchasesUpdated()
geri çağırma işlemi tetiklenir.
Unity Hata düzeltmeleri
- Bir uygulama Android başlatıcıdan devam ettirildiğinde ve faturalandırma iletişim kutusu askıya alınmadan önce görünür olduğunda bellek sızıntısını düzeltmek ve satın alma işlemlerini önleyen sorunu çözmek için Java sürüm 3.0.3'e güncelleyin.
Google Play Faturalandırma Kitaplığı 3.0.2 Sürümü (24.11.2020)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantısının 3.0.2 sürümü kullanıma sunuldu.
Hata düzeltmeleri
- Kotlin uzantısında, eş yordamın "Zaten devam ettirildi" hatasıyla başarısız olmasına neden olan bir hata düzeltildi.
- Kotlin uzantısı kotlinx.coroutines kitaplığı 1.4 ve sonraki sürümlerle kullanıldığında çözülmemiş referanslar düzeltildi.
Google Play Faturalandırma Kitaplığı 3.0.1 Sürümü (30.09.2020)
Google Play Faturalandırma Kitaplığı'nın ve Kotlin uzantısının 3.0.1 sürümü kullanıma sunuldu.
Hata düzeltmeleri
- Faturalandırma akışı sırasında uygulamanın durdurulup geri yüklenmesi halinde
PurchasesUpdatedListener
çağrılamamasına neden olan hata düzeltildi.
Google Play Faturalandırma Kitaplığı 3.0 Sürümü (08.06.2020)
Google Play Faturalandırma Kitaplığı'nın 3.0.0 sürümü, Kotlin uzantısı ve Unity eklentisi artık kullanılabilir.
Değişiklik özeti
- Ödüllü SKU desteği kaldırıldı.
ChildDirected
veUnderAgeOfConsent
parametreleri kaldırıldı.- Kullanımdan kaldırılan geliştirici yükü yöntemleri kaldırıldı.
- Desteği sonlandırılan
BillingFlowParams.setAccountId()
veBillingFlowParams.setDeveloperId()
yöntemleri kaldırıldı. - Desteği sonlandırılan
BillingFlowParams.setOldSkus(String oldSku)
veBillingFlowParams.addOldSku(String oldSku)
yöntemleri kaldırıldı. - Boş değer atanabilirliği ile ilgili ek açıklamalar eklendi.
Hata düzeltmeleri
SkuDetails.getIntroductoryPriceCycles()
artıkString
yerineint
değerini döndürüyor.- Hiçbir ekstra parametre ayarlanmamış olsa bile faturalandırma akışının ekstra parametrelere sahip olarak değerlendirilmesine neden olan hata düzeltildi.
Google Play Faturalandırma Kitaplığı 2.2.1 Sürümü (20.05.2020)
Google Play Faturalandırma Kitaplığı'nın 2.2.1 sürümü kullanıma sunuldu.
Hata düzeltmeleri
- Kotlin uzantısının kullandığı Java Play Faturalandırma Kitaplığı'nın varsayılan sürümü güncellendi.
Google Play Faturalandırma Kitaplığı 2.2.0 sürümü ve Unity desteği (23.03.2020)
Google Play Faturalandırma 2.2.0 sürümü, geliştiricilerin satın alma işlemlerinin doğru kullanıcıyla ilişkilendirildiğinden emin olmalarına yardımcı olan işlevler sağlar. Bu değişiklikler, geliştirici yüküne göre özel çözümler oluşturma ihtiyacının yerini aldı. Bu güncelleme kapsamında geliştirici yükü işlevi kullanımdan kaldırılmıştır ve gelecekteki bir sürümde kaldırılacaktır. Önerilen alternatifler dahil olmak üzere daha fazla bilgi için Geliştirici yükü bölümüne bakın.
Unity için Google Play Faturalandırma Kitaplığı 2
Google Play Faturalandırma Kitaplığı 2'nin mevcut Java ve Kotlin sürümlerine ek olarak, Unity ile kullanılmak üzere kitaplığın da bir sürümünü yayınladık. Unity uygulama içi satın alma API'sini kullanan oyun geliştiriciler, tüm Google Play Faturalandırma Kitaplığı 2 özelliklerinden yararlanmak ve sonraki yükseltmeleri Google Play Faturalandırma Kitaplığı'nın gelecek sürümlerine kolayca yükseltmek için hemen yükseltme yapabilirler.
Daha fazla bilgi için Unity ile Google Play Faturalandırma'yı kullanma bölümüne bakın.
Değişiklik özeti
- Java Google Play Faturalandırma Kitaplığı
AcknowledgePurchaseParams
'te kullanımdan kaldırılansetDeveloperPayload()
vegetDeveloperPayload()
yöntemleri.ConsumeParams
'te kullanımdan kaldırılansetDeveloperPayload()
vegetDeveloperPayload()
yöntemleri.BillingFlowParams
'te,setAccountId()
setObfuscatedAccountId()
olarak yeniden adlandırıldı ve 64 karakterlik uzunluk kısıtlaması ve bu alanda Kimlik Bilgilerine (PII) izin vermeyen kısıtlama olduğu belgelendi.setAccountId()
kullanımdan kaldırıldı olarak işaretlendi ve gelecekteki bir kitaplık sürümünde kaldırılacaktır.BillingFlowParams
içinesetObfuscatedAccountId()
ile benzer şekilde çalışansetObfuscatedProfileId()
eklendi. Daha fazla bilgi için Geliştirici yük güncellemeleri ve alternatifleri bölümüne bakın.BillingFlowParams
içinde ayarlanan karartılmış hesap tanımlayıcılarını döndürmek içinPurchase
'egetAccountIdentifiers()
yöntemi eklendi.BillingClient
'daloadRewardedSku()
yöntemi, ödüllü SKU'ların kullanımdan kaldırılmasının bir parçası olarak kullanımdan kaldırılmıştır. Desteğin sonlandırılmasıyla ilgili daha fazla bilgiyi Play Console Yardım Merkezi'nde bulabilirsiniz.
Google Play Faturalandırma Kitaplığı 2.1.0 Sürümü ve Kotlin Uzantısı 2.1.0 Sürümü (10.12.2019)
Google Play Faturalandırma Kitaplığı'nın 2.1.0 sürümü ve yeni Kotlin uzantısı kullanıma sunuldu. Play Faturalandırma Kitaplığı Kotlin uzantısı, daha iyi null güvenlik ve eş yordamlar sunan Kotlin tüketimi için deyimsel API alternatifleri sağlar. Kod örnekleri için Google Play Faturalandırma Kitaplığı'nı kullanma bölümüne bakın.
Bu sürüm aşağıdaki değişiklikleri içerir.
Değişiklik özeti
- Cihazda birden fazla hesap aynı SKU'ya sahip olduğunda durumu netleştirmek için
BillingFlowParams
'tesetOldSku(String oldSku)
kullanımdan kaldırıldı vesetOldSku(String oldSku, String purchaseToken)
ile değiştirildi.
Google Play Faturalandırma Kitaplığı 2.0.3 Sürümü (05.08.2019)
Google Play Faturalandırma Kitaplığı'nın 2.0.3 sürümü kullanıma sunuldu.
Hata düzeltmeleri
querySkuDetailsAsync()
işlevinin başarılı bir sonuç döndürmek yerine bazenDEVELOPER_ERROR
koduyla başarısız olmasına neden olan hata düzeltildi.
Google Play Faturalandırma Kitaplığı 2.0.2 Sürümü (08.07.2019)
Google Play Faturalandırma Kitaplığı'nın 2.0.2 sürümü kullanıma sunuldu. Bu sürüm referans dokümanlarıyla ilgili güncellemeler içerir ve kitaplık işlevlerini değiştirmez.
Google Play Faturalandırma Kitaplığı 2.0.1 Sürümü (06.06.2019)
Google Play Faturalandırma Kitaplığı'nın 2.0.1 sürümü kullanıma sunuldu. Bu sürüm aşağıdaki değişiklikleri içerir.
Hata düzeltmeleri
- Hata ayıklama mesajlarının bazı durumlarda
null
olarak döndürülmesine neden olan hata düzeltildi. - Olası bir bellek sızıntısı sorunu düzeltildi.
Google Play Faturalandırma Kitaplığı 2.0 Sürümü (07.05.2019)
Google Play Faturalandırma Kitaplığı'nın 2.0 sürümü artık kullanılabilir. Bu sürüm aşağıdaki değişiklikleri içerir.
Satın alma işlemleri üç gün içinde onaylanmalıdır
Google Play, uygulamanızın içinden (uygulama içi) veya uygulamanızın dışından (uygulama dışı) ürün satın almayı destekler. Kullanıcının ürününüzü satın aldığı yerden bağımsız olarak Google Play'in tutarlı bir satın alma deneyimi sağlaması için, kullanıcıya yararlanma hakkı verdikten sonra Google Play Faturalandırma Kitaplığı üzerinden yapılan tüm satın alma işlemlerini en kısa sürede onaylamanız gerekir. Bir satın alma işlemini üç gün içinde onaylamazsanız kullanıcı otomatik olarak geri ödeme alır ve Google Play satın alma işlemini iptal eder. Bekleyen işlemler (2.0 sürümünde yeni) için üç günlük aralık, satın alma işlemi PURCHASED
durumuna taşındığında başlar ve PENDING
durumundayken geçerli olmaz.
Abonelikler için yeni satın alma jetonu bulunan tüm satın alma işlemlerini onaylamanız gerekir. Yani ilk satın alma işlemlerinin, plan değişikliklerinin ve yeniden kayıtların onaylanması gerekir ancak sonraki yenilemeleri onaylamanız gerekmez. Bir satın alma işleminin onaylanması gerekip gerekmediğini belirlemek için satın alma işlemindeki onay alanını kontrol edebilirsiniz.
Purchase
nesnesi artık satın alma işleminin onaylanıp onaylanmadığını belirten bir isAcknowledged()
yöntemi içeriyor. Ayrıca Google Play Developer API hem Purchases.products
hem de Purchases.subscriptions
için onay boole değerleri içerir.
Bir satın alma işlemini onaylamadan önce, satın alma işleminin zaten onaylanmış olup olmadığını belirlemek için bu yöntemleri kullandığınızdan emin olun.
Bir satın alma işlemini aşağıdaki yöntemlerden birini kullanarak onaylayabilirsiniz:
- Tüketilebilir ürünler için istemci API'sinde bulunan
consumeAsync()
değerini kullanın. - Tüketilmeyen ürünler için istemci API'sinde bulunan
acknowledgePurchase()
değerini kullanın. - Server API'de yeni bir
acknowledge()
yöntemi de mevcuttur.
BillingFlowParams.setSku() kaldırıldı
Önceden kullanımdan kaldırılmış olan BillingFlowParams#setSku()
yöntemi bu sürümde kaldırılmıştır. Satın alma akışında ürünleri oluşturmadan önce BillingClient.querySkuDetailsAsync()
yöntemini çağırarak elde edilen SkuDetails
nesnesini BillingFlowParams.Builder.setSkuDetails()
öğesine iletmeniz gerekir.
Kod örnekleri için Google Play Faturalandırma Kitaplığı'nı kullanma bölümüne bakın.
Geliştirici yükü desteklenir
Google Play Faturalandırma kitaplığının 2.0 sürümünde, satın alma işlemlerine eklenebilecek rastgele dizeler olan geliştirici yükü desteği eklendi. Bir satın alma işlemine geliştirici yük parametresi ekleyebilirsiniz, ancak bunu yalnızca satın alma onaylandığında veya tüketildiğinde ekleyebilirsiniz. Bu, AIDL'deki geliştirici yükünden farklıdır. Burada yük satın alma akışı başlatılırken belirtilebilir. Satın alma işlemleri artık uygulamanızın dışından başlatılabildiği için bu değişiklik, satın alma işlemlerine her zaman bir yük ekleme fırsatına sahip olmanızı sağlar.
Yeni kitaplıktaki yüke erişmek için Purchase
nesneleri artık getDeveloperPayload()
yöntemini içeriyor.
Tutarlı teklifler
İndirimli bir SKU sunduğunuzda Google Play artık SKU'nun orijinal fiyatını döndürüyor. Böylece kullanıcılara indirim aldıklarını gösterebilirsiniz.
SkuDetails
, orijinal SKU fiyatını almak için iki yeni yöntem içerir:
getOriginalPriceAmountMicros()
: SKU'nun indirimden önceki biçimlendirilmemiş orijinal fiyatını döndürür.getOriginalPrice()
: Orijinal fiyatı ek para birimi biçimlendirmesiyle döndürür.
Beklemede olan işlemler
Google Play Faturalandırma Kitaplığı'nın 2.0 sürümüyle, yararlanma hakkı vermeden önce ek işlem gerektiren satın alma işlemlerini desteklemeniz gerekir. Örneğin, bir kullanıcı uygulama içi ürününüzü fiziksel bir mağazadan nakit kullanarak satın almayı tercih edebilir. Bu, işlemin uygulamanızın dışında tamamlandığı anlamına gelir. Bu senaryoda, yararlanma hakkı için yalnızca kullanıcı işlemi tamamladıktan sonra izin vermelisiniz.
Bekleyen satın alma işlemlerini etkinleştirmek için uygulamanızı başlatma işleminin bir parçası olarak enablePendingPurchases()
numaralı telefonu arayın.
Satın alma durumunun PURCHASED
veya PENDING
olduğunu belirlemek için Purchase.getPurchaseState()
özelliğini kullanın. Yararlanma hakkı yalnızca eyalet PURCHASED
olduğunda vermeniz gerektiğini unutmayın. Purchase
durum güncellemelerini kontrol etmek için şunları yapın:
- Uygulamanızı başlatırken, kullanıcıyla ilişkilendirilmiş ve tüketilmemiş ürünlerin listesini almak için
BillingClient.queryPurchases()
numaralı telefonu arayın. - Döndürülen her bir
Purchase
nesnesindePurchase.getPurchaseState()
yöntemini çağırın. Purchase
nesnelerinde yapılan değişikliklere yanıt vermek içinonPurchasesUpdated()
yöntemini uygulayın.
Ayrıca, Google Play Geliştirici API'si Purchases.products
için bir PENDING
durumu içerir.
Bekleyen işlemler abonelikler için desteklenmez.
Bu sürümde yeni bir gerçek zamanlı geliştirici bildirim türü de
OneTimeProductNotification
kullanıma sunuluyor. Bu bildirim türü, değeri ONE_TIME_PRODUCT_PURCHASED
veya ONE_TIME_PRODUCT_CANCELED
olan tek bir mesaj içerir. Bu bildirim türü yalnızca nakit ödeme gibi geciken ödeme şekilleriyle ilişkili satın alma işlemleri için gönderilir.
Bekleyen satın alma işlemlerini onaylarken yalnızca satın alma durumu PENDING
değil, PURCHASED
olduğunda onaylayın.
API değişiklikleri
Google Play Faturalandırma kitaplığının 2.0 sürümü, yeni özellikleri desteklemek ve mevcut işlevleri netleştirmek için çeşitli API değişiklikleri içerir.
eş zamansız tüketim
consumeAsync()
artık purchaseToken
yerine ConsumeParams
nesnesi alıyor. ConsumeParams
, purchaseToken
ve isteğe bağlı bir geliştirici yükünü içerir.
consumeAsync()
uygulamasının önceki sürümü bu sürümden kaldırıldı.
queryPurchaseHistoryAsync
Karışıklığı en aza indirmek için queryPurchaseHistoryAsync()
artık Purchase
nesnesi yerine PurchaseHistoryRecord
nesnesi döndürüyor. PurchaseHistoryRecord
nesnesi Purchase
nesnesiyle aynıdır ancak yalnızca queryPurchaseHistoryAsync()
tarafından döndürülen değerleri yansıtır ve autoRenewing
, orderId
ve packageName
alanlarını içermez. Döndürülen verilerde hiçbir şeyin değişmediğini unutmayın. queryPurchaseHistoryAsync()
, öncekiyle aynı verileri döndürür.
BillingResult dönüş değerleri
Daha önce BillingResponse
tam sayı değeri döndüren API'ler artık BillingResult
nesnesi döndürüyor. BillingResult
, hataları teşhis etmek için kullanabileceğiniz bir hata ayıklama dizesinin yanı sıra BillingResponse
tam sayısını içerir. Hata ayıklama dizesi en-US yerel ayarı kullanır ve son kullanıcılara gösterilmesi amaçlanmamıştır.
Hata düzeltmeleri
SkuDetails.getIntroductoryPriceAmountMicros()
artıkString
yerinelong
döndürüyor.
Google Play Faturalandırma Kitaplığı 1.2.2 Sürümü (07.03.2019)
Google Play Faturalandırma Kitaplığı'nın 1.2.2 sürümü kullanıma sunuldu. Bu sürüm aşağıdaki değişiklikleri içerir.
Hata düzeltmeleri
- 1.2.1 sürümünde ortaya çıkan bir ileti dizisi sorunu düzeltildi. Arka plandaki çağrılar artık ana ileti dizisini engellemez.
Diğer değişiklikler
- Yine de ana iş parçacığının kullanılması önerilir ancak artık Google Play Faturalandırma Kitaplığı'nı bir arka plan iş parçacığından örnekleyebilirsiniz.
- Örnekleme, ANR'lere neden olma olasılığını azaltmak için arka plan iş parçacığına tamamen taşınmıştır.
Play Faturalandırma Kitaplığı 1.2.1 Sürümü (04.03.2019)
Google Play Faturalandırma Kitaplığı'nın 1.2.1 sürümü kullanıma sunulmuştur. Bu sürüm aşağıdaki değişiklikleri içerir.
Önemli değişiklikler
- Ödüllü ürünler için destek eklendi. Para kazanma seçenekleri hakkında daha fazla bilgi için Ödüllü ürüne özgü özellikler ekleme bölümüne bakın.
Diğer değişiklikler
- Testi kolaylaştırmak amacıyla
PurchasesResult
veSkuDetailsResult
için herkese açık oluşturucular eklendi. SkuDetails
nesnelerigetOriginalJson()
adlı yeni bir yöntemi kullanabilir.- Tüm AIDL hizmet çağrıları artık arka plandaki ileti dizileri tarafından işlenmektedir.
Hata düzeltmeleri
- Boş geri çağırma işleyicileri artık herkese açık API'lere iletilmez.
Google Play Faturalandırma Kitaplığı 1.2 Sürümü (18.10.2018)
Google Play Faturalandırma Kitaplığı'nın 1.2 sürümü kullanıma sunuldu. Bu sürüm aşağıdaki değişiklikleri içerir.
Değişiklik özeti
- Google Play Faturalandırma Kitaplığı artık Android Yazılım Geliştirme Kiti Lisans Sözleşmesi kapsamında lisanslanmıştır.
- Kullanıcıların abonelik fiyatıyla ilgili beklemedeki bir değişikliği incelemelerini isteyen
launchPriceChangeConfirmationFlow
API eklendi. - Bir kullanıcının aboneliğini yükseltirken veya düşürürken yeni bir bölüşme modu (
DEFERRED
) için destek eklendi. BillingFlowParams
sınıfında,setSku()
öğesisetSkuDetails()
ile değiştirildi.- Küçük hata düzeltmeleri ve kod optimizasyonları.
Fiyat değişikliği onayı
Artık Google Play Console'da bir aboneliğin fiyatını değiştirebilir ve uygulamanıza girdiklerinde kullanıcılardan yeni fiyatı inceleyip kabul etmelerini isteyebilirsiniz.
Bu API'yi kullanmak için abonelik ürününün skuDetails
kullanarak bir PriceChangeFlowParams
nesnesi oluşturun ve launchPriceChangeConfirmationFlow()
çağrısı yapın. Fiyat değişikliği onay akışı tamamlandığında sonucu işlemek için aşağıdaki kod snippet'inde gösterildiği gibi PriceChangeConfirmationListener
uygulayın:
Kotlin
val priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build() billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, object : PriceChangeConfirmationListener() { override fun onPriceChangeConfirmationResult(responseCode: Int) { // Handle the result. } })
Java
PriceChangeFlowParams priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build(); billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, new PriceChangeConfirmationListener() { @Override public void onPriceChangeConfirmationResult(int responseCode) { // Handle the result. } });
Fiyat değişikliği onay akışında, yeni fiyat bilgilerini içeren ve kullanıcılardan yeni fiyatı kabul etmelerini isteyen bir iletişim kutusu gösterilir. Bu akış BillingClient.BillingResponse
türünde bir yanıt kodu döndürür.
Yeni oranlama modu
Bir kullanıcının aboneliğini yükseltirken veya düşürürken yeni bir bölüşme modu (DEFERRED
) kullanabilirsiniz. Bu mod, kullanıcının aboneliğini bir sonraki yenilendiğinde günceller. Bu orantılı modun nasıl ayarlanacağı hakkında daha fazla bilgi edinmek için Bölüştürme modunu ayarlama bölümüne bakın.
SKU ayrıntılarını ayarlamanın yeni yöntemi
BillingFlowParams
sınıfında setSku()
yöntemi kullanımdan kaldırılmıştır.
Bu değişiklik, Google Play Faturalandırma akışının optimize edilmesini sağlar.
Uygulama içi faturalandırma istemcinizde yeni bir BillingFlowParams
örneği oluştururken, aşağıdaki kod snippet'inde gösterildiği gibi doğrudan setSkuDetails()
kullanarak JSON nesnesiyle çalışmanızı öneririz:
BillingFlowParams
Oluşturucu sınıfında, setSku()
yöntemi kullanımdan kaldırılmıştır. Bunun yerine, aşağıdaki kod snippet'inde gösterildiği gibi setSkuDetails()
yöntemini kullanın. setSkuDetails()
nesnesine iletilen nesne querySkuDetailsAsync()
yönteminden gelir.
Kotlin
private lateinit var mBillingClient: BillingClient private val mSkuDetailsMap = HashMap<String, SkuDetails>() private fun querySkuDetails() { val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder() mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build() ) { responseCode, skuDetailsList -> if (responseCode == 0) { for (skuDetails in skuDetailsList) { mSkuDetailsMap[skuDetails.sku] = skuDetails } } } } private fun startPurchase(skuId: String) { val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap[skuId]) .build() }
Java
private BillingClient mBillingClient; private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>(); private void querySkuDetails() { SkuDetailsParams.Builder skuDetailsParamsBuilder = SkuDetailsParams.newBuilder(); mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(), new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) { if (responseCode == 0) { for (SkuDetails skuDetails : skuDetailsList) { mSkuDetailsMap.put(skuDetails.getSku(), skuDetails); } } } }); } private void startPurchase(String skuId) { BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap.get(skuId)) .build(); }
Play Faturalandırma Kitaplığı 1.1 Sürümü (07.05.2018)
Google Play Faturalandırma Kitaplığı'nın 1.1 sürümü kullanıma sunuldu. Bu sürüm aşağıdaki değişiklikleri içerir.
Değişiklik özeti
- Mevcut bir aboneliği yeni sürüme geçirirken/eski sürüme geçirirken
BillingFlowParams
'da bölüştürme modunu belirtme desteği eklendi. BillingFlowParams
içindekireplaceSkusProration
boole işareti artık desteklenmiyor. Bunun yerinereplaceSkusProrationMode
politikasını kullanın.launchBillingFlow()
artık başarısız yanıtlar için geri çağırmayı tetikliyor.
Davranış değişiklikleri
Google Play Faturalandırma kitaplığının 1.1 sürümü, aşağıdaki davranış değişikliklerini içerir.
Geliştiriciler replaceSkusProrationMode
aracını BillingFlowParams
sınıfında ayarlayabilirler
ProrationMode
, bir kullanıcının aboneliğini yükseltirken veya eski sürüme geçirirken gerçekleştirilen orantılı dağıtım türüyle ilgili daha fazla ayrıntı sağlar.
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play şu anda aşağıdaki bölüştürme modlarını desteklemektedir:
IMMEDIATE_WITH_TIME_PRORATION |
Değişim hemen geçerli olur ve yeni geçerlilik süresi orantılı olarak hesaplanır ve kullanıcıdan ödeme alınır. Bu, şu anda varsayılan davranıştır. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
Değişim hemen geçerli olur ve faturalandırma döngüsü aynı kalır. Kalan süre için ücret alınır.
Not: Bu seçenek yalnızca abonelik yükseltmesi için kullanılabilir. |
IMMEDIATE_WITHOUT_PRORATION |
Değişim hemen geçerli olur ve bir sonraki yinelemede yeni fiyat üzerinden ücret alınır. Faturalandırma döngüsü aynı kalır. |
replaceSkusProration
artık BillingFlowParams
sınıfında desteklenmiyor
Geliştiriciler eskiden abonelik yükseltme isteği için orantılı bir ücret almak üzere bir boole işareti ayarlayabiliyordu. Daha ayrıntılı oranlama talimatı içeren ProrationMode
özelliğini desteklediğimiz için bu boole işareti artık desteklenmemektedir.
launchBillingFlow()
artık başarısız yanıtlar için bir geri çağırmayı tetikliyor
Faturalandırma Kitaplığı her zaman PurhcasesUpdatedListener
geri çağırmasını tetikler ve eşzamansız olarak BillingResponse
döndürür. BillingResponse
'in eşzamanlı döndürülen değeri de korunur.
Hata düzeltmeleri
- Hizmetin bağlantısı kesildiğinde eş zamansız yöntemlerde erkenden düzgün şekilde çıkış yapar.
Builder
param nesneleri artık derlenmiş nesneleri değiştirmemektedir.- Sorun 68087141:
launchBillingFlow()
artık başarısız yanıtlar için geri çağırmayı tetikliyor.
Google Play Faturalandırma Kitaplığı 1.0 Sürümü (19.09.2017, Duyuru)
Google Play Faturalandırma Kitaplığı'nın 1.0 sürümü kullanıma sunuldu. Bu sürüm aşağıdaki değişiklikleri içerir.
Önemli değişiklikler
- Kitaplığın manifest dosyasına yerleştirilmiş faturalandırma izni. Artık Android manifestinin içine
com.android.vending.BILLING
izninin eklenmesine gerek yoktur. BillingClient.Builder
sınıfına yeni derleyici eklendi.- SKU'ları sorgulama yöntemlerinde kullanılacak
SkuDetailsParams
sınıfı için oluşturucu kalıbı kullanıma sunuldu. - Tutarlılık sağlamak için (aynı döndürülen bağımsız değişken adları ve sırası) birkaç API yöntemi güncellendi.
Davranış değişiklikleri
Google Play Faturalandırma kitaplığının 1.0 sürümü, aşağıdaki davranış değişikliklerini içerir.
BillingClient.Builder sınıfı
BillingClient.Builder
artık yeniBuilder kalıbıyla başlatılıyor:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
LaunchBillingFlow yöntemi artık BillingFlowParams sınıfı kullanılarak çağrılıyor
launchBillingFlow()
yöntemi, bir satın alma veya abonelik için faturalandırma akışını başlatmak amacıyla isteğe özel parametrelerle başlatılan bir BillingFlowParams
örneği alır:
Kotlin
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
Java
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
Mevcut ürünleri sorgulamanın yeni yolu
queryPurchaseHistoryAsync()
ve querySkuDetailsAsync()
yöntemleri için bağımsız değişkenler bir Oluşturucu kalıbına sarmalandı:
Kotlin
val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList) .setType(itemType) billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() { ... })
Java
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList) .setType(itemType); billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})
Sonuç, size kolaylık sağlamak ve API'mizde tutarlı olması için önceki sarmalayıcı sınıfı yerine artık sonuç kodu ve SkuDetails
nesnelerinin bir listesi aracılığıyla döndürülür:
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
onConsumeResponse()
yönteminde parametre sırası değiştirildi
ConsumeResponseListener
arayüzündeki onConsumeResponse
bağımsız değişkenlerinin sırası, API'mizde tutarlı olacak şekilde değiştirildi:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Sarmalanmamış PurchaseResult nesnesi
API genelinde tutarlı olması için PurchaseResult
paketi açıldı:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
Hata düzeltmeleri
- PURCHASES_UPDATED paketinde yanıt kodu yok
- Cihaz rotasyonu sırasında ProxyBillingActivity ve PurchasesUpdatedListener sorunlarını düzeltme
Geliştirici Önizleme 1 Sürümü (12.06.2017, Duyuru)
Faturalandırma söz konusu olduğunda geliştirme sürecini basitleştirmeyi amaçlayan geliştirici önizlemesi kullanıma sunuldu. Bu önizleme sayesinde geliştiriciler, çabalarını uygulama mimarisi ve gezinme yapısı gibi Android uygulamasına özgü mantığı uygulamaya odaklayabilir.
Kitaplık, Android uygulamalarınızı Google Play Billing API ile entegre ederken kullanabileceğiniz birçok kullanışlı sınıf ve özellik içerir. Kitaplık ayrıca Android Arayüz Tanımlama Dili (AIDL) hizmetinin üzerine bir soyutlama katmanı sağlayarak geliştiricilerin uygulama ile Google Play Faturalandırma API'si arasındaki arayüzü tanımlamasını kolaylaştırır.