Dokumen ini menjelaskan cara mengintegrasikan API Play Billing Library untuk menawarkan link konten eksternal di aplikasi yang memenuhi syarat. Hal ini mencakup kemampuan untuk menautkan pengguna di Amerika Serikat ke luar aplikasi Play Anda untuk memberikan penawaran kepada pengguna terkait konten digital dalam aplikasi dan download aplikasi. Untuk mempelajari program ini lebih lanjut, lihat persyaratan program.
Penyiapan Play Billing Library
Tambahkan dependensi Play Billing Library ke aplikasi Android. Untuk menggunakan API link eksternal, Anda harus menggunakan versi 8.2 atau yang lebih tinggi. Jika Anda perlu bermigrasi dari versi sebelumnya, ikuti petunjuk dalam panduan migrasi sebelum menambahkan link konten eksternal.
Melakukan inisialisasi klien penagihan
Untuk melakukan inisialisasi klien penagihan, ikuti langkah-langkah yang sama seperti yang dijelaskan dalam
Melakukan inisialisasi BillingClient dengan modifikasi berikut:
- Jangan aktifkan
PurchasesUpdatedListener- pendengar ini tidak diperlukan untuk link konten eksternal. - Panggil
enableBillingProgram()denganBillingProgram.EXTERNAL_CONTENT_LINKuntuk menunjukkan bahwa aplikasi Anda menggunakan link konten eksternal.
Contoh berikut menunjukkan inisialisasi BillingClient dengan modifikasi
ini:
Kotlin
val billingClient = BillingClient.newBuilder(context)
.enableBillingProgram(BillingProgram.EXTERNAL_CONTENT_LINK)
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableBillingProgram(BillingProgram.EXTERNAL_CONTENT_LINK)
.build();
Menghubungkan ke Google Play
Setelah melakukan inisialisasi BillingClient, hubungkan ke Google Play seperti yang dijelaskan dalam
Menghubungkan ke Google Play.
Memeriksa kelayakan pengguna
Setelah terhubung ke Google Play, Anda harus memeriksa apakah pengguna memenuhi syarat untuk program link konten eksternal dengan memanggil metode isBillingProgramAvailableAsync(). Metode ini menampilkan
BillingResponseCode.OK jika pengguna memenuhi syarat untuk program link konten eksternal. Contoh berikut menunjukkan cara memeriksa kelayakan pengguna untuk link konten eksternal:
Kotlin
billingClient.isBillingProgramAvailableAsync(
BillingProgram.EXTERNAL_CONTENT_LINK,
object : BillingProgramAvailabilityListener {
override fun onBillingProgramAvailabilityResponse(
billingProgram: Int, billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external content links unavailable, etc.
return
}
// External content links are available. Prepare an external
// transaction token.
}
})
Java
billingClient.isBillingProgramAvailableAsync(
BillingProgram.EXTERNAL_CONTENT_LINK,
new BillingProgramAvailabilityListener() {
@Override
public void onBillingProgramAvailabilityResponse(
int billingProgram, BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external content links unavailable, etc.
return;
}
// External content links are available. Prepare an external
// transaction token.
}
});
Lihat bagian penanganan respons untuk mengetahui detail tentang cara aplikasi Anda merespons kode respons lainnya. Jika menggunakan ekstensi Kotlin, Anda dapat menggunakan coroutine Kotlin sehingga tidak perlu menentukan pemroses terpisah.
Menyiapkan token transaksi eksternal
Selanjutnya, Anda harus membuat token transaksi eksternal dari Play Billing
Library. Token transaksi eksternal baru harus dibuat setiap kali pengguna
mengunjungi situs eksternal melalui API link eksternal. Hal ini dapat dilakukan dengan memanggil API createBillingProgramReportingDetailsAsync. Token
harus dibuat tepat sebelum pengguna keluar dari penautan.
Catatan: Token transaksi eksternal tidak boleh di-cache dan Anda harus membuat token baru setiap kali pengguna dialihkan.
Kotlin
val params =
BillingProgramReportingDetailsParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_CONTENT_LINK)
.build();
billingClient.createBillingProgramReportingDetailsAsync(
params,
object : BillingProgramReportingDetailsListener {
override fun onCreateBillingProgramReportingDetailsResponse(
billingResult: BillingResult,
billingProgramReportingDetails: BillingProgramReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
billingProgramReportingDetails?.externalTransactionToken
// Persist the external transaction token locally. Pass it to the
// external website when launchExternalLink is called.
}
})
Java
BillingProgramReportingDetailsParams params =
BillingProgramReportingDetailsParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_CONTENT_LINK)
.build();
billingClient.createBillingProgramReportingDetailsAsync(
params,
new BillingProgramReportingDetailsListener() {
@Override
public void onCreateBillingProgramReportingDetailsResponse(
BillingResult billingResult,
@Nullable BillingProgramReportingDetails
billingProgramReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
billingProgramReportingDetails.getExternalTransactionToken();
// Persist the external transaction token locally. Pass it to the
// external website when launchExternalLink is called.
}
});
Jika menggunakan ekstensi Kotlin, Anda dapat menggunakan coroutine Kotlin sehingga tidak perlu menentukan pemroses terpisah.
Membuka link eksternal
Setelah token transaksi eksternal siap, pengguna dapat ditautkan ke luar aplikasi ke penawaran konten digital atau download aplikasi dengan memanggil metode
launchExternalLink. Google Play mungkin merender dialog informasi tambahan kepada pengguna, bergantung pada setelan pengguna saat Anda memanggil API ini.
Saat memanggil metode launchExternalLink, detail link eksternal
harus diberikan melalui LaunchExternalLinkParams. Class ini berisi
parameter berikut:
- URI link - Link ke situs eksternal tempat konten digital atau download aplikasi ditawarkan. Untuk download aplikasi, link ini harus didaftarkan dan disetujui di Konsol Play.
- Jenis Link - Jenis konten yang ditawarkan kepada pengguna.
- Mode Peluncuran - Menentukan cara link diluncurkan. Untuk download aplikasi, Anda
harus menyetelnya ke
LAUNCH_IN_EXTERNAL_BROWSER_OR_APP. Program Penagihan - Setel ini ke
BillingProgram.EXTERNAL_CONTENT_LINK.
Kotlin
val params =
LaunchExternalLinkParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_CONTENT_LINK)
.setLinkUri(Uri.parse("https://www.myapprovedsite.com"))
.setLinkType(LaunchExternalLinkParams.LinkType.LINK_TO_APP_DOWNLOAD)
.setLaunchMode(
LaunchExternalLinkParams.LaunchMode.LAUNCH_IN_EXTERNAL_BROWSER_OR_APP)
.build()
val listener : LaunchExternalLinkResponseListener =
object : LaunchExternalLinkResponseListener {
override fun onLaunchExternalLinkResponse(
billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
// If Launch Mode was set to LAUNCH_IN_EXTERNAL_BROWSER_OR_APP, the
// user was directed outside of the app by Play. This does not give
// any information on the user's actions during the link out, such
// as if a transaction was completed.
// If Launch Mode was set to CALLER_WILL_LAUNCH_LINK, then your app
// may proceed to direct the user to the external website.
}
}
billingClient.launchExternalLink(activity, params, listener)
Java
LaunchExternalLinkParams params =
LaunchExternalLinkParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_CONTENT_LINK)
.setLinkUri(Uri.parse("https://www.myapprovedsite.com"))
.setLinkType(LaunchExternalLinkParams.LinkType.LINK_TO_APP_DOWNLOAD)
.setLaunchMode(
LaunchExternalLinkParams.LaunchMode.LAUNCH_IN_EXTERNAL_BROWSER_OR_APP)
.build()
LaunchExternalLinkResponseListener listener =
new LaunchExternalLinkResponseListener() {
@Override
public void onLaunchExternalLinkResponse(BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
// If Launch Mode was set to LAUNCH_IN_EXTERNAL_BROWSER_OR_APP, the
// user was directed outside of the app by Play. This does not give
// any information on the user's actions during the link out, such
// as if a transaction was completed.
// If Launch Mode was set to CALLER_WILL_LAUNCH_LINK, then your app
// may proceed to direct the user to the external website.
}
}
billingClient.launchExternalLink(activity, params, listener);
Penanganan respons
Saat terjadi error, metode isBillingProgramAvailableAsync(), dan
createBillingProgramReportingDetailsAsync(), dan
onLaunchExternalLinkResponse() dapat memberikan BillingResponseCode selain
BillingResponseCode.OK. Pertimbangkan untuk menangani kode respons ini sebagai
berikut:
ERROR: Ini adalah error internal. Jangan lanjutkan transaksi atau membuka situs eksternal. Coba lagi dengan memanggil API lagi atau dengan memanggillaunchExternalLink()pada saat Anda mencoba mengarahkan pengguna ke luar aplikasi.FEATURE_NOT_SUPPORTED: API link konten eksternal tidak didukung oleh Play Store di perangkat saat ini. Jangan lanjutkan transaksi atau membuka situs eksternal.USER_CANCELED: Jangan lanjutkan membuka situs eksternal. PanggillaunchExternalLink()lagi saat Anda mencoba mengarahkan pengguna ke luar aplikasi.BILLING_UNAVAILABLE: Transaksi tidak memenuhi syarat untuk link konten eksternal sehingga tidak 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 ditangani dengan kebijakan percobaan ulang yang sesuai. JikaSERVICE_DISCONNECTEDditampilkan, buat kembali koneksi dengan Google Play sebelum mencoba lagi.
Menguji link konten eksternal
Penguji lisensi harus digunakan untuk menguji integrasi penawaran eksternal Anda. Anda tidak akan menerima invoice untuk transaksi yang telah dimulai oleh akun penguji lisensi. Lihat Menguji penagihan dalam aplikasi dengan pemberian lisensi aplikasi untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi penguji lisensi.
Langkah berikutnya
Setelah menyelesaikan integrasi dalam aplikasi, Anda siap untuk mengintegrasikan backend.