In-app Billing API

In-app Billing Version 3 API memudahkan Anda mengintegrasikan Penagihan dalam Aplikasi ke aplikasi Anda. Fitur di versi ini mencakup alur pembelian sinkron yang ditingkatkan, API yang memungkinkan Anda melacak kepemilikan barang yang bisa dikonsumsi, dan pembuatan cache data pembelian dalam aplikasi.

Jenis Produk

Tentukan produk Anda menggunakan Google Play Developer Console, termasuk jenis produk, SKU, harga, deskripsi, dan sebagainya. Untuk informasi selengkapnya, lihat Mengelola Penagihan dalam Aplikasi. Version 3 API mendukung produk dan langganan dalam aplikasi terkelola.

Produk dalam Aplikasi Terkelola

Produk dalam aplikasi terkelola adalah item yang informasi kepemilikannya dilacak dan dikelola oleh Google Play. Saat pengguna membeli item dalam aplikasi yang terkelola, Google Play menyimpan informasi pembelian untuk setiap item dengan dasar per-pengguna. Ini memungkinkan Anda nanti melakukan kueri Google Play kapan saja untuk memulihkan status item yang telah dibeli pengguna. Informasi ini ditetapkan di server Google Play meskipun pengguna mencopot pemasangan aplikasi atau jika pengguna mengubah perangkat.

Jika menggunakan Version 3 API, Anda juga bisa mengonsumsi item terkelola di dalam aplikasi Anda. Biasanya, Anda mengimplementasikan konsumsi untuk item yang bisa dibeli berkali-kali (misalnya mata uang, daya, atau mantra ajaib dalam game). Setelah dibeli, item terkelola tidak bisa dibeli lagi sampai Anda mengonsumsi item, dengan mengirimkan permintaan konsumsi ke Google Play. Untuk mengetahui selengkapnya tentang konsumsi produk dalam aplikasi, lihat Mengonsumsi Item.

Langganan

Langganan adalah jenis produk yang ditawarkan di Penagihan dalam Aplikasi yang memungkinkan Anda menjual materi, layanan, atau fitur kepada pengguna dari dalam aplikasi Anda dengan penagihan otomatis yang diulang setiap bulan atau tahun. Anda bisa menjual langganan untuk hampir semua jenis konten digital, dari jenis aplikasi atau game apa pun. Untuk memahami cara kerja langganan, lihat Langganan Penagihan dalam Aplikasi.

Dengan Version 3 API, Anda bisa menggunakan alur pembelian yang sama untuk membeli langganan dan mengambil informasi pembelian langganan seperti produk dalam aplikasi. Untuk contoh kode, lihat Mengimplementasikan Langganan.

Penting: Tidak seperti produk dalam aplikasi, langganan tidak bisa dikonsumsi.

Membeli Item

Gambar 1. Urutan dasar untuk permintaan pembelian.

Alur pembelian umum pada Version 3 API adalah:

  1. Aplikasi Anda mengirimkan permintaan isBillingSupported ke Google Play untuk menentukan apakah versi target In-app Billing API yang Anda gunakan didukung.
  2. Saat aplikasi Anda dimulai dan pengguna dalam proses masuk, sebaiknya periksa di Google Play untuk menentukan item apa saja yang dimiliki oleh pengguna. Untuk melakukan kueri pembelian dalam aplikasi pengguna, kirimkan permintaan getPurchases. Jika permintaan berhasil, Google Play mengembalikan Bundle yang berisi daftar ID produk item yang dibeli, daftar detail masing-masing pembelian, dan daftar tanda tangan untuk pembelian.
  3. Biasanya, Anda disarankan memberi tahu pengguna produk apa saja yang tersedia untuk dibeli. Untuk melakukan kueri detail produk dalam aplikasi yang Anda definisikan di Google Play, aplikasi Anda bisa mengirimkan permintaan getSkuDetails . Anda harus menentukan daftar ID produk di permintaan kueri. Jika permintaan berhasil, Google Play mengembalikan Bundle yang berisi detail produk, yang mencakup harga, judul, deskripsi, dan jenis pembelian produk.
  4. Jika produk dalam aplikasi tidak dimiliki oleh pengguna, Anda bisa memulai pembelian untuk produk tersebut. Untuk memulai permintaan pembelian, aplikasi Anda akan mengirimkan permintaan getBuyIntent, dengan menentukan ID produk item yang akan dibeli, bersama parameter lain. Anda harus merekam ID produk saat membuat produk dalam aplikasi baru di Developer Console.
    1. Google Play mengembalikan Bundle berisi PendingIntent yang digunakan aplikasi untuk memulai UI checkout untuk pembelian.
    2. Aplikasi Anda meluncurkan maksud yang tertunda dengan memanggil metode startIntentSenderForResult.
    3. Saat alur checkout selesai (yaitu, saat pengguna berhasil membeli item atau membatalkan pembelian), Google Play akan mengirimkan Intent respons ke metode onActivityResult Anda. Kode hasil dari onActivityResult memiliki kode hasil yang menandai apakah pembelian berhasil atau dibatalkan. Intent respons berisi informasi tentang item yang dibeli, termasuk String purchaseToken yang dibuat oleh Google Play untuk mengidentifikasi transaksi pembelian ini secara unik. Intent Juga berisi tanda tangan pembelian, yang ditandatangani dengan kunci developer pribadi Anda.

Untuk mengetahui selengkapnya tentang respons server dan panggilan Version 3 API, lihat Referensi Penagihan dalam Aplikasi.

Mengonsumsi Produk dalam Aplikasi

