Google Play Faturalandırma Kitaplığı sürüm notları

Bu belgede, Google Play Faturalandırma Kitaplığı'nın sürüm notları yer almaktadır.

Google Play Faturalandırma Kitaplığı 8.1.0 sürümü (06.11.2025)

Google Play Faturalandırma Kitaplığı'nın 8.1.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

  • Askıya alınan abonelikler

    Abonelikler için sorgu oluştururken askıya alınmış abonelikleri dahil etmek üzere BillingClient.queryPurchasesAsync() yöntemine yeni bir parametre eklendi. Askıya alınmış abonelikler kullanıcıya atfedilmeye devam eder ancak kullanıcı aboneliği duraklattığı veya yenileme ödeme yöntemi reddedildiği için etkin değildir.

    Dinleyicide döndürülen Purchase nesnesi, askıya alınmış tüm abonelikler için isSuspended() = true değerini döndürür. Bu durumda, satın alınan aboneliğe erişim izni vermemeli ve bunun yerine kullanıcıyı, ödeme yöntemlerini yönetebileceği veya aboneliğini yeniden etkinleştirmek için duraklatma durumunu değiştirebileceği abonelik merkezine yönlendirmelisiniz.

  • Aboneliklerle ilgili güncellemeler:

    • BillingFlowParams.ProductDetailsParams nesnesi artık ürün düzeyinde değiştirme bilgileri belirtebileceğiniz setSubscriptionProductReplacementParams() yöntemine sahip.

    • SubscriptionProductReplacementParams nesnesinin iki ayarlayıcı yöntemi vardır:

      • setOldProductId: Mevcut ProductDetails içindeki ürünle değiştirilmesi gereken eski ürün.
      • setReplacementMode: Bu, öğe düzeyinde değiştirme modudur. Modlar temelde SubscriptionUpdateParams ile aynıdır ancak değer eşlemesi güncellenmiştir. Bir öğenin mevcut ödeme planını değiştirmeden tutmanıza olanak tanıyan yeni bir değişim modu KEEP_EXISTING kullanıma sunuldu.
    • SubscriptionUpdateParams setSubscriptionReplacementMode kullanımdan kaldırılacak. Bunun yerine SubscriptionProductReplacementParams.setReplacementMode politikasını kullanmalısınız.

  • minSdkVersion, 23 olarak güncellendi.

  • Tek seferlik ürünler için ön sipariş API'leri etkinleştirildi.

    Ön sipariş ayrıntılarını alan ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails() API artık kullanılabilir.

  • Google Play Faturalandırma Kitaplığı artık Kotlin 2.2.0 sürümünü destekliyor.

Google Play Faturalandırma Kitaplığı 8.0.0 sürümü (30.06.2025)

Google Play Faturalandırma Kitaplığı'nın 8.0.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

  • Uygulama içi öğeler artık tek seferlik ürünler olarak adlandırılacak.

  • Tek seferlik ürünler için birden fazla satın alma seçeneği ve fırsat.

    Artık tek seferlik ürünleriniz için birden fazla satın alma seçeneği ve fırsat sunabilirsiniz. Bu sayede ürünlerinizi satma konusunda esneklik elde eder ve ürünleri yönetirken yaşanan karmaşayı azaltırsınız.

  • queryProductDetailsAsync() yöntemi iyileştirildi.

    PBL 8.0.0'dan önce queryProductDetailsAsync() yöntemi, getirilemeyen ürünleri döndürmüyordu. Bunun nedeni, ürünün bulunmaması veya kullanıcıya sunulan teklif olmaması gibi durumlar olabilir. PBL 8.0.0 ile birlikte, getirilmeyen ürünler, getirilmeyen ürünler hakkında bilgi sağlayan yeni bir ürün düzeyinde durum koduyla döndürülür. ProductDetailsResponseListener.onProductDetailsResponse() imzasında değişiklik yapıldığını ve bu nedenle uygulamanızda değişiklik yapmanız gerektiğini unutmayın. Daha fazla bilgi için sonucu işleme bölümünü inceleyin.

  • Otomatik hizmet yeniden bağlantısı.

    Yeni BillingClient.Builder.enableAutoServiceReconnection() oluşturucu parametresi, geliştiricilerin otomatik hizmet yeniden bağlantısını etkinleştirmesine olanak tanır. Bu parametre, Play Faturalandırma Hizmeti'ne yeniden bağlantıları otomatik olarak işleyerek bağlantı yönetimini basitleştirir ve hizmet bağlantısı kesildiğinde startConnection()'yi manuel olarak çağırma ihtiyacını ortadan kaldırır. Daha fazla bilgi için Bağlantıyı Otomatik Olarak Yeniden Kurma başlıklı makaleyi inceleyin.

  • launchBillingFlow() yöntemi için alt yanıt kodları.

    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. PBL 8.0.0 ile, kullanıcının fonları satın almaya çalıştığı öğenin fiyatından düşük olduğunda PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS alt kodu döndürülür.

  • queryPurchaseHistory() yöntemi kaldırıldı.

    Daha önce desteği sonlandırılan queryPurchaseHistory() yöntemi kaldırıldı. Hangi alternatif API'lerin kullanılabileceği hakkında ayrıntılı bilgi için Sorgu Satın Alma Geçmişi başlıklı makaleye bakın.

  • querySkuDetailsAsync() yöntemi kaldırıldı.

    Daha önce desteği sonlandırılan olarak işaretlenen querySkuDetailsAsync() yöntemi kaldırıldı. Bunun yerine queryProductDetailsAsync işlevini kullanmanız gerekir.

  • BillingClient.Builder.enablePendingPurchases() yöntemi kaldırıldı.

    Daha önce kullanımdan kaldırılmış olarak işaretlenen, parametre içermeyen enablePendingPurchases() yöntemi artık kaldırıldı. Bunun yerine enablePendingPurchases(PendingPurchaseParams params) politikasını kullanmalısınız. Kullanımdan kaldırılan enablePendingPurchases() işlevinin enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) ile aynı olduğunu unutmayın.

  • skuType alanını alan aşırı yüklenmiş queryPurchasesAsync() yöntemi kaldırıldı.

    Daha önce desteği sonlandırılan queryPurchasesAsync(String skuType, PurchasesResponseListener listener) yöntemi kaldırıldı. Alternatif olarak, queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener) kullanın.

