Menggunakan Layanan Penagihan Google Play

Dipublikasikan: 2 Desember 2020

Selain memungkinkan aplikasi Anda menjual barang dan langganan digital di Play Store, Layanan Penagihan Google Play menawarkan alat untuk mengelola katalog, harga, dan langganan, laporan yang berguna, serta alur checkout yang didukung oleh Play Store yang sudah dikenal pengguna Anda. Ini adalah persyaratan untuk aplikasi yang dipublikasikan di Play Store yang menjual produk digital.

Google Play Billing API memiliki terminologi sendiri dan menyertakan komponen klien dan backend. Bagian ini hanya mencakup sebagian kecil API yang khusus untuk menggunakan Digital Goods API dan Aktivitas Web Tepercaya. Pastikan untuk membaca dokumentasi Layanan Penagihan Google Play dan memahami konsepnya sebelum mengintegrasikannya ke dalam aplikasi produksi.

Alur dasar

Untuk menyediakan barang digital dengan Play Store, konfigurasikan katalog Anda di Play Store dan hubungkan Play Store sebagai metode pembayaran dari PWA Anda.

Anda dapat melakukannya di antarmuka Play Store sebagai berikut:

  1. Klik Produk di menu Konsol Play. Lihat produk dan langganan dalam aplikasi yang sudah ada. Langkah 1: Temukan bagian Produk.
  2. Klik Buat produk untuk menambahkan produk baru. Langkah 2: Buka antarmuka Produk untuk menambahkan produk baru.
  3. Tambahkan ID produk, nama, deskripsi, dan harga. Buat ID produk yang bermakna dan mudah diingat, karena Anda akan memerlukannya nanti. ID tidak dapat diubah setelah dibuat. Banyak kolom kosong untuk setiap produk.
  4. Jika membuat langganan, Anda juga harus menentukan periode penagihan. Anda dapat mencantumkan manfaat langganan dan menambahkan fitur, seperti uji coba gratis, harga perkenalan, masa tenggang, dan opsi berlangganan ulang.
  5. Klik Aktifkan untuk menyediakan produk.

Jika mau, Anda dapat menambahkan produk dengan Play Developers API.

Setelah katalog Anda dikonfigurasi, langkah berikutnya adalah mengonfigurasi alur checkout dari PWA. Gunakan kombinasi Digital Goods API dan Payment Request API.

Mengambil harga produk dengan Digital Goods API

Saat menggunakan Layanan Penagihan Google Play, pastikan harga yang ditampilkan kepada pengguna cocok dengan harga dari listingan Play Store. Menyinkronkan harga tersebut secara manual tidak mungkin dilakukan, sehingga Digital Goods API menyediakan cara bagi aplikasi web untuk mengkueri penyedia pembayaran yang mendasarinya untuk mengetahui harga:

// The SKU for the product, as defined in the Play Store interface
async function populatePrice(sku) {
  try {
    // Check if the Digital Goods API is supported by the browser.
    if (window.getDigitalGoodsService) {
      // The Digital Goods API can be supported by other Payments provider.
      // In this case, we're retrieving the Google Play Billing provider.
      const service =
          await window.getDigitalGoodsService("https://play.google.com/billing");

      // Fetch product details using the `getDetails()` method.
      const details = await service.getDetails([sku]);

      if (details.length === 0) {
        console.log(`Could not get SKU: "${sku}".`);
        return false;
      }

      // The details contain both the price and the currenncy.
      item = details[0];
      const value = item.price.value;
      const currency = item.price.currency;

      const formattedPrice = new Intl.NumberFormat(navigator.language, {
        style: 'currency', currency: currency }).format(value);

      // Display the price to the user.
      document.getElementById("price").innerHTML = formattedPrice;
    } else {
      console.error("Could not get price for SKU \"" + sku + "\".");
    }
  } catch (error) {
    console.log(error);
  }
  return false;
}

Anda dapat mendeteksi dukungan untuk Digital Goods API dengan memeriksa apakah getDigitalGoodsService() tersedia di objek window.

Kemudian, panggil window.getDigitalGoodsService() dengan ID Layanan Penagihan Google Play sebagai parameter. Tindakan ini akan menampilkan instance layanan untuk Layanan Penagihan Google Play dan vendor lain dapat menerapkan dukungan untuk Digital Goods API dan memiliki ID yang berbeda.

Terakhir, panggil getDetails() pada referensi ke objek Layanan Penagihan Google Play yang meneruskan SKU untuk item sebagai parameter. Metode ini menampilkan objek detail yang berisi harga dan mata uang untuk item yang dapat ditampilkan kepada pengguna.

Memulai alur pembelian

Payment Request API memungkinkan alur pembelian di web dan juga digunakan untuk integrasi Penagihan Google Play. Lihat Cara Kerja Payment Request API ini untuk mempelajari lebih lanjut jika Anda baru menggunakan Payment Request API.

Untuk menggunakan API dengan Layanan Penagihan Google Play, Anda perlu menambahkan instrumen pembayaran, yang memiliki metode yang didukung yang disebut https://play.google.com/billing. Tambahkan SKU sebagai bagian dari data untuk instrumen:

const supportedInstruments = [{
  supportedMethods: "https://play.google.com/billing",
  data: {
    sku: sku
  }
}];

Kemudian, build objek PaymentRequest seperti biasa dan gunakan API seperti biasa

const request = new PaymentRequest(supportedInstruments, details);

Mengonfirmasi pembelian

Setelah transaksi selesai, gunakan Digital Goods API untuk mengonfirmasi pembayaran. Objek respons dari PaymentRequest berisi token yang dapat Anda gunakan untuk mengonfirmasi transaksi:

const response = await request.show();
const token = response.details.token;
const service = await window.getDigitalGoodsService("https://play.google.com/billing");
await service.acknowledge(token, 'onetime');

Digital Goods API dan Payment Request API tidak memiliki pengetahuan tentang identitas pengguna. Oleh karena itu, Anda dapat mengaitkan pembelian dengan pengguna di backend dan memastikan mereka memiliki akses ke item yang dibeli. Saat mengaitkan pembelian ke pengguna, jangan lupa untuk menyimpan token pembelian, karena Anda mungkin memerlukannya untuk memverifikasi apakah pembelian telah dibatalkan atau dikembalikan dananya, atau apakah langganan masih aktif. Lihat Real Time Developer Notifications API dan Google Play Developer API karena keduanya menyediakan endpoint untuk menangani kasus tersebut di backend Anda.

Memeriksa hak yang ada

Pengguna mungkin telah menukarkan kode promo atau mungkin sudah memiliki langganan untuk produk Anda. Untuk memvalidasi bahwa pengguna memiliki hak yang sesuai, Anda dapat memanggil perintah listPurchases() di layanan barang digital. Tindakan ini akan menampilkan semua pembelian yang dilakukan pelanggan di aplikasi Anda. Ini juga akan menjadi tempat untuk mengonfirmasi pembelian yang belum dikonfirmasi untuk memastikan pengguna menukarkan haknya dengan benar.

const purchases = await itemService.listPurchases();
for (p of purchases) {
  if (!p.acknowledged) {
    await itemService.acknowledge(p.purchaseToken, 'onetime');
  }
}