Dokumen ini berisi catatan rilis untuk Google Play Billing Library.
Keterampilan Android
Lihat di GitHubMengupgrade Play Billing Library
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.Rilis Google Play Billing Library 9.1.0 (18-06-2026)
Google Play Billing Library versi 9.1.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
- API baru untuk Pilihan Penagihan:
- Menambahkan
BillingClient.getBillingChoiceInfoAsync()untuk mengambil informasi tentang pilihan penagihan yang tersedia bagi pengguna. - Menambahkan class
BillingChoiceInfoyang berisi detail respons, termasuk URL gambar dan informasi loyalitas. - Menambahkan
GetBillingChoiceInfoParamsuntuk mengonfigurasi permintaan. - Menambahkan
BillingChoiceInfoResponseListeneruntuk menerima callback. - Menambahkan fungsi penangguhan
BillingClient.getBillingChoiceInfo()ekstensi Kotlin. - Menambahkan
BillingClient.showBillingProgramInformationDialog()untuk menampilkan dialog informasi untuk program penagihan. - Menambahkan
BillingProgramInformationDialogParamsuntuk mengonfigurasi dialog. - Menambahkan
BillingProgramInformationDialogListeneruntuk menerima callback. - Menambahkan
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsuntuk memberikan detail tentang ketersediaan pilihan penagihan. - Menambahkan
ChoiceScreenTypeuntuk menentukan jenis layar pilihan.
- Menambahkan
Rilis Google Play Billing Library 9.0.0 (19-05-2026)
Google Play Billing Library versi 9.0.0 dan ekstensi Kotlin kini tersedia. Lihat panduan migrasi PBL 9 jika Anda ingin bermigrasi dari PBL versi sebelumnya.
Ringkasan perubahan
Kode error yang diperbarui untuk aktivitas Google Play Store yang diblokir: Kode error untuk aplikasi Google Play Store yang diblokir telah diperbarui. Untuk kasus saat aplikasi Google Play Store diblokir oleh sistem (misalnya, dalam mode anak yang disesuaikan OEM), kode respons telah berubah dari
ERRORmenjadiBILLING_UNAVAILABLE. Selain itu,BillingResultuntuk kasus tersebut kini memberikan pesan debug Google Play Store diblokir.Pembaruan nullability untuk penagihan yang disediakan developer: Metode
DeveloperProvidedBillingDetails.getLinkUri()telah diperbarui menjadi@Nullable. Perubahan ini mendukung skenario saat URI link langsung untuk pembayaran eksternal tidak tersedia selama tahap pemilihan pembayaran.Untuk menangani perubahan ini dengan aman, pastikan kode integrasi Anda menangani nilai
nulldan string kosong ("") dari metodeDeveloperProvidedBillingDetails.getLinkUri()sebelum mengurai atau meluncurkan intent browser.Mengupdate
targetSdkVersionke versi 35.Anda kini dapat menggunakan pesan dalam aplikasi untuk memberi tahu pengguna tentang kenaikan harga dengan persetujuan pengguna yang akan datang. Hal ini memungkinkan pengguna mengonfirmasi kenaikan harga tanpa keluar dari aplikasi. Pesan untuk kenaikan harga dengan persetujuan pengguna yang belum disetujui akan ditampilkan mulai hari pertama pengguna dapat menyetujui kenaikan harga, dan pesan tersebut ditampilkan maksimal sekali setiap 7 hari.
Rilis Google Play Billing Library 8.3.0 (23-12-2025)
Google Play Billing Library versi 8.3.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
API baru untuk pembayaran eksternal:
- Menambahkan class untuk mendukung alur pembayaran eksternal:
- Menambahkan
enableBillingProgram(EnableBillingProgramParams)untuk mengaktifkan pembayaran eksternal. - Menambahkan
BillingFlowParams.Builder.enableDeveloperBillingOptionuntuk meluncurkan alur pembayaran eksternal.
Peningkatan kategorisasi error untuk penghentian alur pembayaran eksternal:
- Jika pengguna keluar dari alur pembelian untuk menyelesaikan pembayaran di
aplikasi eksternal (seperti e-wallet) dan mengabaikan transaksi tanpa
kembali, kode respons yang ditampilkan ke klien kini adalah
BillingResponseCode.USER_CANCELED(1) dengan pesan debugBILLING_ACTIVITY_PAUSED(sebelumnya ditetapkan secara default keBillingResponseCode.ERROR(6)).
- Jika pengguna keluar dari alur pembelian untuk menyelesaikan pembayaran di
aplikasi eksternal (seperti e-wallet) dan mengabaikan transaksi tanpa
kembali, kode respons yang ditampilkan ke klien kini adalah
Rilis Google Play Billing Library 8.2.1 (15-12-2025)
Google Play Billing Library versi 8.2.1 dan ekstensi Kotlin kini tersedia.
Perbaikan bug
- Memperbaiki bug di
isBillingProgramAvailableAsyncdancreateBillingProgramReportingDetailsAsync. Update ke versi 8.2.1 untuk menggunakan API yang diperkenalkan di 8.2.0 ini.
Rilis Google Play Billing Library 8.2.0 (09-12-2025)
Google Play Billing Library versi 8.2.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
API baru untuk link konten eksternal dan penawaran eksternal:
- Menambahkan
enableBillingProgramuntuk menyiapkanBillingClientuntuk program ini. - Menambahkan
isBillingProgramAvailableAsyncuntuk menentukan kelayakan pengguna. - Menambahkan
createBillingProgramReportingDetailsAsyncuntuk membuat token transaksi eksternal yang harus digunakan untuk pelaporan. - Menambahkan
launchExternalLinkuntuk memulai link eksternal ke penawaran konten digital atau download aplikasi.
- Menambahkan
Perubahan pada program penawaran eksternal:
- Ada perubahan kebijakan untuk program penawaran eksternal. Lihat perubahan program untuk mengetahui detailnya. Untuk memahami cara meluncurkan alur penawaran eksternal dengan API baru, lihat panduan integrasi.
- Menghentikan penggunaan
BillingClient.Builder.enableExternalOfferAPI. - Menghentikan penggunaan
isExternalOfferAvailableAsyncAPI. - Menghentikan penggunaan
createExternalOfferReportingDetailsAsyncAPI. - Menghentikan penggunaan
showExternalOfferInformationDialogAPI.
Rilis Google Play Billing Library 8.1.0 (06-11-2025)
Google Play Billing Library versi 8.1.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
Langganan yang ditangguhkan
Parameter baru telah ditambahkan ke metode
BillingClient.queryPurchasesAsync()untuk menyertakan langganan yang ditangguhkan saat membuat kueri untuk langganan. Langganan yang ditangguhkan masih diatribusikan kepada pengguna, tetapi tidak aktif, baik karena pengguna menjeda langganan atau metode pembayaran perpanjangannya ditolak.Objek
Purchaseyang ditampilkan di pemroses akan menampilkanisSuspended() = trueuntuk langganan yang ditangguhkan. Dalam hal ini, Anda tidak boleh memberikan akses ke langganan yang dibeli, dan sebagai gantinya, arahkan pengguna ke pusat langganan tempat pengguna dapat mengelola metode pembayaran atau status jeda untuk mengaktifkan kembali langganannya.Pembaruan pada langganan:
Objek
BillingFlowParams.ProductDetailsParamskini memiliki metodesetSubscriptionProductReplacementParams()yang dapat Anda gunakan untuk menentukan informasi penggantian tingkat produk.Objek
SubscriptionProductReplacementParamsmemiliki dua metode penyetel:setOldProductId: Produk lama yang perlu diganti dengan produk diProductDetailssaat ini.setReplacementMode: Ini adalah mode penggantian tingkat item. Mode ini pada dasarnya sama dengan SubscriptionUpdateParams, tetapi pemetaan nilainya telah diperbarui. Mode penggantian baruKEEP_EXISTINGdiperkenalkan yang memungkinkan Anda mempertahankan jadwal pembayaran yang ada tanpa perubahan untuk suatu item.
SubscriptionUpdateParams setSubscriptionReplacementMode tidak akan digunakan lagi. Sebagai gantinya, Anda harus menggunakan
SubscriptionProductReplacementParams.setReplacementMode.
Mengupdate
minSdkVersionke versi 23.Mengaktifkan API praorder untuk produk sekali beli
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API yang mendapatkan detail praorder kini tersedia untuk digunakan.Google Play Billing Library kini mendukung Kotlin versi 2.2.0.
Rilis Google Play Billing Library 8.0.0 (30-06-2025)
Google Play Billing Library versi 8.0.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
Item dalam aplikasi kini akan disebut sebagai produk sekali beli.
Beberapa opsi pembelian dan penawaran untuk produk sekali beli.
Anda kini dapat memiliki beberapa opsi pembelian dan penawaran untuk produk sekali beli. Hal ini memberi Anda fleksibilitas dalam cara menjual produk dan menyederhanakan proses pengelolaannya.
Meningkatkan metode
queryProductDetailsAsync().Sebelum PBL 8.0.0, metode
queryProductDetailsAsync()tidak menampilkan produk yang tidak dapat diambil. Hal ini dapat disebabkan oleh alasan seperti produk tidak ditemukan atau tidak ada penawaran yang tersedia untuk pengguna. Dengan PBL 8.0.0, produk yang tidak diambil akan ditampilkan dengan kode status tingkat produk baru yang memberikan informasi tentang produk yang tidak diambil. Perhatikan bahwa ada perubahan pada tanda tanganProductDetailsResponseListener.onProductDetailsResponse()yang memerlukan perubahan pada aplikasi Anda. Untuk informasi selengkapnya, lihat memproses hasil.Koneksi ulang layanan otomatis.
Parameter builder
BillingClient.Builder.enableAutoServiceReconnection()baru memungkinkan developer memilih untuk mengaktifkan koneksi ulang layanan otomatis, yang menyederhanakan pengelolaan koneksi dengan menangani koneksi ulang ke Layanan Penagihan Play secara otomatis dan menghilangkan kebutuhan untuk memanggilstartConnection()secara manual jika terjadi pemutusan koneksi layanan. Untuk mengetahui informasi selengkapnya, lihat Membuat Ulang Koneksi Secara Otomatis.Kode sub-respons untuk metode
launchBillingFlow().BillingResult yang ditampilkan dari
launchBillingFlow()kini akan menyertakan kolom kode sub-respons. Kolom ini hanya akan diisi dalam beberapa kasus untuk memberikan alasan yang lebih spesifik atas kegagalan tersebut. Kolom sub-respons dapat memiliki nilai berikut:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- Ditampilkan saat dana pengguna kurang dari harga item yang ingin mereka beli.USER_INELIGIBLE- Ditampilkan saat pengguna tidak memenuhi persyaratan kelayakan yang dikonfigurasi untuk penawaran langganan.NO_APPLICABLE_SUB_RESPONSE_CODE- Nilai default, ditampilkan jika tidak ada kode sub-respons lain yang berlaku.
Menghapus metode
queryPurchaseHistory().Metode
queryPurchaseHistory()yang sebelumnya ditandai sebagai tidak digunakan lagi kini telah dihapus. Lihat Membuat Kueri Histori Pembelian untuk mengetahui detail tentang API alternatif yang dapat digunakan.Menghapus metode
querySkuDetailsAsync().Metode
querySkuDetailsAsync()yang sebelumnya ditandai sebagai tidak digunakan lagi kini telah dihapus. Sebagai gantinya, Anda harus menggunakan queryProductDetailsAsync.Menghapus metode
BillingClient.Builder.enablePendingPurchases().Metode
enablePendingPurchases()tanpa parameter yang sebelumnya ditandai sebagai tidak digunakan lagi kini telah dihapus. Sebagai gantinya, Anda harus menggunakanenablePendingPurchases(PendingPurchaseParams params). Perhatikan bahwaenablePendingPurchases()yang tidak digunakan lagi secara fungsional setara denganenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).Menghapus metode
queryPurchasesAsync()yang kelebihan beban yang menggunakan skuType.Metode
queryPurchasesAsync(String skuType, PurchasesResponseListener listener)yang sebelumnya ditandai sebagai tidak digunakan lagi kini telah dihapus. Atau, gunakanqueryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener).
Rilis Google Play Billing Library 7.1.1 (03-10-2024)
Google Play Billing Library versi 7.1.1 dan ekstensi Kotlin kini tersedia.
Perbaikan bug
- Memperbaiki bug di Play Billing Library 7.1.0 terkait pengujian
kode respons
BillingResult.
Rilis Google Play Billing Library 7.1.0 (19-09-2024)
Google Play Billing Library versi 7.1.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
- Peningkatan keamanan thread terkait status dan pengelolaan koneksi.
- Memperkenalkan perubahan parsial untuk menguji kode respons
BillingResultyang dirilis sepenuhnya di Play Billing Library 7.1.1. Untuk menguji integrasi menggunakan fitur ini, Anda harus mengupgrade ke Play Billing Library 7.1.1. Ada bug yang hanya akan memengaruhi aplikasi dengan pengujian penggantian penagihan diaktifkan dan tidak memengaruhi penggunaan reguler. Untuk mengetahui informasi selengkapnya, lihat Menguji kode responsBillingResult.
Rilis Google Play Billing Library 7.0.0 (14-05-2024)
Google Play Billing Library versi 7.0.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
Menambahkan API untuk mendukung langganan cicilan.
- Menambahkan
ProductDetails.InstallmentPlanDetailsuntuk paket dasar cicilan yang dapat dibeli oleh pengguna yang memenuhi syarat. 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 kami.
- Menambahkan
Menambahkan
PendingPurchasesParamsdanBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)untuk menggantikanBillingClient.Builder.enablePendingPurchases(), yang tidak digunakan lagi dalam rilis ini.enablePendingPurchases()yang tidak digunakan lagi secara fungsional setara denganenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).
Menambahkan API untuk mendukung transaksi tertunda untuk paket prabayar langganan:
- Gunakan
PendingPurchasesParams.Builder.enablePrepaidPlans()bersama denganBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)untuk mengaktifkan transaksi tertunda untuk paket prabayar langganan. Saat menambahkan dukungan, pastikan aplikasi Anda juga mengelola siklus proses langganan dengan benar. Untuk mempelajari lebih lanjut, lihat panduan pembelian tertunda kami. - Menambahkan
Purchase.PendingPurchaseUpdatedanPurchase.getPendingPurchaseUpdate()untuk mengambil penambahan saldo atau upgrade atau downgrade yang tertunda ke langganan yang ada.
- Gunakan
Menghapus
BillingClient.Builder.enableAlternativeBilling(),AlternativeBillingListener, danAlternativeChoiceDetails.- Sebagai gantinya, developer harus menggunakan
BillingClient.Builder.enableUserChoiceBilling()denganUserChoiceBillingListenerdanUserChoiceDetailsdalam callback pemroses.
- Sebagai gantinya, developer harus menggunakan
Menghapus
BillingFlowParams.ProrationMode,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode(), danBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode().- Developer harus menggunakan
BillingFlowParams.SubscriptionUpdateParams.ReplacementModedenganBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int).
- Developer harus 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 harus menggunakan alternatif berikut:- Pembelian yang dikonfirmasi dan tertunda: Gunakan
BillingClient.queryPurchasesAsync()untuk mengambil pembelian aktif. - Pembelian yang digunakan: Developer harus melacak pembelian yang digunakan di server mereka sendiri.
- Pembelian yang dibatalkan: Gunakan API developer voided-purchases.
- Untuk mengetahui detail selengkapnya, lihat Membuat Kueri Histori Pembelian
- Pembelian yang dikonfirmasi dan tertunda: Gunakan
BillingFlowParams.ProductDetailsParams.setOfferToken()kini menampilkan pengecualian saat developer menentukanofferTokenkosong.Mengupdate
minSdkVersionke versi 21 dantargetSdkVersionke versi 34.
Rilis Google Play Billing Library 6.2.1 (16-04-2024)
Google Play Billing Library versi 6.2.1 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
- Memperbaiki bug di
BillingClient.showAlternativeBillingOnlyInformationDialog()yang menyebabkanAlternativeBillingOnlyInformationDialogListenermungkin tidak dipanggil dalam kasus tertentu saat dialog selesai.
Rilis Google Play Billing Library 6.2.0 (06-03-2024)
Google Play Billing Library versi 6.2.0 dan ekstensi Kotlin kini tersedia.
Ringkasan perubahan
- Menambahkan API untuk mendukung penawaran eksternal
- Menambahkan
BillingClient.Builder.enableExternalOffer()untuk mengaktifkan kemampuan memberikan 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 untuk 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
UserChoiceBillingListeneruntuk menggantikan AlternativeBillingListener yang telah ditandai sebagai tidak digunakan lagi. - Menambahkan
UserChoiceDetailsuntuk menggantikanAlternativeChoiceDetailsyang 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 Library Layanan Penagihan Google Play 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
ReplacementModebaru untuk menggantikanProrationMode.Perhatikan bahwa
ProrationModemasih 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
queryPurchasesdanlaunchPriceConfirmationFlow.Metode
queryPurchasesdanlaunchPriceConfirmationFlowyang 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_UNAVAILABLEdanSERVICE_TIMEOUT.Mulai dari PBL versi 6.0.0, error karena waktu tunggu dalam pemrosesan habis akan ditampilkan sebagai
SERVICE_UNAVAILABLE, bukanSERVICE_TIMEOUTsaat ini.Perilaku ini tidak berubah pada PBL versi sebelumnya.
Menghapus
SERVICE_TIMEOUT.Mulai PBL versi 6.0.0,
SERVICE_TIMEOUTtidak akan ditampilkan lagi. PBL versi sebelumnya akan tetap menampilkan kode ini.Menambahkan logging tambahan.
Rilis Play Billing Library 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 Google Play dan memberikan dukungan yang lebih baik untuk error.
Rilis Library Layanan Penagihan Google Play 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
targetSdkVersionke 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. launchPriceChangeFlowtidak 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 menggantikanBillingClient.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 Play Billing Library.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 update langganan. Ini menggantikanBillingFlowParams#getReplaceSkusProrationMode,BillingFlowParams#getOldSkuPurchaseToken,BillingFlowParams#getOldSku,BillingFlowParams.Builder#setReplaceSkusProrationMode,BillingFlowParams.Builder#setOldSkuyang telah dihapus.Menambahkan
Purchase.getQuantity()danPurchaseHistoryRecord.getQuantity().Menambahkan
Purchase#getSkus()danPurchaseHistoryRecord#getSkus(). Ini menggantikanPurchase#getSkudanPurchaseHistoryRecord#getSkuyang 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 Google Play Billing Library 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)
Google Play Billing Library versi 3.0.2 dan ekstensi Kotlin kini tersedia.
Perbaikan bug
- Memperbaiki bug di ekstensi Kotlin yang menyebabkan 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)
Google Play Billing Library versi 3.0.1 dan ekstensi Kotlin kini tersedia.
Perbaikan bug
- Memperbaiki bug yang jika aplikasi dihentikan dan dipulihkan selama alur
penagihan,
PurchasesUpdatedListenermungkin tidak dipanggil dengan hasil pembelian.
Rilis Library Layanan Penagihan Google Play 3.0 (08-06-2020)
Google Play Billing Library, ekstensi Kotlin, dan plugin Unity versi 3.0.0 kini tersedia.
Ringkasan perubahan
- Menghapus dukungan SKU yang diberikan.
- Menghapus parameter
ChildDirecteddanUnderAgeOfConsent. - 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 library Layanan Penagihan Google Play Java 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, fungsi payload developer tidak digunakan lagi dan akan dihapus dalam 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. Developer game yang menggunakan API pembelian dalam aplikasi Unity dapat mengupgrade sekarang untuk memanfaatkan semua fitur Google Play Billing Library 2 dan mempermudah upgrade berikutnya ke versi Google Play Billing Library mendatang.
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. - Di
BillingFlowParams, menambahkansetObfuscatedProfileId()yang berfungsi mirip dengansetObfuscatedAccountId(). Untuk mengetahui informasi selengkapnya, lihat Update dan alternatif payload developer. - Di
Purchase, menambahkan metodegetAccountIdentifiers()untuk menampilkan ID akun yang di-obfuscate yang ditetapkan diBillingFlowParams. - Di
BillingClient, metodeloadRewardedSku()telah ditandai sebagai tidak digunakan lagi sebagai bagian dari penghentian SKU reward.
- 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 Google Play Billing Library.
Versi ini berisi perubahan berikut.
Ringkasan perubahan
- Di
BillingFlowParams,setOldSku(String oldSku)tidak digunakan lagi dan diganti dengansetOldSku(String oldSku, String purchaseToken), untuk memperjelas saat beberapa akun di perangkat 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 saat pesan debug ditampilkan sebagai
nulldalam 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 (in-app) atau
di luar aplikasi Anda (out-of-app). 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
tertunda (baru di versi 2.0), periode tiga hari dimulai
saat pembelian telah dipindahkan ke status PURCHASED dan tidak berlaku saat
pembelian dalam status PENDING.
Untuk langganan, Anda harus mengonfirmasi setiap pembelian yang memiliki token pembelian baru. Artinya, semua pembelian awal, perubahan paket, dan pendaftaran ulang harus dikonfirmasi, tetapi Anda tidak perlu mengonfirmasi perpanjangan berikutnya. 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 menyertakan nilai boolean konfirmasi untuk
Purchases.products
dan
Purchases.subscriptions.
Sebelum mengonfirmasi pembelian, pastikan 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 Google Play Billing Library.
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 yang belum diformat sebelum diskon.
getOriginalPrice()- menampilkan harga asli dengan format mata uang tambahan.
Transaksi 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 yang belum digunakan yang terkait dengan pengguna. - Panggil
Purchase.getPurchaseState()pada setiap objekPurchaseyang ditampilkan. - Implementasikan metode
onPurchasesUpdated()untuk merespons perubahan pada objekPurchase.
Selain itu, Google Play Developer API menyertakan status PENDING untuk
Purchases.products.
Transaksi 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
- Menambahkan dukungan untuk produk reward. Untuk mengetahui informasi selengkapnya tentang opsi monetisasi, lihat Menambahkan fitur khusus produk reward.
Perubahan lainnya
- Menambahkan konstruktor publik untuk
PurchasesResultdanSkuDetailsResultguna mempermudah pengujian. - Objek
SkuDetailsdapat 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
- Google Play Billing Library kini 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. - Di class
BillingFlowParams, gantisetSku()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
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 saat diperpanjang 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
BillingFlowParamssaat mengupgrade/mendowngrade langganan yang sudah ada. - Tanda boolean
replaceSkusProrationdalamBillingFlowParamskini sudah tidak didukung lagi. Sebagai gantinya, gunakanreplaceSkusProrationMode. launchBillingFlow()kini 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();
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
Developer biasanya dapat menetapkan tanda boolean untuk mengenakan biaya prorata untuk
permintaan upgrade langganan. Mengingat kami mendukung ProrationMode,
yang berisi petunjuk penghitungan prorata yang lebih mendetail, flag boolean ini tidak
lagi didukung.
launchBillingFlow() sekarang akan memicu callback untuk respons yang gagal
Billing Library akan selalu memicu callback
PurhcasesUpdatedListener
dan menampilkan
BillingResponse
secara asinkron. Nilai return sinkron dari
BillingResponse
juga disimpan.
Perbaikan bug
- Keluar lebih awal dengan benar dalam metode asinkron saat koneksi layanan terputus.
- Objek parameter
Buildertidak lagi mengubah objek yang telah dibuat. - Masalah 68087141:
launchBillingFlow()kini 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
- Izin penagihan tersemat di dalam manifes library. Anda tidak perlu lagi menambahkan izin
com.android.vending.BILLINGdi dalam manifes Android. - Builder baru ditambahkan ke class
BillingClient.Builder. - Memperkenalkan pola builder untuk class
SkuDetailsParamsyang akan digunakan pada metode untuk mengkueri SKU. - Beberapa metode API telah diperbarui demi konsistensi (nama dan urutan argumen yang ditampilkan 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 memulai alur penagihan untuk pembelian atau langganan, metode
launchBillingFlow() menerima
instance
BillingFlowParams
yang diinisialisasi dengan parameter khusus untuk 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() digabungkan
ke dalam 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 daftar objek
SkuDetails,
bukan class wrapper sebelumnya, untuk memudahkan Anda dan agar
konsisten di seluruh 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 di seluruh 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
- Memperbaiki 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 yang praktis untuk Anda gunakan saat mengintegrasikan aplikasi Android dengan Layanan Penagihan Google Play API. Library ini juga menyediakan lapisan abstraksi di atas layanan Android Interface Definition Language (AIDL), sehingga memudahkan developer untuk menentukan antarmuka antara aplikasi dan Layanan Penagihan Google Play.