Google Play Faturalandırma Kitaplığı 7.1.1 sürümü (03.10.2024)

Google Play Faturalandırma Kitaplığı'nın 7.1.1 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Hata düzeltmeleri

Google Play Faturalandırma Kitaplığı 7.1.0 sürümü (19.09.2024)

Google Play Faturalandırma Kitaplığı'nın 7.1.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

  • Bağlantı durumu ve yönetimiyle ilgili olarak iş parçacığı güvenliği iyileştirildi.
  • Play Faturalandırma Kitaplığı 7.1.1'de tamamen kullanıma sunulan [BillingResult][billing-result] yanıt kodlarının test edilmesi için kısmi değişiklikler yapıldı. Bu özelliği kullanarak entegrasyonunuzu test etmek için Play Faturalandırma Kitaplığı 7.1.1'e yükseltmeniz gerekir. Yalnızca [billing overrides testing enabled][enable-billing-overrides-testing] özelliği etkin olan uygulamaları etkileyen ve normal kullanımı etkilemeyen bir hata var. Daha fazla bilgi için Yanıt BillingResult kodlarını test etme başlıklı makaleyi inceleyin. [billing-result]: /reference/com/android/billingclient/api/BillingResult [enable-billing-overrides-testing]: /google/play/billing/test-response-codes#enable-billing-overrides-testing

Google Play Faturalandırma Kitaplığı 7.0.0 sürümü (14.05.2024)

Google Play Faturalandırma Kitaplığı'nın 7.0.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

Google Play Faturalandırma Kitaplığı 6.2.1 sürümü (16.04.2024)

Google Play Faturalandırma Kitaplığı'nın 6.2.1 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

Google Play Faturalandırma Kitaplığı 6.2.0 sürümü (06.03.2024)

Google Play Faturalandırma Kitaplığı'nın 6.2.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

Google Play Faturalandırma Kitaplığı 6.1.0 sürümü (14.11.2023)

Google Play Faturalandırma Kitaplığı'nın 6.1.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

Google Play Faturalandırma Kitaplığı 6.0.1 sürümü (22.06.2023)

