Panduan ini ditujukan untuk aplikasi web yang dipaketkan sebagai Aktivitas Web Tepercaya. Untuk aplikasi Android yang ditulis dalam Kotlin atau Java, lihat dokumentasi Layanan Penagihan Google Play.
Aplikasi di Google Play yang menjual produk digital atau langganan harus menggunakan Layanan Penagihan Google Play. Dalam Aktivitas Web Tepercaya, Anda berintegrasi dengannya menggunakan API web berikut, yang tersedia di Chrome 101 dan yang lebih baru di Android dan ChromeOS:
- Digital Goods API: Mengambil detail produk dan pembelian pengguna.
- Payment Request API: Memulai alur pembelian.
Persyaratan
Untuk menyiapkan Layanan Penagihan Google Play, Anda memerlukan hal berikut:
- Akun Developer Google Play dan akun penjual Google Payments yang ditautkan satu sama lain.
- Listingan Google Play Store dengan rilis di jalur publik, pengujian tertutup, atau pengujian internal.
- Produk dan langganan aplikasi Anda yang dikonfigurasi di Konsol Play.
- Project Aktivitas Web Tepercaya dengan konfigurasi Digital Asset Links yang berfungsi.
Jangan mengenakan tagihan kepada pengguna untuk mendownload aplikasi Anda dari Google Play Store. PWA Anda masih tersedia di web, sehingga download berbayar tidak membatasi akses. Sebagai gantinya, jual fitur atau konten dengan pembelian dalam aplikasi atau langganan.
Mengaktifkan Layanan Penagihan Play di project Android Anda
Jika Anda mem-build aplikasi dengan Bubblewrap, aktifkan fitur playBilling di
twa-manifest.json di root project Anda:
"features": {
"playBilling": {
"enabled": true
}
}
Kemudian, jalankan bubblewrap update diikuti dengan bubblewrap build, lalu upload paket Android baru ke Google Play Store.
Jika Anda mem-build aplikasi di Android Studio, tambahkan
library Play Billing Android Browser Helper. Untuk perubahan DelegationService dan AndroidManifest.xml yang diperlukan, lihat demo twa-play-billing.
Memeriksa dukungan Layanan Penagihan Google Play
Panggil getDigitalGoodsService() dengan ID Google Play Store,
https://play.google.com/billing. Jika metode tidak ada atau panggilan gagal,
gunakan alur pembayaran lain:
if ('getDigitalGoodsService' in window) {
try {
const service =
await window.getDigitalGoodsService('https://play.google.com/billing');
// Google Play Billing is available.
} catch (error) {
// Google Play Billing isn't available. Use another payment flow.
}
}
Menampilkan detail produk
Gunakan getDetails() untuk mengambil judul, deskripsi, dan harga untuk ID produk Anda, sehingga harga yang Anda tampilkan sesuai dengan Google Play Store:
const details = await service.getDetails(['shiny_sword', 'gem']);
for (const item of details) {
const localizedPrice = new Intl.NumberFormat(
navigator.language,
{style: 'currency', currency: item.price.currency}
).format(item.price.value);
renderProductDetails(
item.itemId, item.title, localizedPrice, item.description);
}
Digital Goods API tidak dapat mencantumkan ID produk Anda. Untuk mengkuerinya dari backend, gunakan Google Play Developer API.
Melakukan pembelian
Buat PaymentRequest dengan https://play.google.com/billing sebagai metode pembayaran dan ID produk sebagai sku di data. Layanan Penagihan Google Play menggunakan harga
dari Konsol Play, sehingga total diperlukan, tetapi diabaikan.
Setelah show() selesai, kirim token pembelian ke backend Anda untuk
memverifikasi dan mengonfirmasi pembelian. Jika Anda tidak mengonfirmasi pembelian
dalam waktu tiga hari, Google Play akan mengembalikan dana pengguna dan
mencabut pembelian.
async function makePurchase(service, sku) {
const paymentMethods = [{
supportedMethods: 'https://play.google.com/billing',
data: {sku},
}];
// Required by the Payment Request API, but ignored by Google Play Billing.
const paymentDetails = {
total: {label: 'Total', amount: {currency: 'USD', value: '0'}},
};
const request = new PaymentRequest(paymentMethods, paymentDetails);
try {
const response = await request.show();
const {purchaseToken} = response.details;
if (await acknowledgePurchaseOnBackend(purchaseToken, sku)) {
// Optional: consume the purchase so the user can buy the item again.
await service.consume(purchaseToken);
await response.complete('success');
} else {
await response.complete('fail');
}
} catch (error) {
// An AbortError usually means the user canceled the purchase.
}
}
Memeriksa pembelian pengguna
Gunakan listPurchases() untuk menemukan item yang dimiliki pengguna, seperti langganan
aktif, pembelian yang belum digunakan, atau kode promo yang ditukarkan. Verifikasi setiap
pembelian di backend Anda, dan konfirmasi pembelian yang belum Anda konfirmasi:
const purchases = await service.listPurchases();
for (const p of purchases) {
await verifyOrAcknowledgePurchaseOnBackend(p.purchaseToken, p.itemId);
// Update the UI with items the user is entitled to.
}
Menguji integrasi Anda
Untuk menguji di perangkat Android sebelum memublikasikan ke Google Play Store, ikuti langkah-langkah berikut:
- Gunakan Android 9 atau yang lebih baru dengan opsi developer diaktifkan.
- Di Chrome, buka
chrome://flagsdan aktifkan#enable-debug-for-store-billing. - Menayangkan situs Anda melalui HTTPS. Digital Goods API tidak tersedia melalui HTTP.
Jika aplikasi Anda diinstal dari Google Play Store, Anda tidak memerlukan flag. Untuk menguji dengan akun pengujian dan produk pengujian, lihat Menguji integrasi Google Play Billing Library Anda.
Langkah berikutnya
- Verifikasi pembelian di backend Anda dengan library klien Google Play Developer API.
- Pelajari cara menjual langganan.
- Siapkan notifikasi developer real-time untuk melacak perubahan langganan.