Topik ini berisi catatan rilis untuk Library Layanan Penagihan Google Play.
Rilis Google Play Billing Library 7.0.0 (14-05-2024)
Library Layanan Penagihan Google Play versi 7.0.0 dan ekstensi Kotlin kini yang tersedia.
Ringkasan perubahan
Menambahkan API untuk mendukung langganan cicilan.
- Menambahkan
ProductDetails.InstallmentPlanDetails
untuk paket dasar cicilan yang dapat dibeli pengguna. API ini membantu aplikasi Anda mengidentifikasi paket cicilan dan penyiapan komitmennya untuk memberikan informasi terkait kepada pengguna. Untuk mempelajari lebih lanjut, lihat panduan cicilan langganan.
- Menambahkan
Menambahkan
PendingPurchasesParams
danBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
untuk menggantiBillingClient.Builder.enablePendingPurchases()
, yang tidak digunakan lagi dalam rilis ini.enablePendingPurchases()
yang tidak digunakan lagi secara fungsional setara denganenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
.
Menambahkan API guna mendukung transaksi yang tertunda untuk paket prabayar langganan:
- Gunakan
PendingPurchasesParams.Builder.enablePrepaidPlans()
bersama denganBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
guna mengaktifkan transaksi yang tertunda untuk paket prabayar langganan. Saat menambahkan pastikan aplikasi Anda juga mengelola langganan dengan benar siklus proses. Untuk mempelajari lebih lanjut, lihat panduan pembelian dalam proses. - Menambahkan
Purchase.PendingPurchaseUpdate
danPurchase.getPendingPurchaseUpdate()
untuk mengambil penambahan saldo yang tertunda atau upgrade atau downgrade ke langganan Anda.
- Gunakan
Menghapus
BillingClient.Builder.enableAlternativeBilling()
,AlternativeBillingListener
, danAlternativeChoiceDetails
.- Sebaiknya pengembang menggunakan
BillingClient.Builder.enableUserChoiceBilling()
denganUserChoiceBillingListener
danUserChoiceDetails
dalam callback pemroses.
- Sebaiknya pengembang menggunakan
Menghapus
BillingFlowParams.ProrationMode
,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, danBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.- Sebaiknya pengembang menggunakan
BillingFlowParams.SubscriptionUpdateParams.ReplacementMode
denganBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
sebagai gantinya. BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
.BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.
- Sebaiknya pengembang menggunakan
Menghapus
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
.- Developer harus menggunakan
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
sebagai gantinya.
- Developer harus menggunakan
BillingClient.queryPurchaseHistoryAsync()
tidak digunakan lagi dan akan dihapus dalam rilis mendatang. Developer seharusnya gunakan alternatif berikut sebagai gantinya:- Pembelian yang diketahui dan tertunda: Gunakan
BillingClient.queryPurchasesAsync()
untuk mengambil pembelian aktif. - Pembelian yang dikonsumsi: Developer harus melacak pembelian yang dikonsumsi di servernya sendiri.
- Pembelian yang dibatalkan: Gunakan pembelian yang dibatalkan API developer.
- Untuk detail selengkapnya, lihat Kueri Histori Pembelian
- Pembelian yang diketahui dan tertunda: Gunakan
BillingFlowParams.ProductDetailsParams.setOfferToken()
sekarang menampilkan pengecualian saat developer menentukanofferToken
kosong.Memperbarui
minSdkVersion
menjadi 21 dantargetSdkVersion
menjadi 34.
Rilis Google Play Billing Library 6.2.1 (16-04-2024)
Library Layanan Penagihan Google Play versi 6.2.1 dan ekstensi Kotlin kini yang tersedia.
Ringkasan perubahan
- Memperbaiki bug di
BillingClient.showAlternativeBillingOnlyInformationDialog()
yang menyebabkanAlternativeBillingOnlyInformationDialogListener
tidak dipanggil dalam kasus tertentu saat dialog selesai.
Rilis Google Play Billing Library 6.2.0 (06-03-2024)
Library Layanan Penagihan Google Play versi 6.2.0 dan ekstensi Kotlin kini yang tersedia.
Ringkasan perubahan
- Menambahkan API untuk mendukung penawaran eksternal
- Menambahkan
BillingClient.Builder.enableExternalOffer()
untuk mengaktifkan kemampuan menyediakan penawaran eksternal. - Menambahkan
BillingClient.isExternalOfferAvailableAsync()
untuk memeriksa ketersediaan fungsi penawaran eksternal. - Menambahkan
BillingClient.showExternalOfferInformationDialog()
untuk menampilkan dialog informasi kepada pengguna sebelum mengarahkan pengguna ke luar aplikasi. - Menambahkan
BillingClient.createExternalOfferReportingDetailsAsync()
untuk membuat payload yang diperlukan guna melaporkan transaksi yang dilakukan melalui penawaran eksternal.
- Menambahkan
Rilis Google Play Billing Library 6.1.0 (14-11-2023)
Google Play Billing Library versi 6.1.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
- Menambahkan API untuk mendukung penagihan alternatif saja (yaitu tanpa pilihan pengguna)
- Menambahkan
BillingClient.Builder.enableAlternativeBillingOnly()
untuk secara fungsional mengaktifkan kemampuan penawaran penagihan alternatif saja. - Menambahkan
BillingClient.isAlternativeBillingOnlyAvailableAsync()
untuk memeriksa ketersediaan penawaran penagihan alternatif saja. - Menambahkan
BillingClient.showAlternativeBillingOnlyInformationDialog()
untuk menampilkan dialog informasi guna memberi tahu pengguna saat penagihan alternatif saja sedang digunakan. - Menambahkan
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
untuk membuat payload yang diperlukan untuk melaporkan transaksi yang dilakukan melalui penagihan alternatif saja.
- Menambahkan
- Mengupdate API penagihan sesuai pilihan pengguna
- Menambahkan
UserChoiceBillingListener
untuk menggantikan AlternativeBillingListener yang telah ditandai sebagai tidak digunakan lagi. - Menambahkan
UserChoiceDetails
untuk menggantikanAlternativeChoiceDetails
yang telah ditandai sebagai tidak digunakan lagi. - Menambahkan
BillingClient.Builder.enableUserChoiceBilling()
untuk menggantikanBillingClient.Builder.enableAlternativeBilling()
yang telah ditandai sebagai tidak digunakan lagi.
- Menambahkan
- Menambahkan
BillingClient.getBillingConfigAsync()
untuk mengambil negara Google Play.
Rilis Google Play Billing Library 6.0.1 (22-06-2023)
Library Layanan Penagihan Google Play versi 6.0.1 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
Mengupdate Play Billing Library agar kompatibel dengan Android 14.
Rilis Library Layanan Penagihan Google Play 6.0 (10-05-2023)
Library Layanan Penagihan Google Play versi 6.0.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
Menambahkan enum
ReplacementMode
baru untuk menggantikanProrationMode
.Perhatikan bahwa
ProrationMode
masih tersedia untuk alasan kompatibilitas mundur.Menghapus ID pesanan untuk pembelian
PENDING
.Sebelumnya, ID pesanan akan selalu dibuat meskipun pembelian tertunda. Mulai versi 6.0.0, ID pesanan tidak akan dibuat untuk pembelian yang tertunda, dan untuk pembelian ini, ID pesanan akan diisi setelah pembelian dipindahkan ke status
PURCHASED
.Menghapus metode
queryPurchases
danlaunchPriceConfirmationFlow
.Metode
queryPurchases
danlaunchPriceConfirmationFlow
yang sebelumnya ditandai sebagai tidak digunakan lagi kini telah dihapus di Library Layanan Penagihan Play 6.0.0. Developer harus menggunakanqueryPurchasesAsync
, bukanqueryPurchases
. Untuk alternatiflaunchPriceConfirmationFlow
, lihat Perubahan harga.Menambahkan kode respons error jaringan baru.
Kode respons error jaringan baru,
NETWORK_ERROR
, telah ditambahkan mulai dari PBL versi 6.0.0. Kode ini ditampilkan saat terjadi error karena ada masalah koneksi jaringan. Error koneksi jaringan ini sebelumnya dilaporkan sebagaiSERVICE_UNAVAILABLE
.Memperbarui
SERVICE_UNAVAILABLE
danSERVICE_TIMEOUT
.Mulai dari PBL versi 6.0.0, error karena waktu tunggu dalam pemrosesan habis akan ditampilkan sebagai
SERVICE_UNAVAILABLE
, bukanSERVICE_TIMEOUT
saat ini.Perilaku ini tidak berubah pada PBL versi sebelumnya.
Menghapus
SERVICE_TIMEOUT
.Mulai PBL versi 6.0.0,
SERVICE_TIMEOUT
tidak akan ditampilkan lagi. PBL versi sebelumnya akan tetap menampilkan kode ini.Menambahkan logging tambahan.
Rilis Library Layanan Penagihan Play 6 menyertakan logging tambahan, yang memberikan insight tentang penggunaan API (seperti keberhasilan dan kegagalan) serta masalah koneksi layanan. Informasi ini akan digunakan untuk meningkatkan performa Library Layanan Penagihan Play dan memberikan dukungan yang lebih baik untuk error.
Rilis Google Play Billing Library 5.2.1 (22-06-2023)
Library Layanan Penagihan Google Play versi 5.2.1 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
Mengupdate Play Billing Library agar kompatibel dengan Android 14.
Rilis Library Layanan Penagihan Google Play 5.2 (06-04-2023)
Library Layanan Penagihan Google Play versi 5.2.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
- Menambahkan class untuk mendukung alur penagihan alternatif di perangkat seluler/tablet untuk pengguna di Korea Selatan:
- Menambahkan metode
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
untuk menentukan ID transaksi eksternal langganan asal. - Menambahkan metode
BillingClient.Builder.enableAlternativeBilling()
agar pengguna di Korea Selatan dapat memilih opsi penagihan alternatif.
Rilis Library Layanan Penagihan Google Play 5.1 (31-10-2022)
Library Layanan Penagihan Google Play versi 5.1.0 dan ekstensi Kotlin kini tersedia.
Versi ini berisi perubahan berikut.
Ringkasan perubahan
- Menambahkan metode
ProductDetails.SubscriptionOfferDetails.getOfferId()
untuk mengambil ID penawaran. - Menambahkan metode
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
untuk mengambil ID paket dasar. - Mengupdate
targetSdkVersion
ke versi 31.
Rilis Library Layanan Penagihan Google Play 5.0 (11-05-2022)
Library Layanan Penagihan Google Play versi 5.0.0 dan ekstensi Kotlin kini tersedia.
Versi ini berisi perubahan berikut.
Ringkasan perubahan
- Memperkenalkan model baru untuk langganan, termasuk entitas baru yang memungkinkan Anda membuat beberapa penawaran untuk satu produk langganan. Untuk informasi selengkapnya, lihat panduan migrasi.
- Menambahkan
BillingClient.queryProductDetailsAsync()
untuk menggantikanBillingClient.querySkuDetailsAsync()
. - Menambahkan metode
setIsOfferPersonalized()
untuk persyaratan pengungkapan penetapan harga yang dipersonalisasi Uni Eropa. Untuk mempelajari cara menggunakan metode ini lebih lanjut, lihat Menunjukkan harga yang dipersonalisasi. - Menghapus
queryPurchases()
, yang sebelumnya tidak digunakan lagi dan digantikan oleh queryPurchasesAsync yang diperkenalkan di Library Layanan Penagihan Google Play 4.0.0. launchPriceChangeFlow
tidak digunakan lagi dan akan dihapus dalam rilis mendatang. Untuk mempelajari alternatif lebih lanjut, lihat Meluncurkan alur konfirmasi perubahan harga.- Menghapus
setVrPurchaseFlow()
, yang sebelumnya digunakan saat membuat instance alur pembelian. Pada versi sebelumnya, metode ini mengalihkan pengguna untuk menyelesaikan pembelian di perangkat Android mereka. Setelah Anda menghapus metode ini, pengguna akan menyelesaikan pembelian melalui alur pembelian standar.
Rilis Library Layanan Penagihan Google Play 4.1 (23-02-2022)
Library Layanan Penagihan Google Play versi 4.1.0 dan ekstensi Kotlin kini tersedia.
Versi ini berisi perubahan berikut.
Ringkasan perubahan
- Menambahkan
BillingClient.showInAppMessages()
untuk membantu menangani penolakan pembayaran langganan. Untuk mempelajari lebih lanjut cara menggunakan pesan dalam aplikasi untuk menangani penolakan pembayaran langganan, lihat Menangani penolakan pembayaran.
Rilis Library Layanan Penagihan Google Play 4.0 (18-05-2021)
Library Layanan Penagihan Google Play versi 4.0.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
Menambahkan
BillingClient.queryPurchasesAsync()
untuk menggantiBillingClient.queryPurchases()
yang akan dihapus dalam rilis mendatang.Menambahkan mode penggantian langganan baru
IMMEDIATE_AND_CHARGE_FULL_PRICE
.Menambahkan metode
BillingClient.getConnectionState()
untuk mengambil status koneksi Library Layanan Penagihan Play.Mengupdate Javadoc dan memperbarui implementasi untuk menunjukkan thread yang dapat dipanggil oleh metode dan hasil thread yang diposting.
Menambahkan
BillingFlowParams.Builder.setSubscriptionUpdateParams()
sebagai cara baru untuk memulai pembaruan langganan. Ini menggantikanBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
,BillingFlowParams.Builder#setReplaceSkusProrationMode
,BillingFlowParams.Builder#setOldSku
yang telah dihapus.Menambahkan
Purchase.getQuantity()
danPurchaseHistoryRecord.getQuantity()
.Menambahkan
Purchase#getSkus()
danPurchaseHistoryRecord#getSkus()
. Keduanya menggantikanPurchase#getSku
danPurchaseHistoryRecord#getSku
yang telah dihapus.Menghapus
BillingFlowParams#getSku
,BillingFlowParams#getSkuDetails
, danBillingFlowParams#getSkuType
.
Rilis Library Layanan Penagihan Google Play 3.0.3 (12-03-2021)
Library Layanan Penagihan Google Play versi 3.0.3, ekstensi Kotlin, dan plugin Unity kini tersedia.
Perbaikan Bug Java dan Kotlin
- Memperbaiki kebocoran memori saat
endConnection()
dipanggil. - Memperbaiki masalah saat Library Layanan Penagihan Google Play digunakan oleh aplikasi yang menggunakan
mode peluncuran tugas tunggal. Callback
onPurchasesUpdated()
akan dipicu saat aplikasi dilanjutkan dari peluncur Android dan dialog penagihan terlihat sebelum ditangguhkan.
Perbaikan Bug Unity
- Update ke Java versi 3.0.3 untuk memperbaiki kebocoran memori dan menyelesaikan masalah yang mencegah pembelian saat aplikasi dilanjutkan dari peluncur Android dan dialog penagihan terlihat sebelum ditangguhkan.
Rilis Library Layanan Penagihan Google Play 3.0.2 (24-11-2020)
Library Layanan Penagihan Google Play versi 3.0.2 dan ekstensi Kotlin kini tersedia.
Perbaikan bug
- Memperbaiki bug di ekstensi Kotlin saat coroutine gagal dengan error "Already resumed".
- Memperbaiki referensi yang belum terselesaikan saat ekstensi Kotlin digunakan dengan library kotlinx.coroutines versi 1.4+.
Rilis Library Layanan Penagihan Google Play 3.0.1 (30-09-2020)
Library Layanan Penagihan Google Play versi 3.0.1 dan ekstensi Kotlin kini tersedia.
Perbaikan bug
- Memperbaiki bug yang menyebabkan jika aplikasi dihentikan dan dipulihkan selama alur penagihan.
PurchasesUpdatedListener
mungkin tidak dipanggil dengan hasil pembelian.
Rilis Library Layanan Penagihan Google Play 3.0 (08-06-2020)
Library Layanan Penagihan Google Play versi 3.0.0, ekstensi Kotlin, dan plugin Unity kini tersedia.
Ringkasan perubahan
- Menghapus dukungan SKU yang diberikan.
- Menghapus parameter
ChildDirected
danUnderAgeOfConsent
. - Menghapus metode payload developer yang tidak digunakan lagi.
- Menghapus metode
BillingFlowParams.setAccountId()
danBillingFlowParams.setDeveloperId()
yang tidak digunakan lagi. - Menghapus metode
BillingFlowParams.setOldSkus(String oldSku)
danBillingFlowParams.addOldSku(String oldSku)
yang tidak digunakan lagi. - Menambahkan anotasi nullability.
Perbaikan bug
SkuDetails.getIntroductoryPriceCycles()
sekarang menampilkanint
, bukanString
.- Memperbaiki bug yang menyebabkan alur penagihan dianggap memiliki parameter tambahan meskipun tidak ada parameter tambahan yang ditetapkan.
Rilis Library Layanan Penagihan Google Play 2.2.1 (20-05-2020)
Library Layanan Penagihan Google Play versi 2.2.1 sekarang tersedia.
Perbaikan bug
- Mengupdate versi default Java library Layanan Penagihan Play yang menjadi dependensi ekstensi Kotlin.
Rilis Library Layanan Penagihan Google Play 2.2.0 dan dukungan Unity (23-03-2020)
Layanan Penagihan Google Play versi 2.2.0 menyediakan fungsi yang membantu developer memastikan pembelian diatribusikan kepada pengguna yang benar. Perubahan ini menggantikan kebutuhan mem-build solusi kustom berdasarkan payload developer. Sebagai bagian dari update ini, fungsionalitas payload developer kini sudah tidak digunakan lagi dan akan dihapus pada rilis mendatang. Untuk informasi selengkapnya, termasuk alternatif yang direkomendasikan, lihat Payload developer.
Library Penagihan Layanan Penagihan Google Play 2 untuk Unity
Selain versi Java dan Kotlin Library Layanan Penagihan Google Play 2 saat ini, kami juga merilis versi library yang dapat digunakan dengan Unity. Sekarang developer game yang menggunakan API pembelian dalam aplikasi Unity dapat mengupgrade untuk memanfaatkan semua fitur Library Layanan Penagihan Google Play 2 dan untuk memudahkan upgrade selanjutnya ke versi Library Layanan Penagihan Google Play yang akan datang.
Untuk mempelajari lebih lanjut, lihat Menggunakan Layanan Penagihan Google Play dengan Unity.
Ringkasan perubahan
- Library Layanan Penagihan Google Play Java
- Dalam
AcknowledgePurchaseParams
, metodesetDeveloperPayload()
dangetDeveloperPayload()
tidak digunakan lagi. - Dalam
ConsumeParams
, metodesetDeveloperPayload()
dangetDeveloperPayload()
tidak digunakan lagi. - Dalam
BillingFlowParams
, mengganti namasetAccountId()
menjadisetObfuscatedAccountId()
, dan mendokumentasikan batasan panjang 64 karakter dan batasan yang melarang Informasi Identitas Pribadi (PII) dalam kolom ini.setAccountId()
telah ditandai sebagai tidak digunakan lagi dan akan dihapus dalam versi library mendatang. - Dalam
BillingFlowParams
, menambahkansetObfuscatedProfileId()
yang berfungsi serupa dengansetObfuscatedAccountId()
. Untuk informasi selengkapnya, lihat Update dan alternatif payload developer. - Dalam
Purchase
, menambahkan metodegetAccountIdentifiers()
untuk menampilkan kumpulan ID akun yang di-obfuscate dalamBillingFlowParams
. - Dalam
BillingClient
, metodeloadRewardedSku()
telah ditandai sebagai tidak digunakan lagi sebagai bagian dari penghentian SKU yang sudah diberi reward. Anda dapat menemukan informasi selengkapnya tentang penghentian ini di Pusat Bantuan Konsol Play.
- Dalam
Rilis Library Layanan Penagihan Google Play 2.1.0 dan Rilis Ekstensi Kotlin 2.1.0 (10-12-2019)
Library Layanan Penagihan Google Play versi 2.1.0 dan ekstensi Kotlin baru sekarang tersedia. Ekstensi Kotlin Library Layanan Penagihan Play menyediakan alternatif API idiomatis untuk konsumsi Kotlin, yang mengutamakan coroutine dan keamanan null yang lebih baik. Untuk contoh kode, lihat Menggunakan Library Layanan Penagihan Google Play.
Versi ini berisi perubahan berikut.
Ringkasan perubahan
- Di
BillingFlowParams
,setOldSku(String oldSku)
tidak digunakan lagi dan diganti dengansetOldSku(String oldSku, String purchaseToken)
, untuk menghilangkan kerancuan saat beberapa akun di perangkat tersebut memiliki SKU yang sama.
Rilis Library Layanan Penagihan Google Play 2.0.3 (05-08-2019)
Library Layanan Penagihan Google Play versi 2.0.3 kini telah tersedia.
Perbaikan bug
- Memperbaiki bug yang menyebabkan
querySkuDetailsAsync()
terkadang mengalami kegagalan dengan kodeDEVELOPER_ERROR
, bukan menampilkan hasil yang sukses.
Rilis Library Layanan Penagihan Google Play 2.0.2 (08-07-2019)
Google Play Billing Library versi 2.0.2 kini tersedia. Rilis ini berisi pembaruan pada dokumentasi referensi dan tidak mengubah fungsi library.
Rilis Library Layanan Penagihan Google Play 2.0.1 (06-06-2019)
Library Layanan Penagihan Google Play versi 2.0.1 sekarang tersedia. Versi ini berisi perubahan berikut.
Perbaikan bug
- Memperbaiki bug yang menyebabkan pesan debug ditampilkan sebagai
null
dalam beberapa kasus. - Memperbaiki potensi masalah kebocoran memori.
Rilis Library Layanan Penagihan Google Play 2.0 (07-05-2019)
Library Layanan Penagihan Google Play versi 2.0 sekarang tersedia. Versi ini berisi perubahan berikut.
Pembelian harus dikonfirmasi dalam waktu tiga hari
Google Play mendukung pembelian produk dari dalam aplikasi Anda (dalam aplikasi) atau di luar aplikasi Anda (di luar aplikasi). Agar Google Play dapat memberikan
pengalaman pembelian yang konsisten di mana pun pengguna membeli produk
Anda, Anda harus mengonfirmasi semua pembelian yang diterima melalui Library Layanan Penagihan
Google Play sesegera mungkin setelah memberikan hak kepada pengguna. Jika
Anda tidak mengonfirmasi pembelian dalam waktu tiga hari, pengguna akan otomatis
menerima pengembalian dana, dan Google Play akan mencabut pembelian tersebut. Untuk
transaksi yang tertunda (baru dalam versi 2.0), rentang waktu tiga hari ini
dimulai saat pembelian telah beralih ke status PURCHASED
dan tidak berlaku
selama pembelian berstatus PENDING
.
Untuk langganan, Anda harus mengonfirmasi setiap pembelian yang memiliki token pembelian baru. Ini berarti semua pembelian awal, perubahan paket, dan pendaftaran ulang harus dikonfirmasi, tetapi Anda tidak perlu mengonfirmasi perpanjangan selanjutnya. Untuk menentukan apakah pembelian memerlukan konfirmasi, Anda dapat memeriksa kolom konfirmasi pada pembelian.
Objek Purchase
kini menyertakan
metode isAcknowledged()
yang menunjukkan apakah pembelian telah dikonfirmasi atau belum. Selain itu,
Google Play Developer API juga menyertakan nilai boolean konfirmasi untuk
Purchases.products
dan Purchases.subscriptions
.
Sebelum mengonfirmasi pembelian, pastikan Anda menggunakan metode ini untuk menentukan apakah
pembelian telah dikonfirmasi atau belum.
Anda dapat mengonfirmasi pembelian menggunakan salah satu metode berikut:
- Untuk produk habis pakai, gunakan
consumeAsync()
, yang tersedia dalam API klien. - Untuk produk tidak habis pakai, gunakan
acknowledgePurchase()
, yang tersedia dalam API klien. - Metode
acknowledge()
baru juga tersedia dalam API Server.
BillingFlowParams.setSku() telah dihapus
Metode BillingFlowParams#setSku()
yang sebelumnya sudah tidak digunakan lagi telah dihapus
dalam rilis ini. Sebelum merender produk dalam alur pembelian, Anda sekarang harus memanggil
BillingClient.querySkuDetailsAsync()
,
yang meneruskan
objek SkuDetails
yang menjadi hasilnya ke
BillingFlowParams.Builder.setSkuDetails()
.
Untuk contoh kode, lihat Menggunakan Library Layanan Penagihan Google Play.
Payload developer didukung
Library Layanan Penagihan Google Play versi 2.0 menambahkan dukungan untuk payload developer—string arbitrer yang dapat ditambahkan ke pembelian. Anda dapat menambahkan parameter payload developer ke pembelian, tetapi hanya setelah pembelian dikonfirmasi atau dipakai. Hal ini berbeda dengan payload developer di AIDL, karena payload dapat ditentukan saat memulai alur pembelian. Karena pembelian kini dapat diinisialisasi dari luar aplikasi, perubahan ini memastikan bahwa Anda selalu memiliki kesempatan untuk menambahkan payload ke pembelian.
Untuk mengakses payload dalam library yang baru, objek Purchase
kini menyertakan
metode
getDeveloperPayload()
.
Penawaran yang konsisten
Saat Anda menawarkan SKU diskon, Google Play sekarang menampilkan harga asli SKU tersebut sehingga Anda dapat menunjukkan kepada pengguna bahwa mereka mendapatkan diskon.
SkuDetails
berisi dua
metode baru untuk mengambil harga SKU asli:
getOriginalPriceAmountMicros()
- menampilkan harga asli SKU tanpa format sebelum diskon.getOriginalPrice()
- menampilkan harga asli dengan format mata uang tambahan.
Transaksi yang tertunda
Pada library Layanan Penagihan Google Play versi 2.0, Anda harus mendukung pembelian yang memerlukan tindakan tambahan sebelum hak diberikan. Misalnya, pengguna mungkin memilih untuk membeli produk dalam aplikasi Anda di toko fisik menggunakan uang tunai. Hal ini berarti transaksi diselesaikan di luar aplikasi Anda. Dalam skenario ini, sebaiknya Anda hanya memberikan izin setelah pengguna menyelesaikan transaksi tersebut.
Untuk mengaktifkan pembelian tertunda, panggil
enablePendingPurchases()
sebagai bagian dari proses inisialisasi aplikasi Anda.
Gunakan Purchase.getPurchaseState()
untuk menentukan apakah status pembelian adalah PURCHASED
atau PENDING
. Perlu diketahui bahwa
sebaiknya Anda hanya memberikan izin jika pembelian tersebut berstatus PURCHASED
. Anda harus
memeriksa pembaruan status Purchase
dengan melakukan hal berikut:
- Saat memulai aplikasi, panggil
BillingClient.queryPurchases()
untuk mengambil daftar produk tidak habis pakai yang terkait dengan pengguna. - Panggil
Purchase.getPurchaseState()
pada setiap objekPurchase
yang ditampilkan. - Implementasikan metode
onPurchasesUpdated()
untuk merespons perubahan pada objekPurchase
.
Selain itu, Google Play Developer API menyertakan status PENDING
untuk Purchases.products
.
Transaksi yang tertunda tidak didukung untuk
langganan.
Rilis ini juga memperkenalkan jenis notifikasi developer real-time baru,
OneTimeProductNotification
. Jenis notifikasi ini berisi satu pesan
yang nilainya antara ONE_TIME_PRODUCT_PURCHASED
atau
ONE_TIME_PRODUCT_CANCELED
. Jenis notifikasi ini hanya dikirim untuk pembelian
yang terkait dengan metode pembayaran yang tertunda, seperti uang tunai.
Saat mengonfirmasi pembelian tertunda, pastikan Anda hanya melakukan konfirmasi jika
pembelian berstatus PURCHASED
, bukan PENDING
.
Perubahan API
Library Layanan Penagihan Google Play versi 2.0 memuat beberapa perubahan API untuk mendukung fitur baru dan memperjelas fungsionalitas yang telah ada.
consumeAsync
consumeAsync()
sekarang menggunakan
objek ConsumeParams
,
bukan purchaseToken
. ConsumeParams
berisi purchaseToken
serta payload developer opsional.
Versi consumeAsync()
sebelumnya telah dihapus dalam rilis ini.
queryPurchaseHistoryAsync
Untuk meminimalkan kebingungan,
queryPurchaseHistoryAsync()
kini menampilkan
objek PurchaseHistoryRecord
,
bukan Purchase
. Objek PurchaseHistoryRecord
sama dengan objek Purchase
, tetapi objek pertama hanya mencerminkan nilai yang ditampilkan oleh
queryPurchaseHistoryAsync()
dan tidak berisi kolom autoRenewing
,
orderId
, dan packageName
. Perlu diketahui bahwa tidak ada yang berubah dengan
data yang ditampilkan; queryPurchaseHistoryAsync()
menampilkan data
yang sama seperti sebelumnya.
Nilai BillingResult yang ditampilkan
API yang sebelumnya menampilkan nilai bilangan bulat BillingResponse
kini menampilkan
objek
BillingResult
. BillingResult
berisi bilangan bulat BillingResponse
serta
string debug yang dapat Anda gunakan untuk mendiagnosis error. String debug ini menggunakan lokal en-US
dan tidak dimaksudkan untuk ditampilkan kepada pengguna akhir.
Perbaikan bug
SkuDetails.getIntroductoryPriceAmountMicros()
kini menampilkanlong
, bukanString
.
Rilis Library Layanan Penagihan Google Play 1.2.2 (07-03-2019)
Library Layanan Penagihan Google Play versi 1.2.2 sekarang tersedia. Versi ini berisi perubahan berikut.
Perbaikan bug
- Perbaikan untuk masalah threading yang diperkenalkan pada v1.2.1. Panggilan latar belakang tidak lagi memblokir thread utama.
Perubahan lainnya
- Meskipun penggunaan thread utama tetap direkomendasikan, sekarang Anda dapat membuat instance Library Layanan Penagihan Google Play dari thread latar belakang.
- Pembuatan instance telah dimigrasikan sepenuhnya ke thread latar belakang untuk mengurangi kemungkinan terjadinya ANR (aplikasi tidak merespons).
Rilis Library Layanan Penagihan Play 1.2.1 (04-03-2019)
Library Layanan Penagihan Google Play versi 1.2.1 sekarang tersedia. Versi ini berisi perubahan berikut.
Perubahan utama
- Penambahan dukungan untuk produk bonus. Untuk mengetahui informasi selengkapnya tentang opsi monetisasi, lihat Menambahkan fitur khusus produk reward.
Perubahan lainnya
- Menambahkan konstruktor publik untuk
PurchasesResult
danSkuDetailsResult
guna mempermudah pengujian. - Objek
SkuDetails
dapat menggunakan metode baru,getOriginalJson()
. - Semua panggilan layanan AIDL kini ditangani oleh thread latar belakang.
Perbaikan bug
- Pemroses callback null tidak lagi diteruskan ke API publik.
Rilis Library Layanan Penagihan Google Play 1.2 (18-10-2018)
Library Layanan Penagihan Google Play versi 1.2 sekarang tersedia. Versi ini berisi perubahan berikut.
Ringkasan perubahan
- Library Layanan Penagihan Google Play sekarang dilisensikan berdasarkan Perjanjian Lisensi Software Development Kit Android.
- Menambahkan API
launchPriceChangeConfirmationFlow
, yang meminta pengguna untuk meninjau perubahan dalam proses pada harga langganan. - Menambahkan dukungan untuk mode penghitungan prorata baru,
DEFERRED
, saat mengupgrade atau mendowngrade langganan pengguna. - Dalam class
BillingFlowParams
, menggantisetSku()
dengansetSkuDetails()
. - Perbaikan bug minor dan pengoptimalan kode.
Konfirmasi perubahan harga
Anda sekarang dapat mengubah harga langganan di Konsol Google Play serta meminta pengguna meninjau dan menerima harga baru saat mereka membuka aplikasi Anda.
Untuk menggunakan API ini, buat objek PriceChangeFlowParams
menggunakan
skuDetails
dari produk langganan, lalu panggil
launchPriceChangeConfirmationFlow()
. Implementasikan
PriceChangeConfirmationListener
untuk menangani hasilnya saat alur konfirmasi
perubahan harga selesai, seperti dalam cuplikan kode berikut:
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. } });
Alur konfirmasi perubahan harga menampilkan dialog yang berisi informasi
harga baru, yang meminta pengguna untuk menerima harga baru tersebut. Alur ini menampilkan
kode respons dengan jenis
BillingClient.BillingResponse
.
Mode penghitungan prorata baru
Saat mengupgrade atau mendowngrade langganan pengguna, Anda dapat menggunakan mode
penghitungan prorata baru, DEFERRED
. Mode ini memperbarui langganan pengguna pada perpanjangan
berikutnya. Untuk mempelajari lebih lanjut cara menetapkan mode penghitungan prorata ini, lihat Menetapkan
mode penghitungan prorata.
Metode baru untuk menetapkan detail SKU
Dalam class BillingFlowParams
, metode setSku()
sudah tidak digunakan lagi.
Perubahan ini dimaksudkan untuk mengoptimalkan alur Layanan Penagihan Google Play.
Saat membuat instance BillingFlowParams
baru dalam klien
penagihan via Google Play, sebaiknya kerjakan dengan objek JSON secara langsung menggunakan
setSkuDetails()
, seperti dalam cuplikan kode berikut:
Dalam class Builder BillingFlowParams
, metode setSku()
sudah
tidak digunakan lagi. Sebaiknya gunakan metode setSkuDetails()
seperti dalam cuplikan kode
berikut ini. Objek yang diteruskan ke objek setSkuDetails()
berasal dari
metode
querySkuDetailsAsync()
.
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(); }
Rilis Library Layanan Penagihan Play 1.1 (07-05-2018)
Library Layanan Penagihan Google Play versi 1.1 sekarang tersedia. Versi ini berisi perubahan berikut.
Ringkasan perubahan
- Menambahkan dukungan untuk menentukan mode penghitungan prorata dalam
BillingFlowParams
saat mengupgrade/mendowngrade langganan yang sudah ada. - Tanda boolean
replaceSkusProration
dalamBillingFlowParams
kini sudah tidak didukung lagi. Sebagai gantinya, gunakanreplaceSkusProrationMode
. launchBillingFlow()
kini akan memicu callback untuk respons yang gagal.
Perubahan perilaku
Library Layanan Penagihan Google Play versi 1.1 memuat perubahan perilaku berikut ini.
Developer dapat menetapkan replaceSkusProrationMode
dalam class BillingFlowParams
ProrationMode
memberikan detail lebih lanjut tentang jenis penghitungan prorata saat mengupgrade atau mendowngrade
langganan pengguna.
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Saat ini, Google Play mendukung mode penghitungan prorata berikut:
IMMEDIATE_WITH_TIME_PRORATION |
Penggantian akan langsung diterapkan, dan waktu habis masa berlaku yang baru akan dihitung secara prorata dan dikreditkan atau ditagihkan kepada pengguna. Ini merupakan perilaku default saat ini. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
Penggantian akan langsung diterapkan, dan siklus penagihan tetap sama. Harga untuk
periode yang tersisa akan ditagih.
Catatan: Opsi ini hanya tersedia untuk upgrade langganan. |
IMMEDIATE_WITHOUT_PRORATION |
Penggantian akan langsung diterapkan, dan harga baru akan ditagih pada waktu pengulangan berikutnya. Siklus penagihan tetap sama. |
replaceSkusProration
sudah tidak didukung lagi dalam class BillingFlowParams
Sebelumnya, developer dapat menetapkan tanda boolean untuk membebankan jumlah prorata bagi suatu permintaan upgrade
langganan. Mengingat kami mendukung ProrationMode
, yang memuat instruksi penghitungan prorata
yang lebih mendetail, tanda boolean ini kini tidak didukung lagi.
launchBillingFlow()
sekarang akan memicu callback untuk respons yang gagal
Library Penagihan akan selalu memicu callback PurhcasesUpdatedListener
dan menampilkan BillingResponse
secara asinkron. Nilai tersinkron BillingResponse
yang ditampilkan juga akan dipertahankan.
Perbaikan bug
- Keluar lebih awal dengan benar dalam metode asinkron saat koneksi layanan terputus.
- Objek parameter
Builder
tidak lagi mengubah objek yang telah dibuat. - Masalah 68087141:
launchBillingFlow()
kini akan memicu callback untuk respons yang gagal.
Rilis Library Layanan Penagihan Google Play 1.0 (19-09-2017, Pengumuman)
Library Layanan Penagihan Google Play versi 1.0 sekarang tersedia. Versi ini berisi perubahan berikut.
Perubahan penting
- Menyematkan izin penagihan dalam manifes library. Anda tidak perlu lagi menambahkan
izin
com.android.vending.BILLING
dalam manifes Android. - Builder baru ditambahkan ke class
BillingClient.Builder
. - Memperkenalkan pola builder untuk class
SkuDetailsParams
yang akan digunakan pada metode untuk mengkueri SKU. - Beberapa metode API telah diperbarui agar konsisten (urutan dan nama argumen yang ditampilkan tetap sama).
Perubahan perilaku
Google Play Billing Library versi 1.0 berisi perubahan perilaku berikut ini.
Class BillingClient.Builder
BillingClient.Builder
kini diinisialisasi melalui pola newBuilder:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
Metode launchBillingFlow sekarang dipanggil menggunakan class BillingFlowParams
Untuk menginisialisasi alur penagihan bagi pembelian atau langganan,
metode launchBillingFlow()
akan menerima
instance BillingFlowParams
yang diinisialisasi dengan parameter khusus permintaan:
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());
Cara baru untuk mengkueri produk yang tersedia
Argumen untuk metode queryPurchaseHistoryAsync()
dan querySkuDetailsAsync()
telah digabungkan ke pola Builder:
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() {...})
Hasilnya kini ditampilkan melalui kode hasil dan sejumlah
objek
SkuDetails
, bukan class wrapper sebelumnya, agar lebih memudahkan Anda dan agar konsisten dalam semua API kami:
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Urutan parameter diubah pada metode onConsumeResponse()
Urutan argumen untuk onConsumeResponse
dari antarmuka ConsumeResponseListener
telah diubah agar konsisten dalam semua API kami:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Objek PurchaseResult kini tidak digabungkan lagi
PurchaseResult
kini tidak digabungkan lagi agar konsisten dalam semua API kami:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
Perbaikan bug
- Tidak ada kode respons dalam Paket PURCHASES_UPDATED
- Perbaikan untuk masalah ProxyBillingActivity dan PurchasesUpdatedListener selama rotasi perangkat
Rilis Pratinjau Developer 1 (12-06-2017, Pengumuman)
Pratinjau developer diluncurkan untuk menyederhanakan proses pengembangan yang berhubungan dengan penagihan, agar developer dapat memfokuskan upaya mereka dalam mengimplementasikan logika khusus aplikasi Android, seperti arsitektur aplikasi dan struktur navigasi.
Library ini menyertakan beberapa class dan fitur praktis yang dapat Anda gunakan saat mengintegrasikan aplikasi Android Anda dengan Google Play Billing API. Library ini juga menyediakan lapisan abstraksi selain layanan Android Interface Definition Language (AIDL), yang memudahkan developer untuk menentukan antarmuka antara aplikasi dan Google Play Billing API.