Google Play Faturalandırma Kitaplığı'nın 6.0.1 sürümü ve Kotlin uzantıları kullanıma sunuldu.

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 6.0.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

  • ReplacementMode enum yerine kullanılacak yeni ProrationMode eklendi.

    ProrationMode, geriye dönük uyumluluk nedeniyle 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şturuluyordu. 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şlemlerinde sipariş kimliği, satın alma işlemi PURCHASED durumuna taşındıktan sonra doldurulacaktır.

  • queryPurchases ve launchPriceConfirmationFlow yöntemleri kaldırıldı.

    Daha önce desteği sonlandırılan olarak işaretlenen queryPurchases ve launchPriceConfirmationFlow yöntemleri, Play Faturalandırma Kitaplığı 6.0.0'da kaldırıldı. Geliştiriciler, queryPurchases yerine queryPurchasesAsync kullanmalıdır. launchPriceConfirmationFlow alternatifleri için Fiyat değişiklikleri bölümüne bakın.

  • Yeni ağ hatası yanıt kodu eklendi.

    PBL sürümü 6.0.0'dan itibaren yeni bir ağ hatası yanıt kodu, NETWORK_ERROR, eklendi. Bu kod, ağ bağlantısı sorunu nedeniyle bir hata oluştuğunda döndürülür. Bu ağ bağlantısı hataları daha önce SERVICE_UNAVAILABLE olarak bildiriliyordu.

  • SERVICE_UNAVAILABLE ve SERVICE_TIMEOUT güncellendi.

    PBL 6.0.0 sürümünden itibaren, işlemede zaman aşımı nedeniyle oluşan hatalar mevcut SERVICE_TIMEOUT yerine SERVICE_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 artık döndürülmeyecek. PBL'nin önceki sürümleri bu kodu döndürmeye devam edecektir.

  • Ek günlük kaydı eklendi.

    Play Faturalandırma Kitaplığı 6 sürümü, API kullanımı (ör. başarı ve başarısızlık) ve hizmet bağlantısı sorunları hakkında bilgi sağlayan ek günlük kaydı içerir. Bu bilgiler, Play Faturalandırma Kitaplığı'nın performansını artırmak ve hatalar için daha iyi destek sağlamak amacıyla kullanılır.

Google Play Faturalandırma Kitaplığı 5.2.1 sürümü (22.06.2023)

Google Play Faturalandırma Kitaplığı'nın 5.2.1 sürümü ve Kotlin uzantıları kullanıma sunuldu.

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 5.2.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

Google Play Faturalandırma Kitaplığı 5.1 sürümü (31.10.2022)

Google Play Faturalandırma Kitaplığı'nın 5.1.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Bu sürüm aşağıdaki değişiklikleri içerir.

Değişiklik özeti

Google Play Faturalandırma Kitaplığı 5.0 sürümü (11.05.2022)

Google Play Faturalandırma Kitaplığı'nın 5.0.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Bu sürüm aşağıdaki değişiklikleri içerir.

Değişiklik özeti

  • Abonelikler için yeni bir model kullanıma sunuldu. Bu model, tek bir abonelik ürünü için birden fazla teklif oluşturmanıza olanak tanıyan yeni öğeler içerir. Daha fazla bilgi için taşıma kılavuzuna bakın.
  • BillingClient.querySkuDetailsAsync() yerine BillingClient.queryProductDetailsAsync() eklendi.
  • AB'deki kişiselleştirilmiş fiyatlandırma ile ilgili setIsOfferPersonalized() yöntemi eklendi. Bu yöntemi kullanma hakkında daha fazla bilgi edinmek için Kişiselleştirilmiş fiyat belirtme başlıklı makaleyi inceleyin.
  • 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 artık kullanılmıyor 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ışı başlatma başlıklı makaleyi inceleyin.
  • Satın alma akışı oluşturulurken daha önce kullanılan setVrPurchaseFlow() kaldırıldı. Önceki sürümlerde bu yöntem, kullanıcıyı satın alma işlemini Android destekli 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 4.1.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Bu sürüm aşağıdaki değişiklikleri içerir.

Değişiklik özeti

  • Abonelik ödemelerinin reddedilmesiyle ilgili sorunları çözmeye yardımcı olmak için BillingClient.showInAppMessages() eklendi. Abonelik ödemelerinin reddedilmesiyle ilgili sorunları gidermek için uygulama içi mesajlaşmayı kullanma hakkında daha fazla bilgi edinmek istiyorsanız Ödeme reddedilmelerini ele alma başlıklı makaleyi inceleyin.

Google Play Faturalandırma Kitaplığı 4.0 sürümü (18.05.2021)

Google Play Faturalandırma Kitaplığı'nın 4.0.0 sürümü ve Kotlin uzantıları kullanıma sunuldu.

Değişiklik özeti

Google Play Faturalandırma Kitaplığı 3.0.3 sürümü (12.03.2021)

Google Play Faturalandırma Kitaplığı'nın, Kotlin uzantısının ve Unity eklentisinin 3.0.3 sürümü kullanıma sunuldu.

