Panduan ini menjelaskan cara mengintegrasikan API untuk menawarkan penagihan alternatif saja (yaitu tanpa pilihan pengguna) di aplikasi yang memenuhi syarat. Untuk mempelajari program ini lebih lanjut, termasuk persyaratan kelayakan dan cakupan geografis, lihat Tentang Penagihan Alternatif.
Penyiapan Play Billing Library
Tambahkan dependensi Play Billing Library ke aplikasi Android. Untuk menggunakan API penagihan alternatif, Anda harus menggunakan versi 6.1 atau yang lebih tinggi.
Menghubungkan ke Google Play
Langkah-langkah pertama dalam proses integrasi sama dengan langkah-langkah yang dijelaskan di Panduan integrasi Layanan Penagihan Google Play, dengan beberapa modifikasi saat melakukan inisialisasi BillingClient Anda:
- Anda perlu memanggil metode baru untuk menunjukkan bahwa aplikasi Anda hanya menggunakan
sistem penagihan alternatif:
enableAlternativeBillingOnly
.
Contoh berikut menunjukkan inisialisasi BillingClient
dengan modifikasi
ini:
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build();
Setelah melakukan inisialisasi BillingClient
, Anda harus menghubungkan ke
Google Play seperti yang dijelaskan dalam panduan integrasi.
Memeriksa Ketersediaan
Aplikasi Anda harus mengonfirmasi bahwa hanya penagihan alternatif yang tersedia dengan memanggil
isAlternativeBillingOnlyAvailableAsync
.
API ini akan menampilkan BillingResponseCode.OK jika hanya penagihan alternatif yang tersedia. Lihat penanganan respons untuk mengetahui detail tentang cara aplikasi Anda merespons kode respons lainnya.
Kotlin
billingClient.isAlternativeBillingOnlyAvailableAsync(object:
AlternativeBillingOnlyAvailabilityListener {
override fun onAlternativeBillingOnlyAvailabilityResponse(
billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable, etc.
return
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
Java
billingClient.isAlternativeBillingOnlyAvailable(
new AlternativeBillingOnlyAvailabilityListener() {
@Override
public void onAlternativeBillingOnlyAvailabilityResponse(
BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable,
// etc.
return;
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
Dialog informasi untuk pengguna
Untuk berintegrasi dengan penagihan alternatif saja, aplikasi Anda yang memenuhi syarat harus menampilkan
layar informasi yang membantu pengguna memahami bahwa penagihan tidak akan dikelola
oleh Google Play. Layar informasi harus ditampilkan kepada pengguna dengan memanggil
showAlternativeBillingOnlyInformationDialog
API sebelum memulai
alur penagihan alternatif setiap kali diperlukan. Jika pengguna telah mengonfirmasi
dialog, penggunaan API ini biasanya tidak akan menyebabkan dialog ditampilkan
lagi. Adakalanya dialog ditampilkan lagi kepada pengguna dalam situasi
seperti jika pengguna menghapus cache di perangkatnya.
Kotlin
// An activity reference from which the alternative billing only information
// dialog will be launched.
val activity : Activity = ...;
val listener : AlternativeBillingOnlyInformationDialogListener =
AlternativeBillingOnlyInformationDialogListener {
override fun onAlternativeBillingOnlyInformationDialogResponse(
billingResult: BillingResult) {
// check billingResult
}
}
val billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener)
Java
// An activity reference from which the alternative billing only information
// dialog will be launched.
Activity activity = ...;
AlternativeBillingOnlyInformationDialogListener listener =
new AlternativeBillingOnlyInformationDialogListener() {
@Override
public void onAlternativeBillingOnlyInformationDialogResponse(
BillingResult billingResult) {
// check billingResult
}
};
BillingResult billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener);
Jika metode ini menampilkan BillingResponseCode.OK, aplikasi Anda dapat melanjutkan transaksi. Jika BillingResponseCode.USER_CANCELED ditampilkan, aplikasi Anda harus memanggil showAlternativeBillingOnlyInformationDialog untuk menampilkan lagi dialog kepada pengguna. Untuk kode respons lainnya, lihat bagian penanganan respons.
Melaporkan transaksi ke Google Play
Semua transaksi yang dilakukan melalui sistem penagihan alternatif harus dilaporkan
ke Google Play dengan memanggil Google Play Developer API dari backend Anda dalam
waktu 24 jam, memberikan externalTransactionToken
yang diperoleh menggunakan API
yang dijelaskan di bawah ini. externalTransactionToken baru harus dibuat untuk setiap
pembelian satu kali, setiap langganan baru, dan untuk setiap upgrade/downgrade ke
langganan yang ada. Untuk mempelajari cara melaporkan transaksi setelah
externalTransactionToken
diperoleh, lihat panduan integrasi backend.
Kotlin
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(object:
AlternativeBillingOnlyReportingDetailsListener {
override fun onAlternativeBillingOnlyTokenResponse(
billingResult: BillingResult,
alternativeBillingOnlyReportingDetails:
AlternativeBillingOnlyReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
alternativeBillingOnlyReportingDetails?
.externalTransactionToken
// Send transaction token to backend and report to Google Play.
}
});
Java
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(
new AlternativeBillingOnlyReportingDetailsListener() {
@Override
public void onAlternativeBillingOnlyTokenResponse(
BillingResult billingResult,
@Nullable AlternativeBillingOnlyReportingDetails
alternativeBillingOnlyReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
alternativeBillingOnlyReportingDetails
.getExternalTransactionToken();
// Send transaction token to backend and report to Google Play.
}
});
Penanganan respons
Metode isAlternativeBillingOnlyAvailableAsync(),
showAlternativeBillingOnlyInformationDialog()
di atas dan createAlternativeBillingOnlyReportingDetailsAsync()
dapat menampilkan respons non-BillingResponseCode.OK jika terjadi error. Penanganan error yang
direkomendasikan dijelaskan di bawah ini:
ERROR
: Ini adalah error internal. Jangan lanjutkan transaksi. Coba lagi dengan memanggilshowAlternativeBillingOnlyInformationDialog()
untuk menampilkan informasi kepada pengguna saat mencoba melakukan pembelian.FEATURE_NOT_SUPPORTED
: API penagihan alternatif tidak didukung oleh Play Store di perangkat saat ini. Jangan lanjutkan transaksi.USER_CANCELED
: Tidak melanjutkan transaksi. TeleponshowAlternativeBillingOnlyInformationDialog()
lagi untuk menampilkan dialog informasi kepada pengguna saat berikutnya pengguna mencoba melakukan pembelian.BILLING_UNAVAILABLE
: Transaksi tidak memenuhi syarat untuk penagihan alternatif saja, sehingga tidak boleh dilanjutkan dalam program ini. Hal ini disebabkan karena pengguna tidak berada di negara yang memenuhi syarat untuk program ini atau akun Anda belum berhasil terdaftar dalam program ini. Jika disebabkan oleh pendaftaran belum berhasil, periksa status pendaftaran Anda di Konsol Play.DEVELOPER_ERROR
: Terjadi error dengan permintaan. Gunakan pesan debug untuk mengidentifikasi dan memperbaiki error sebelum melanjutkan.NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE
: Ini adalah error sementara yang harus dicoba lagi. JikaSERVICE_DISCONNECTED
ditampilkan, buat kembali koneksi dengan Google Play sebelum mencoba lagi.
Menguji penagihan alternatif
Penguji lisensi harus digunakan untuk menguji integrasi penagihan alternatif Anda. Anda tidak akan ditagih untuk transaksi yang telah dimulai oleh penguji lisensi menggunakan akun layanan. Lihat Menguji penagihan via Google Play dengan pemberian lisensi aplikasi untuk informasi selengkapnya informasi tentang cara mengonfigurasi penguji lisensi.
Langkah berikutnya
Setelah menyelesaikan integrasi dalam aplikasi, Anda siap untuk mengintegrasikan backend.