Panduan ini menjelaskan cara berintegrasi dengan API untuk mendukung penawaran eksternal di aplikasi dan wilayah yang memenuhi syarat. Untuk mempelajari lebih lanjut program penawaran eksternal termasuk persyaratan kelayakan dan cakupan geografis. persyaratan program.
Penyiapan Play Billing Library
Untuk menggunakan API penawaran eksternal, menambahkan dependensi Play Billing Library versi 6.2.1 atau yang lebih baru ke aplikasi Android Anda. Jika Anda perlu bermigrasi dari versi sebelumnya, ikuti petunjuk dalam panduan migrasi sebelum Anda mencoba menerapkannya penawaran eksternal.
Menghubungkan ke Google Play
Langkah pertama dalam proses integrasi sama dengan langkah-langkah yang dijelaskan di
panduan integrasi penagihan, dengan beberapa modifikasi saat
melakukan inisialisasi BillingClient
:
- Anda perlu memanggil metode baru untuk menunjukkan bahwa Anda ingin menggunakan
penawaran:
enableExternalOffer
.
Contoh berikut menunjukkan inisialisasi BillingClient
dengan modifikasi
ini:
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableExternalOffer()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableExternalOffer()
.build();
Setelah melakukan inisialisasi BillingClient
, Anda harus menghubungkan ke
Google Play seperti yang dijelaskan dalam panduan integrasi.
Periksa ketersediaan
Aplikasi Anda harus mengonfirmasi bahwa penawaran eksternal tersedia dengan menelepon
isExternalOfferAvailableAsync
API ini menampilkan BillingResponseCode.OK
jika penawaran eksternal tersedia.
Lihat penanganan respons untuk mengetahui detail tentang cara aplikasi Anda seharusnya
menanggapi kode respons lain.
Kotlin
billingClient.isExternalOfferAvailableAsync(
object : ExternalOfferAvailabilityListener {
override fun onExternalOfferAvailabilityResponse(
billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external offers unavailable, etc.
return
}
// External offers are available. Continue with steps in the
// guide.
})
Java
billingClient.isExternalOfferAvailableAsync(
new ExternalOfferAvailabilityListener() {
@Override
public void onExternalOfferAvailabilityResponse(
BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external offers being unavailable, etc.
return;
}
// External offers are available. Continue with steps in the
// guide.
}
});
Menyiapkan token transaksi eksternal
Untuk melaporkan transaksi eksternal ke Google Play, Anda harus memiliki
token transaksi yang dibuat dari Play Billing Library. Eksternal baru
token transaksi harus dibuat setiap kali pengguna mengunjungi
situs Anda melalui API penawaran eksternal. Hal ini dapat dilakukan dengan memanggil metode
API createExternalOfferReportingDetailsAsync
. Token ini harus
yang dibuat tepat sebelum pengguna diarahkan ke luar aplikasi. Seharusnya
tidak pernah di-cache dan yang baru harus dibuat setiap kali pengguna diarahkan
di luar aplikasi.
Kotlin
billingClient.createExternalOfferReportingDetailsAsync(
object : ExternalOfferReportingDetailsListener {
override fun onExternalOfferReportingDetailsResponse(
billingResult: BillingResult,
externalOfferReportingDetails: ExternalOfferReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
externalOfferReportingDetails?.externalTransactionToken
// Persist the transaction token locally. Pass it to the external
// website when showExternalOfferInformationDialog is called.
}
})
Java
billingClient.createExternalOfferReportingDetailsAsync(
new ExternalOfferReportingDetailsListener() {
@Override
public void onExternalOfferReportingDetailsResponse(
BillingResult billingResult,
@Nullable ExternalOfferReportingDetails
externalOfferReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
externalOfferReportingDetails.getExternalTransactionToken();
// Persist the external transaction token locally. Pass it to the
// external website when showExternalOfferInformationDialog is
// called.
}
});
Dialog informasi untuk pengguna
Untuk berintegrasi dengan penawaran eksternal, aplikasi Anda yang memenuhi syarat harus menampilkan informasi
yang membantu pengguna memahami bahwa mereka akan diarahkan ke luar
aplikasi ke situs web eksternal. Layar informasi harus
ditampilkan kepada pengguna dengan
memanggil showExternalOfferInformationDialog
API sebelum menautkannya ke
penawaran eksternal.
Kotlin
// An activity reference from which the external offers information dialog
// will be launched.
val activity : Activity = ...;
val listener : ExternalOfferInformationDialogListener =
ExternalOfferInformationDialogListener {
override fun onExternalOfferInformationDialogResponse(
billingResult: BillingResult){
// Check billingResult
}
}
val billingResult = billingClient.showExternalOfferInformationDialog(
activity, listener)
Java
// An activity reference from which the external offers information dialog
// will be launched.
Activity activity = ...;
ExternalOfferInformationDialogListener listener =
new ExternalOfferInformationDialogListener() {
@Override
public void onExternalOfferInformationDialogResponse(
BillingResult billingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
}
// Open the external website, passing along the external transaction
// token as a URL parameter. If the user purchases an item, be sure
// to report the transaction to Google Play.
}
}
BillingResult billingResult =
billingClient.showExternalOfferInformationDialog(activity, listener);
Jika metode ini menampilkan BillingResponseCode.OK
, aplikasi Anda dapat melanjutkan ke
mengarahkan pengguna ke situs web eksternal. Jika metode menampilkan
BillingResponseCode.USER_CANCELED
, aplikasi Anda tidak boleh terus membuka
situs Anda.
Melaporkan transaksi ke Google Play
Semua transaksi eksternal harus dilaporkan ke Google Play
dengan memanggil Google Play Developer API dari backend Anda. Transaksi eksternal
harus dilaporkan saat memberikan
externalTransactionToken
diperoleh menggunakan
API createExternalOfferReportingDetailsAsync
. Jika pengguna membuat beberapa
pembelian, Anda dapat menggunakan
externalTransactionToken
untuk melaporkan setiap pembelian. Untuk mempelajari cara melaporkan
transaksi, lihat panduan integrasi backend.
Penanganan respons
Saat terjadi error, metode isExternalOfferAvailableAsync
,
createExternalOfferReportingDetailsAsync
dan
showExternalOfferInformationDialog
mungkin menampilkan respons selain
BillingResponseCode.OK
. Pertimbangkan untuk menangani kode respons ini seperti berikut:
ERROR
: Ini adalah error internal. Jangan lanjutkan dengan transaksi atau membuka situs web eksternal. Coba lagi dengan memanggilshowExternalOfferInformationDialog()
untuk menampilkan informasi kepada pengguna saat Anda mencoba mengarahkan pengguna ke luar .FEATURE_NOT_SUPPORTED
: API penawaran eksternal tidak didukung oleh Play Store di perangkat saat ini. Jangan lanjutkan dengan transaksi atau membuka situs web eksternal.USER_CANCELED
: Tidak melanjutkan membuka situs eksternal. TeleponshowExternalOfferInformationDialog()
lagi untuk menampilkan informasi kepada pengguna saat Anda mencoba mengarahkan pengguna ke luar aplikasi.BILLING_UNAVAILABLE
: Transaksi tidak memenuhi syarat untuk penawaran eksternal dan karenanya tidak boleh melanjutkan program ini. Hal ini disebabkan pengguna tidak berada di negara yang memenuhi syarat untuk program ini atau akun Anda memiliki belum berhasil terdaftar dalam program. Jika yang terakhir adalah, 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 yang bersifat sementara yang harus ditangani dengan kebijakan percobaan ulang yang sesuai. Jika terjadiSERVICE_DISCONNECTED
, buat kembali koneksi dengan Google Play sebelum mencoba lagi.
Uji penawaran eksternal
Penguji lisensi harus digunakan untuk menguji integrasi penawaran eksternal 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.