Java ve Kotlin'de hata düzeltmeleri

  • endConnection() çağrıldığında bellek sızıntısı düzeltildi.
  • Google Play Faturalandırma Kitaplığı'nın tek görev başlatma modunu kullanan uygulamalar tarafından kullanılmasıyla ilgili sorunu düzeltir. 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 durumdayken onPurchasesUpdated() geri çağırma işlemi tetiklenir.

Unity hata düzeltmeleri

  • Bellek sızıntısını düzeltmek ve bir uygulama Android başlatıcıdan devam ettirildiğinde ve askıya alınmadan önce faturalandırma iletişim kutusu görünür durumdayken satın alma işlemlerini engelleyen sorunu çözmek için Java 3.0.3 sürümüne güncelleyin.

Google Play Faturalandırma Kitaplığı 3.0.2 sürümü (24.11.2020)

Google Play Faturalandırma Kitaplığı'nın 3.0.2 sürümü ve Kotlin uzantısı kullanıma sunuldu.

Hata düzeltmeleri

  • Kotlin uzantısında, "Already resumed" (Zaten devam ettirildi) hatasıyla birlikte eşzamanlı rutinin başarısız olmasına neden olan hata düzeltildi.
  • Kotlin uzantısı, kotlinx.coroutines kitaplığının 1.4 veya sonraki sürümleriyle kullanıldığında çözümlenmemiş referanslar sorunu düzeltildi.

Google Play Faturalandırma Kitaplığı 3.0.1 sürümü (30.09.2020)

Google Play Faturalandırma Kitaplığı'nın 3.0.1 sürümü ve Kotlin uzantısı kullanıma sunuldu.

Hata düzeltmeleri

  • Faturalandırma akışı sırasında uygulama kapatılıp geri yüklendiğinde PurchasesUpdatedListener işlevinin satın alma sonucuyla birlikte çağrılmamasına neden olan hata düzeltildi.

Google Play Faturalandırma Kitaplığı 3.0 Sürümü (2020-06-08)

Google Play Faturalandırma Kitaplığı, Kotlin uzantısı ve Unity eklentisinin 3.0.0 sürümü kullanıma sunuldu.

Değişiklik özeti

  • Ödüllü SKU desteği kaldırıldı.
  • ChildDirected ve UnderAgeOfConsent parametreleri kaldırıldı.
  • Desteği sonlandırılan geliştirici yükü yöntemleri kaldırıldı.
  • Desteği sonlandırılan BillingFlowParams.setAccountId() ve BillingFlowParams.setDeveloperId() yöntemleri kaldırıldı.
  • Desteği sonlandırılan BillingFlowParams.setOldSkus(String oldSku) ve BillingFlowParams.addOldSku(String oldSku) yöntemleri kaldırıldı.
  • Nullability ek açıklamaları eklendi.

Hata düzeltmeleri

  • SkuDetails.getIntroductoryPriceCycles() artık String yerine int döndürüyor.
  • Ek parametre ayarlanmamış olsa bile faturalandırma akışının ek parametreler içeriyormuş gibi 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 bağlı olduğu 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'nın 2.2.0 sürümü, geliştiricilerin satın alma işlemlerinin doğru kullanıcıya atfedilmesini sağlamasına yardımcı olan işlevler sunar. Bu değişiklikler, geliştirici yüküne dayalı özel çözümler oluşturma ihtiyacını ortadan kaldırır. Bu güncelleme kapsamında geliştirici yükü işlevinin desteği sonlandırıldı ve bu işlev gelecekteki bir sürümde kaldırılacak. Önerilen alternatifler de dahil olmak üzere daha fazla bilgi için Geliştirici yükü başlıklı makaleyi inceleyin.

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, kitaplığın Unity ile kullanılacak bir sürümünü yayınladık. Unity uygulama içi satın alma API'sini kullanan oyun geliştiriciler, Google Play Faturalandırma Kitaplığı 2'nin tüm özelliklerinden yararlanmak ve Google Play Faturalandırma Kitaplığı'nın gelecekteki sürümlerine yükseltme işlemlerini kolaylaştırmak için hemen yükseltme yapabilir.

Daha fazla bilgi edinmek için Google Play Faturalandırma'yı Unity ile kullanma başlıklı makaleyi inceleyin.

Değişiklik özeti

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 Billing Library Kotlin uzantısı, Kotlin tüketimi için deyimsel API alternatifleri sunar. Bu alternatifler, daha iyi null güvenliği ve coroutine'ler içerir. Kod örnekleri için Google Play Faturalandırma Kitaplığı'nı Kullanma başlıklı makaleyi inceleyin.

Bu sürüm aşağıdaki değişiklikleri içerir.