Anda bisa menggunakan mekanisme konsumsi untuk melacak kepemilikan produk dalam aplikasi pengguna.

Di Versi 3, semua produk dalam aplikasi dikelola. Artinya, kepemilikan pengguna atas semua pembelian item dalam aplikasi dikelola oleh Google Play dan aplikasi Anda dapat melakukan kueri informasi pembelian pengguna bila diperlukan. Bila pengguna berhasil membeli produk dalam aplikasi, pembelian tersebut akan dicatat di Google Play. Setelah produk dalam aplikasi dibeli, produk akan dianggap sebagai "dimiliki". Produk dalam aplikasi dengan status "dimiliki" tidak bisa dibeli dari Google Play. Anda harus mengirimkan permintaan konsumsi untuk produk dalam aplikasi yang "dimiliki" sebelum Google Play menjadikannya tersedia untuk dibeli lagi. Mengonsumsi produk dalam aplikasi mengembalikannya ke status "tidak dimiliki" dan membuang data pembelian sebelumnya.

Gambar 2. Urutan dasar untuk permintaan konsumsi.

Untuk mengambil daftar produk yang dimiliki oleh pengguna, aplikasi Anda mengirimkan panggilan getPurchases ke Google Play. Aplikasi Anda bisa membuat permintaan konsumsi dengan mengirimkan panggilan consumePurchase. Di argumen permintaan, Anda harus menentukan String purchaseToken unik produk dalam aplikasi yang Anda peroleh dari Google Play saat dibeli. Google Play mengembalikan kode status yang menandakan konsumsi telah berhasil direkam.

Produk dalam Aplikasi yang Bisa Dikonsumsi dan Tidak Bisa Dikonsumsi

Anda bisa memutuskan apakah Anda ingin menangani produk dalam aplikasi sebagai item yang tidak bisa dikonsumsi atau bisa dikonsumsi.

Item yang tidak bisa dikonsumsi
Biasanya, Anda tidak disarankan mengimplementasikan konsumsi untuk produk dalam aplikasi yang hanya bisa dibeli sekali dalam aplikasi Anda dan menyediakan manfaat permanen. Setelah dibeli, item ini akan dikaitkan secara permanen ke akun Google pengguna. Contoh produk dalam aplikasi yang tidak bisa dikonsumsi adalah peningkatan ke versi premium atau paket level.
Item yang bisa dikonsumsi
Sebaliknya, Anda bisa mengimplementasikan konsumsi untuk item yang disediakan untuk dibeli berkali-kali. Umumnya, item ini menyediakan efek sementara tertentu. Misalnya, karakter dalam game pengguna bisa mendapatkan poin nyawa atau mendapatkan koin emas ekstra di inventarisnya. Menghabiskan manfaat atau efek item yang dibeli dalam aplikasi Anda disebut sebagai menyediakan produk dalam aplikasi. Anda bertanggung jawab mengontrol dan melacak bagaimana produk dalam aplikasi disediakan kepada pengguna.

Penting: Sebelum menyediakan produk dalam aplikasi yang bisa dikonsumsi dalam aplikasi, Anda harus mengirimkan permintaan konsumsi ke Google Play dan menerima respons berhasil yang menandakan bahwa konsumsi telah dicatat.

Mengelola pembelian yang bisa dikonsumsi dalam aplikasi Anda

Berikut adalah alur dasar untuk membeli produk dalam aplikasi yang bisa dikonsumsi:

  1. Luncurkan alur pembelian dengan panggilan getBuyIntent
  2. Dapatkan respons Bundle dari Google Play yang menandakan bahwa pembelian berhasil diselesaikan.
  3. Jika pembelian berhasil, konsumsi pembelian dengan membuat panggilan consumePurchase.
  4. Dapatkan kode respons dari Google Play yang menandakan bahwa konsumsi berhasil diselesaikan.
  5. Jika konsumsi berhasil, sediakan produk di aplikasi Anda.

Setelah itu, saat pengguna memulai atau dalam proses masuk ke dalam aplikasi Anda, Anda harus memeriksa apakah pengguna sudah memiliki produk dalam aplikasi yang bisa dikonsumsi yang belum disediakan, jika demikian, pastikan untuk mengonsumsi dan menyediakan item tersebut. Berikut alur mulai aplikasi yang disarankan jika Anda menerapkan produk dalam aplikasi yang bisa dikonsumsi dalam aplikasi Anda:

  1. Kirimkan permintaan getPurchases untuk melakukan kueri produk dalam aplikasi yang dimiliki kepada pengguna.
  2. Jika ada produk dalam aplikasi yang bisa dikonsumsi, konsumsi item dengan memanggil consumePurchase. Langkah ini diperlukan karena aplikasi mungkin telah menyelesaikan pesanan pembelian (PO) untuk item yang bisa dikonsumsi, tetapi berhenti atau terputus sebelum aplikasi berkesempatan mengirimkan permintaan konsumsi.
  3. Dapatkan kode respons dari Google Play yang menandakan bahwa konsumsi berhasil diselesaikan.
  4. Jika konsumsi berhasil, sediakan produk di aplikasi Anda.

Pembuatan Cache Lokal

Karena klien Google Play sekarang membuat cache informasi Penagihan dalam Aplikasi secara lokal di perangkat, Anda bisa menggunakan Version 3 API untuk melakukan kueri informasi ini lebih sering, misalnya melalui panggilan getPurchases. Tidak seperti versi API sebelumnya, banyak panggilan Version 3 API yang akan dilayani melalui pencarian cache, bukan melalui koneksi jaringan ke Google Play, yang secara signifikan mempercepat waktu respons API.