Değişiklik özeti

  • BillingFlowParams içinde, cihazdaki birden fazla hesap aynı SKU'ya sahip olduğunda belirsizliği gidermek için setOldSku(String oldSku) kullanımdan kaldırıldı ve setOldSku(String oldSku, String purchaseToken) ile değiştirildi.

Google Play Faturalandırma Kitaplığı 2.0.3 Sürümü (2019-08-05)

Google Play Faturalandırma Kitaplığı'nın 2.0.3 sürümü kullanıma sunuldu.

Hata düzeltmeleri

  • querySkuDetailsAsync()'ın başarılı bir sonuç döndürmek yerine zaman zaman DEVELOPER_ERROR koduyla başarısız olmasına neden olan hata düzeltildi.

Google Play Faturalandırma Kitaplığı 2.0.2 Sürümü (2019-07-08)

Google Play Faturalandırma Kitaplığı'nın 2.0.2 sürümü kullanıma sunuldu. Bu sürümde referans belgelerle ilgili güncellemeler yer alır ve kitaplık işlevselliğinde değişiklik yapılmaz.

Google Play Faturalandırma Kitaplığı 2.0.1 Sürümü (2019-06-06)

Google Play Faturalandırma Kitaplığı'nın 2.0.1 sürümü kullanıma sunuldu. Bu sürümde aşağıdaki değişiklikler yapıldı.

Hata düzeltmeleri

  • Bazı durumlarda hata ayıklama mesajlarının 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ü (2019-05-07)

Google Play Faturalandırma Kitaplığı'nın 2.0 sürümü kullanıma sunuldu. Bu sürümde aşağıdaki değişiklikler yapıldı.

Satın alma işlemleri üç gün içinde onaylanmalıdır.

Google Play, ürünlerin uygulamanızın içinden (uygulama içi) veya dışından (uygulama dışı) satın alınmasını destekler. Google Play'in, kullanıcının ürününüzü nereden satın aldığına bakılmaksızın tutarlı bir satın alma deneyimi sağlaması için, Google Play Faturalandırma Kitaplığı üzerinden alınan tüm satın alma işlemlerini, kullanıcıya hak verdikten sonra mümkün olan en kısa sürede onaylamanız gerekir. Satın alma işlemini üç gün içinde onaylamazsanız kullanıcıya otomatik olarak geri ödeme yapılır ve Google Play satın alma işlemini iptal eder. Beklemede olan işlemler (2.0 sürümünde yeni) için üç günlük süre, satın alma işlemi PURCHASED durumuna geçtiğinde başlar ve satın alma işlemi PENDING durumundayken geçerli değildir.

Aboneliklerde, yeni satın alma jetonu içeren tüm satın alma işlemlerini onaylamanız gerekir. Bu nedenle, tüm ilk satın alma işlemlerinin, plan değişikliklerinin ve yeniden kaydolma işlemlerinin onaylanması gerekir ancak sonraki yenilemelerin onaylanması gerekmez. 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 bir satın alma işleminin kabul edilip edilmediğini 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ğerlerini içerir. Satın alma işlemini kabul etmeden önce, bu yöntemleri kullanarak satın alma işleminin daha önce kabul edilip edilmediğini belirleyin.

Aşağıdaki yöntemlerden birini kullanarak satın alma işlemini onaylayabilirsiniz:

  • Tüketilebilir ürünler için istemci API'sinde bulunan consumeAsync() öğesini kullanın.
  • Tüketilmeyen ürünler için istemci API'sinde bulunan acknowledgePurchase() öğesini kullanın.
  • Sunucu API'sinde yeni bir acknowledge() yöntemi de kullanılabilir.

BillingFlowParams.setSku() kaldırıldı

Daha önce desteği sonlandırılan BillingFlowParams#setSku() yöntemi bu sürümde kaldırıldı. Artık ürünleri satın alma sürecinde oluşturmadan önce BillingClient.querySkuDetailsAsync() işlevini çağırıp sonuçtaki SkuDetails nesnesini BillingFlowParams.Builder.setSkuDetails() işlevine iletmeniz gerekir.

Kod örnekleri için Google Play Faturalandırma Kitaplığı'nı Kullanma başlıklı makaleyi inceleyin.

Geliştirici yükü desteklenir.

Google Play Faturalandırma Kitaplığı'nın 2.0 sürümü, satın alma işlemlerine eklenebilen rastgele dizeler olan developer payload desteği ekler. Satın alma işlemine geliştirici yükü parametresi ekleyebilirsiniz ancak yalnızca satın alma işlemi onaylandığında veya kullanıldığında. Bu, AIDL'deki geliştirici yükünden farklıdır. AIDL'de satın alma süreci başlatılırken yük belirtilebilir. Satın alma işlemleri artık uygulamanızın dışından başlatılabildiğinden bu değişiklik, satın alma işlemlerine her zaman bir yük ekleme fırsatınız olmasını sağlar.

Yeni kitaplıktaki yük verilerine erişmek için Purchase nesneleri artık bir getDeveloperPayload() yöntemi içeriyor.

Tutarlı teklifler

İndirimli bir SKU sunduğunuzda Google Play artık SKU'nun orijinal fiyatını döndürür. 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:

Beklemede olan işlemler

Google Play Faturalandırma Kitaplığı'nın 2.0 sürümünde, hak verme işleminden önce ek işlem yapılması gereken satın alma işlemlerini desteklemeniz gerekir. Örneğin, bir kullanıcı uygulama içi ürününüzü nakit kullanarak fiziksel bir mağazadan satın almayı tercih edebilir. Bu durumda, işlemin uygulamanızın dışında tamamlandığı anlaşılır. Bu senaryoda, kullanıcının işlemi tamamlamasından sonra hak vermeniz gerekir.

Bekleyen satın alma işlemlerini etkinleştirmek için uygulamanızı başlatırken enablePendingPurchases()'ı çağırın.

Satın alma durumunun PURCHASED veya PENDING olup olmadığını belirlemek için Purchase.getPurchaseState() kullanın. Yalnızca durum PURCHASED olduğunda hak vermeniz gerektiğini unutmayın. Purchase durum güncellemelerini kontrol etmek için aşağıdakileri yapın:

  1. Uygulamanızı başlatırken kullanıcıyla ilişkili, tüketilmemiş ürünlerin listesini almak için BillingClient.queryPurchases() yöntemini çağırın.
  2. Döndürülen her Purchase nesnesinde Purchase.getPurchaseState() işlevini çağırın.
  3. Purchase nesnelerindeki değişikliklere yanıt vermek için onPurchasesUpdated() yöntemini uygulayın.

Ayrıca, Google Play Developer API'de Purchases.products için PENDING durumu bulunur. Beklemedeki işlemler aboneliklerde desteklenmez.

Bu sürümde yeni bir gerçek zamanlı geliştirici bildirimi türü de kullanıma sunuluyor:OneTimeProductNotification. 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 gibi gecikmeli ödeme şekilleriyle ilişkili satın alma işlemleri için gönderilir.

Beklemedeki satın alma işlemlerini onaylarken yalnızca satın alma durumu PURCHASED olduğunda onayladığınızdan emin olun. PENDING olduğunda onaylamayı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.

consumeAsync

consumeAsync() artık purchaseToken yerine ConsumeParams nesnesi alıyor. ConsumeParams, purchaseToken'nin yanı sıra isteğe bağlı bir geliştirici yükü içerir.

consumeAsync()'nın önceki sürümü bu yayında 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, yalnızca queryPurchaseHistoryAsync() tarafından döndürülen değerleri yansıtması ve autoRenewing, orderId ve packageName alanlarını içermemesi dışında Purchase nesnesiyle aynıdır. Döndürülen verilerde herhangi bir değişiklik olmadığını unutmayın. queryPurchaseHistoryAsync(), daha önce olduğu gibi aynı verileri döndürür.

BillingResult döndürülen değerleri

Daha önce BillingResponse tam sayı değeri döndüren API'ler artık BillingResult nesnesi döndürüyor. BillingResult, BillingResponse tamsayısının yanı sıra hataları teşhis etmek için kullanabileceğiniz bir hata ayıklama dizesini içerir. Hata ayıklama dizesi, en-US yerel ayarını kullanır ve son kullanıcılara gösterilmesi amaçlanmamıştır.

Hata düzeltmeleri

Google Play Faturalandırma Kitaplığı 1.2.2 Sürümü (2019-03-07)

Google Play Faturalandırma Kitaplığı'nın 1.2.2 sürümü kullanıma sunuldu. Bu sürümde aşağıdaki değişiklikler yapıldı.

Hata düzeltmeleri

  • 1.2.1 sürümünde kullanıma sunulan bir iş parçacığı sorunu düzeltildi. Arka plan çağrıları artık ana ileti dizisini engellemiyor.

Diğer değişiklikler

  • Ana iş parçacığını kullanmaya devam etmeniz önerilse de artık Google Play Faturalandırma Kitaplığı'nı arka plan iş parçacığından başlatabilirsiniz.
  • ANR'lere neden olma olasılığını azaltmak için örnek oluşturma işlemi tamamen arka plan iş parçacığına taşındı.

Play Faturalandırma Kitaplığı 1.2.1 Sürümü (2019-03-04)

Google Play Faturalandırma Kitaplığı'nın 1.2.1 sürümü kullanıma sunuldu. Bu sürümde aşağıdaki değişiklikler yapıldı.

Önemli değişiklikler

Diğer değişiklikler

  • Testi kolaylaştırmak için PurchasesResult ve SkuDetailsResult için herkese açık oluşturucular eklendi.
  • SkuDetails nesneleri yeni bir yöntem olan getOriginalJson()'i kullanabilir.
  • Tüm AIDL hizmeti çağrıları artık arka plan iş parçacıkları tarafından işleniyor.

Hata düzeltmeleri

  • Boş geri çağırma işleyicileri artık herkese açık API'lere iletilmiyor.

Google Play Faturalandırma Kitaplığı 1.2 Sürümü (2018-10-18)

Google Play Faturalandırma Kitaplığı'nın 1.2 sürümü kullanıma sunuldu. Bu sürümde aşağıdaki değişiklikler yapıldı.

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ılardan abonelik fiyatında bekleyen bir değişikliği incelemelerini isteyen launchPriceChangeConfirmationFlow API'si eklendi.
  • Kullanıcının aboneliğini yükseltirken veya düşürürken yeni bir orantılı ödeme modu olan DEFERRED için destek eklendi.
  • BillingFlowParams sınıfında setSku(), setSkuDetails() ile değiştirildi.
  • Küçük hata düzeltmeleri ve kod optimizasyonları.

Fiyat değişikliği onayı

Artık Google Play Console'da abonelik 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 özelliğini kullanarak bir PriceChangeFlowParams nesnesi oluşturun ve ardından launchPriceChangeConfirmationFlow() işlevini çağırı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 öğesini 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 fiyatlandırma bilgilerini içeren bir iletişim kutusu gösterilir ve kullanıcılardan yeni fiyatı kabul etmeleri istenir. Bu akış, BillingClient.BillingResponse türünde bir yanıt kodu döndürür.

Yeni orantılı ödeme modu

Bir kullanıcının aboneliğini yükseltirken veya düşürürken yeni bir orantılı ödeme modu olan DEFERRED'yı kullanabilirsiniz. Bu mod, kullanıcının aboneliği bir sonraki yenileme tarihinde günceller. Bu orantılı dağıtım modunu ayarlama hakkında daha fazla bilgi edinmek için Orantılı dağıtım modunu ayarlama başlıklı makaleyi inceleyin.

SKU ayrıntılarını ayarlamak için yeni yöntem

BillingFlowParams sınıfında setSku() yöntemi kullanım dışı bırakıldı. Bu değişiklik, Google Play Faturalandırma akışını optimize etmeye yöneliktir.

Uygulama içi faturalandırma istemcinizde BillingFlowParams öğesinin yeni bir örneğini oluştururken aşağıdaki kod snippet'inde gösterildiği gibi setSkuDetails() kullanarak doğrudan JSON nesnesiyle çalışmanızı öneririz:

BillingFlowParams Oluşturucu sınıfında setSku() yönteminin desteği sonlandırıldı. 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ü (2018-05-07)

Google Play Faturalandırma Kitaplığı'nın 1.1 sürümü kullanıma sunuldu. Bu sürümde aşağıdaki değişiklikler yapıldı.

Değişiklik özeti

  • Mevcut bir aboneliği yükseltirken/düşürürken BillingFlowParams içinde orantılı ödeme modu belirtme desteği eklendi.
  • BillingFlowParams'deki replaceSkusProration boolean işareti artık desteklenmiyor. Bunun yerine replaceSkusProrationMode politikasını kullanın.
  • launchBillingFlow() artık başarısız yanıtlar için geri arama tetikliyor.

Davranış değişiklikleri

Google Play Faturalandırma Kitaplığı'nın 1.1 sürümünde aşağıdaki davranış değişiklikleri yer alır.

Geliştiriciler, BillingFlowParams sınıfında replaceSkusProrationMode ayarlayabilir.

ProrationMode, kullanıcının aboneliği yükseltilirken veya düşürülürken orantılı ödeme türü hakkında 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 aşağıdaki orantılı ödeme modlarını destekler:

IMMEDIATE_WITH_TIME_PRORATION Değişiklik hemen geçerli olur ve yeni son kullanma tarihi, kullanıcıya orantılı olarak yansıtılır ve kullanıcıdan ücret alınır veya kullanıcıya kredi verilir. Bu, geçerli varsayılan davranıştır.
IMMEDIATE_AND_CHARGE_PRORATED_PRICE Değişiklik hemen geçerli olur ve faturalandırma dönemi aynı kalır. Kalan süre için ücret alınır.

Not: Bu seçenek yalnızca abonelik yükseltme için kullanılabilir.

IMMEDIATE_WITHOUT_PRORATION Değişiklik hemen geçerli olur ve yeni fiyat, bir sonraki yinelenme tarihinde tahsil edilir. Faturalandırma dönemi aynı kalır.

replaceSkusProration artık BillingFlowParams sınıfında desteklenmiyor

Geliştiriciler, abonelik yükseltme isteği için orantılı tutar almak üzere bir boole işareti ayarlayabiliyordu. Daha ayrıntılı orantılı ödeme talimatı içeren ProrationMode desteklendiğinden bu boole işareti artık desteklenmemektedir.

launchBillingFlow() artık başarısız yanıtlar için geri çağırma tetikliyor

Faturalandırma Kitaplığı her zaman PurhcasesUpdatedListener geri çağırmasını tetikler ve BillingResponse değerini eşzamansız olarak döndürür. BillingResponse'nin senkron dönüş değeri de korunur.

Hata düzeltmeleri

  • Hizmet bağlantısı kesildiğinde eşzamansız yöntemlerde erken çıkış düzgün şekilde yapılır.
  • Builder param nesneleri artık oluşturulan nesneleri değiştirmiyor.
  • 68087141 numaralı sorun: launchBillingFlow() artık başarısız yanıtlar için geri aramayı tetikliyor.

Google Play Faturalandırma Kitaplığı 1.0 sürümü (2017-09-19, Duyuru)

Google Play Faturalandırma Kitaplığı'nın 1.0 sürümü kullanıma sunuldu. Bu sürümde aşağıdaki değişiklikler yapıldı.

Önemli değişiklikler

  • Kitaplığın manifest dosyasında yerleştirilmiş faturalandırma izni. Artık Android manifest dosyasına com.android.vending.BILLING iznini eklemeniz gerekmiyor.
  • BillingClient.Builder sınıfına yeni oluşturucu eklendi.
  • SKU'ları sorgulamak için kullanılan yöntemlerde kullanılacak SkuDetailsParams sınıfı için oluşturucu kalıbı kullanıma sunuldu.
  • Tutarlılık için çeşitli API yöntemleri güncellendi (aynı döndürme bağımsız değişkeni adları ve sırası).

Davranış değişiklikleri

Google Play Faturalandırma Kitaplığı'nın 1.0 sürümünde aşağıdaki davranış değişiklikleri yer alır.

BillingClient.Builder sınıfı

BillingClient.Builder artık newBuilder kalıbı üzerinden 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

Bir satın alma veya abonelik için faturalandırma akışını başlatmak üzere launchBillingFlow() yöntemi, isteğe özel parametrelerle başlatılmış 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öntemlerinin bağımsız değişkenleri, Builder kalıbı içine sarıldı:

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ç artık kolaylık sağlamak ve API'mizde tutarlılık oluşturmak için önceki sarmalayıcı sınıf yerine sonuç kodu ve SkuDetails nesnelerinin listesi aracılığıyla döndürülüyor:

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

onConsumeResponse için ConsumeResponseListener arayüzündeki bağımsız değişkenlerin sırası, API'mizde tutarlılık sağlamak amacıyla değiştirildi:

Kotlin

fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)

Java

public void onConsumeResponse(@BillingResponse int responseCode, String outToken)

Sarmalanmamış PurchaseResult nesnesi

PurchaseResult API'mizde tutarlılık sağlamak için sarmalanmamış biçime dönüştürüldü:

Kotlin

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

Java

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

Hata düzeltmeleri

Geliştirici Önizlemesi 1 Sürümü (2017-06-12, Duyuru)

Faturalandırma konusunda geliştirme sürecini basitleştirmeyi amaçlayan geliştirici önizlemesi kullanıma sunuldu. Bu sayede geliştiriciler, uygulama mimarisi ve gezinme yapısı gibi Android uygulamasına özel mantığı uygulamaya odaklanabilir.

Kitaplık, Android uygulamalarınızı Google Play Faturalandırma API'si ile entegre ederken kullanabileceğiniz çeşitli kullanışlı sınıflar ve özellikler içerir. Kitaplık ayrıca Android Arayüz Tanımlama Dili (AIDL) hizmetinin üzerinde 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.