Panduan ini menjelaskan cara menggunakan Google Play Developer API untuk membuat dan mengelola katalog produk untuk aplikasi Play.
Untuk menjual produk di aplikasi melalui sistem penagihan Google Play, Anda memerlukan untuk menyiapkan katalog yang berisi semua produk yang ingin Anda sediakan oleh pengguna untuk dibeli. Ini dapat dilakukan melalui Konsol Play, atau Anda dapat mengotomatiskan pengelolaan katalog menggunakan Google Play Developer API. Otomatisasi dapat membantu memastikan katalog Anda selalu terbaru, dan dapat diskalakan ke katalog besar di mana koordinasi manual tidak praktis. Dalam panduan ini, Anda akan melihat cara menggunakan Play Developer API untuk membuat dan mengelola katalog produk untuk aplikasi Play. Tinjau panduan Persiapan kami untuk mendapatkan petunjuk tentang cara menyiapkan Google Play Developer API untuk integrasi backend Anda.
Katalog Management API
Untuk membaca tentang berbagai jenis produk yang dapat Anda jual dengan aplikasi sistem penagihan, baca Pahami jenis produk dalam aplikasi dan pertimbangan katalog. Google menawarkan dua set API utama untuk pengelolaan katalog di Play, sesuai dengan dua kategori produk utama:
- Produk sekali beli
- Produk langganan
Produk sekali beli
Endpoint inappproducts
memungkinkan Anda mengelola satu kali
dari backend Anda. Termasuk membuat, memperbarui, dan menghapus
produk, dan mengelola harga dan ketersediaan.
Bergantung pada cara Anda menangani pembelian produk sekali beli, Anda akan membuat model
produk habis pakai (dapat dibeli sebanyak yang diinginkan) atau produk
hak (tidak dapat dilakukan dua kali oleh pengguna yang sama). Anda dapat memutuskan
produk sekali beli harus dapat dikonsumsi atau tidak.
Produk langganan
Endpoint monetization.subscriptions
membantu Anda mengelola langganan
produk dari backend developer Anda. Anda dapat melakukan hal-hal
seperti membuat, memperbarui,
dan menghapus langganan, atau mengontrol ketersediaan dan harga regional mereka.
Selain endpoint monetization.subscriptions
, kami juga menyediakan
monetization.subscriptions.basePlans
dan
monetization.subscriptions.basePlans.offers
untuk mengelola masing-masing
langganan paket dasar dan penawaran.
Metode batch
inappproducts
dan monetization.subscriptions
endpoint menyediakan sejumlah metode batch
yang memungkinkan pengambilan atau pengelolaan
ke 100 entity di aplikasi yang sama secara bersamaan.
Metode batch, jika digunakan dengan toleransi latensi yang diaktifkan, mendukung dan sangat berguna bagi developer katalog besar untuk pembuatan katalog atau rekonsiliasi katalog.
Memperbarui latensi propagasi versus throughput
Setelah permintaan pembuatan atau modifikasi produk selesai, perubahan mungkin tidak
terlihat langsung oleh pengguna akhir di perangkat mereka karena jaringan atau backend
pemrosesan yang tertunda.
Secara default, semua permintaan modifikasi produk bersifat sensitif terhadap latensi. Artinya
dan dioptimalkan untuk propagasi cepat
melalui sistem backend, biasanya
diterapkan di perangkat pengguna
akhir dalam hitungan menit. Namun, ada batas per jam
terkait jumlah permintaan modifikasi tersebut.
Jika Anda perlu membuat atau memperbarui banyak produk (misalnya, selama
pembuatan katalog besar awal), Anda dapat menggunakan metode batch dengan
latencyTolerance
kolom ditetapkan ke
PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT
.
Tindakan ini akan meningkatkan throughput update secara signifikan. Update yang toleran terhadap latensi
akan memerlukan waktu hingga 24 jam untuk diterapkan ke perangkat pengguna akhir.
Konfigurasi kuota
Ada beberapa batas kuota yang perlu Anda ketahui saat menggunakan Developer Play API untuk mengelola katalog produk Anda:
- Google Play Developer API memiliki batas default 200.000 kueri per mereka. Batas kuota ini berlaku untuk agregasi penggunaan di semua endpoint, termasuk API pengelolaan katalog.
- Endpoint perubahan produk juga menerapkan batas 7.200 kueri per dalam jam kerja lokal mereka. Ini adalah batasan tunggal untuk produk sekali beli dan langganan dan di semua permintaan modifikasi, termasuk pembuatan, update, pengaktifan, hapus. Panggilan metode modifikasi batch dihitung sebagai satu kueri untuk kuota ini, terlepas dari jumlah permintaan individual yang disertakan atau latensinya sensitivitas.
- Modifikasi yang sensitif terhadap latensi juga memiliki batas 7.200 modifikasi per jam. Untuk metode batch, setiap permintaan modifikasi bertingkat akan dihitung secara terpisah untuk tujuan kuota ini. Kuota ini berisi praktik implikasi hanya untuk pengguna batch API yang melakukan latensi yang sensitif pembaruan, seperti dalam kasus lainnya, kuota 2 akan habis sebelum atau pada saat yang sama sebanyak kuota ini.
Berikut adalah beberapa contoh ilustratif untuk memahami penggunaan kuota permintaan yang berbeda:
- Satu permintaan
get
untuk mengambil satu item akan menggunakan 1 token dari kuota 1 dan tidak ada token kuota 2 dan 3 (karena hanya terkait dengan endpoint modifikasi). - Permintaan batch
get
untuk mengambil hingga 100 item juga akan menggunakan 1 token kuota 1 dan tidak ada token kuota 2 dan 3. - Satu permintaan
modification
untuk satu item akan menggunakan 1 token dari kuota 1 , 1 token kuota 2. Jika permintaan tersebut sensitif terhadap latensi, permintaan juga akan menggunakan 1 token dari kuota 3. Karena kuota C memiliki batas yang sama dengan kuota 2, maka tidak memiliki implikasi praktis bagi pengguna yang hanya menggunakan satu modifikasi metode. - Permintaan batch
modification
untuk 100 item yang toleran latensi akan menggunakan 1 token kuota 1, 1 token kuota 2. Pengaturan kuota ini seharusnya cukup untuk agar katalog Anda tetap diperbarui, tetapi jika algoritma Anda tidak menyadari kuota ini dan melampaui tarif ini, Anda mungkin akan mendapatkan error per panggilan tambahan. - Permintaan
modification
batch untuk 100 item sensitif latensi akan menggunakan 1 token kuota 1, 1 token kuota 2, dan 100 token kuota 3.
Rekomendasi penggunaan Catalog Management API
Dengan mematuhi pedoman ini, Anda mengoptimalkan interaksi dengan API, memastikan pengalaman pengelolaan katalog yang lancar dan efisien.
Memantau penggunaan Anda
Anda harus memahami proses penggunaan yang berat. Misalnya, pada awal integrasi Anda, endpoint pengelolaan katalog Anda cenderung akan menggunakan lebih banyak kuota untuk membuat katalog awal lengkap Anda dan hal ini berpotensi memengaruhi penggunaan produksi endpoint lain seperti purchase status API jika Anda mendekati batas penggunaan keseluruhan. Anda perlu memantau pemakaian kuota untuk memastikan bahwa Anda tidak melebihi kuota API. Ada beberapa cara untuk memantau penggunaan. Misalnya, Anda dapat menggunakan dasbor kuota Google Cloud API, atau alat pemantauan API pihak ketiga pilihan Anda.
Mengoptimalkan penggunaan kuota API
Mengoptimalkan pemakaian rasio sangat direkomendasikan untuk meminimalkan kemungkinan Error API. Untuk menerapkannya secara efektif, sebaiknya Anda:
- Pilih strategi pengelolaan katalog yang tepat. Setelah Anda memahami API Anda perlu memilih strategi yang tepat bagi aplikasi Anda untuk mencapai tujuan pengelolaan katalog Anda secara efisien.
- Hanya lakukan panggilan telepon sesedikit mungkin untuk mencerminkan perubahan Anda.
- Jangan mengirim panggilan modifikasi yang berlebihan atau tidak perlu ke API. Ini mungkin mengharuskan Anda untuk menyimpan {i> changelog<i} di katalog backend.
- Mematuhi batas perubahan produk per jam sebanyak 7.200 kueri. Anda mungkin ingin membangun proses sinkronisasi yang mengharuskan Anda membuat produk dalam jumlah besar modifikasi dalam waktu singkat (misalnya, katalog awal pembuatan). Jika Anda memperkirakan proses ini melebihi batas per jam, implementasikan waktu tunggu yang diperlukan untuk memperlambat penggunaan ke tingkat yang aman. Pertimbangkan untuk menggunakan dengan update yang toleran terhadap latensi untuk mencapai throughput yang lebih tinggi.
- Mempersiapkan secara proaktif untuk menyesuaikan skala. Seiring dengan berkembangnya aplikasi, Anda mungkin perlu tingkatkan penggunaan API dan berbagai endpoint. Baca Laporan Google Dokumentasi kuota Play Developer API untuk mengetahui detail tentang cara menambah kuota saat Anda mendekati penggunaan maksimum.
- Jadwalkan proses-proses yang berat secara strategis. Coba jadwalkan jadwal yang panjang seputar puncak penggunaan kritis. Misalnya, Anda dapat menghindari sinkronisasi katalog lengkap selama puncak waktu penjualan dalam seminggu.
Menambahkan logika penanganan error kuota
Tidak peduli seberapa efisien Anda membangun logika pengelolaan katalog, Anda harus
membuatnya tahan terhadap batas kuota yang tidak terduga, mengingat kuota harian
dibagikan oleh endpoint yang digunakan dalam modul independen integrasi Anda. Pastikan
Anda menyertakan kesalahan throttling kuota dalam penanganan error Anda, dan implementasikan
waktu tunggu yang sesuai.
Setiap panggilan yang dilakukan ke Google Play Developer API akan menghasilkan respons. Di kolom
terjadinya kegagalan panggilan, Anda akan menerima
respons kegagalan yang menyertakan
Kode status respons HTTP dan objek errors
, yang memberikan detail lebih lanjut
mengenai domain error
dan pesan debug.
Misalnya, jika Anda melebihi batas harian, mungkin akan terjadi error
mirip dengan contoh berikut ini:
{
"code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "Daily Limit Exceeded. The quota will be reset at midnight Pacific Time (PT). You may monitor your quota usage and adjust limits in the API
Console: https://console.developers.google.com/apis/api/androidpublisher.googleapis.com/quotas?project=xxxxxxx",
"reason" : "dailyLimitExceeded",
"extendedHelp" : "https://console.developers.google.com/apis/api/androidpublisher.googleapis.com/quotas?project=xxxxxx"
} ],
}
Penerapan pengelolaan katalog
Developer menggunakan endpoint publikasi produk Google Play Developer API untuk menjaga katalog mereka tetap sinkron antara backend dan Google Play. Pembuatan memastikan katalog Google Play selalu diperbarui dengan katalog backend Anda informasi terbaru memiliki keuntungan untuk menciptakan pengalaman pengguna yang lebih baik. Contoh:
- Anda dapat melihat seluruh daftar penawaran yang tersedia, dan mengelola tag penawaran dan paket dasar untuk memengaruhi penayangan penawaran dan kelayakan Anda sendiri logika.
- Anda dapat memeriksa berbagai titik harga dan detail produk pengguna dilihat di berbagai platform, dan memastikan konsistensi tersebut.
- Anda akan memiliki detail produk di backend saat memproses produk baru pembelian, tanpa perlu meningkatkan latensi dan risiko kegagalan dengan melakukan panggilan tambahan ke Google Play Developer API selama alur penting pengguna.
Ada batasan dan pertimbangan tertentu yang harus Anda perhatikan saat membuat katalog produk di Google Play. Setelah Anda memahami batas-batas ini dan Anda tahu bagaimana Anda ingin menyusun katalog Anda, sekarang saatnya untuk menentukan strategi sinkronisasi Anda.
Strategi sinkronisasi katalog
Endpoint publikasi Google Play Developer API memungkinkan Anda membuat perubahan pada katalog Anda sesuai dengan perubahan yang terjadi. Terkadang, Anda mungkin perlu melakukan {i>update<i}, di mana Anda mengirim baterai perubahan dalam proses yang sama. Masing-masing pendekatan membutuhkan pilihan desain yang berbeda. Setiap strategi sinkronisasi akan lebih cocok untuk beberapa kasus penggunaan daripada yang lain, dan Anda mungkin memiliki membutuhkan keduanya, tergantung pada situasinya. Terkadang Anda mungkin ingin membuat memperbarui produk begitu Anda mengetahui perubahan baru, misalnya memproses pembaruan produk yang mendesak (yaitu harga yang salah perlu diperbaiki sebagai sesegera mungkin). Pada lain waktu, Anda dapat menggunakan sinkronisasi latar belakang berkala untuk memastikan backend dan katalog Play Anda selalu konsisten. Baca beberapa penggunaan umum kasus di mana Anda mungkin ingin menerapkan pengelolaan katalog yang berbeda ini dan strategi.
Kapan harus mengirim pembaruan saat katalog lokal Anda berubah
Idealnya, pembaruan harus terjadi segera setelah ada perubahan pada server untuk meminimalkan perbedaan.
Jenis update ini adalah opsi yang baik saat:
- Anda harus memastikan bahwa produk Anda selalu diperbarui.
- Anda harus membuat beberapa perubahan pada produk setiap hari.
- Anda perlu memperbarui produk yang sudah diproduksi dan dijual.
Pendekatan ini lebih mudah diterapkan, dan memungkinkan Anda menjaga katalog tetap sinkron dengan periode perbedaan jumlah terkecil.
Kapan harus menggunakan update berkala
Update berkala dijalankan secara asinkron ke edisi produk di backend, dan ini adalah opsi yang baik saat:
- Anda tidak perlu memastikan produk Anda diperbarui dalam waktu singkat.
- Anda perlu merencanakan update massal atau proses konsiliasi.
- Anda sudah memiliki Sistem Pengelolaan Konten atau Katalog untuk menangani produk digital, dan yang memperbarui katalog Anda secara terus-menerus
Untuk katalog besar, sebaiknya gunakan metode batch dengan toleran latensi untuk mencapai throughput maksimum.
Membuat katalog produk
Jika memiliki katalog besar untuk diupload ke Google Play, Anda mungkin ingin dari pemuatan awal. Jenis proses yang berat ini berfungsi optimal jika strategi berkala dikombinasikan dengan metode batch yang toleran terhadap latensi.
Membuat produk sekali beli
Untuk pembuatan katalog besar produk sekali beli awal, sebaiknya gunakan
Metode inappproducts.batchUpdate
dengan kolom allowMissing
ditetapkan ke
true
dan kolom latencyTolerance
disetel ke
PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT
.
Tindakan ini akan meminimalkan waktu yang diperlukan untuk membuat katalog sesuai batas kuota.
Untuk katalog yang lebih kecil, Anda dapat menggunakan metode inapp_products.insert
.
Atau, Anda dapat menggunakan metode inappproducts.update
dengan
allowMissing
seperti yang dijelaskan di bagian Update produk.
Pendekatan ini memiliki manfaat menghilangkan
keperluan skrip Anda untuk
stateful dan dapat dimulai ulang dari awal jika terjadi kesalahan.
Membuat produk langganan
Untuk pembuatan katalog besar dalam langganan awal, sebaiknya gunakan
Metode monetization.subscriptions.batchUpdate
dengan kolom allowMissing
disetel ke true
dan kolom latencyTolerance
ditetapkan
ke PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT
.
Tindakan ini akan meminimalkan waktu yang diperlukan untuk membuat katalog sesuai batas kuota.
Untuk katalog langganan yang lebih kecil, Play Developer API menyediakan
Metode monetization.subscriptions.create
.
Atau, Anda dapat membuat langganan menggunakan
Metode monetization.subscriptions.update
dengan
allowMissing
seperti yang dijelaskan di bagian Update produk.
Semua metode sebelumnya membuat langganan bersama dengan paket dasarnya
(disediakan dalam objek Subscription). Paket dasar ini awalnya
tidak aktif. Untuk mengelola paket dasar , Anda dapat menggunakan
Endpoint monetization.subscriptions.basePlans
, termasuk mengaktifkan
paket dasar agar tersedia untuk dibeli.
Selain itu, endpoint monetization.subscriptions.basePlans.offers
memungkinkan Anda membuat dan mengelola penawaran.
Notifikasi produk terbaru
Metode berikut memungkinkan Anda untuk mengubah produk yang sudah ada secara efisien, memastikan penawaran Anda selaras dengan penyesuaian terbaru Anda.
Memperbarui produk sekali beli
Ada tiga metode yang tersedia untuk membantu Anda memperbarui produk sekali beli yang sudah ada.
inappproducts.patch
: Endpoint patch digunakan untuk mengupdate sebagian resource. Ini berarti Anda dapat memperbarui kolom tertentu yang Anda tentukan dalam isi permintaan. Patch endpoint biasanya digunakan ketika Anda hanya perlu memperbarui beberapa kolom dari resource Andainappproducts.update
: Endpoint update digunakan untuk mengupdate resource secara keseluruhan. Artinya sehingga Anda harus mengirim seluruh objek resource dalam isi permintaan. Tujuan endpoint update biasanya digunakan ketika Anda perlu memperbarui semua kolom dalam resource Anda Jika parameterallowMissing
ditetapkan ketrue
dan disediakan ID produk belum ada, endpoint akan menyisipkan produk bukannya gagal.inappproducts.batchUpdate
: Ini adalah versi batch endpoint update, yang memungkinkan Anda mengubah beberapa produk dengan satu kueri. Gunakan bersama dengan KolomlatencyTolerance
ditetapkan kePRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT
untuk mencapai throughput yang lebih tinggi.
Memperbarui produk langganan
Untuk memperbarui langganan yang sudah ada, Anda dapat menggunakan
Metode monetization.subscriptions.patch
. Metode ini
mengambil parameter yang diperlukan berikut:
packageName
: Nama paket aplikasi yang memiliki langganan.productId
: ID produk unik langganan.regionsVersion
: Versi konfigurasi region.
Kecuali Anda membuat langganan baru menggunakan parameter allowMissing
, Anda harus memberikan parameter updateMask
. Parameter ini adalah
daftar kolom yang dipisahkan koma
yang ingin Anda perbarui.
Misalnya, jika Anda hanya ingin memperbarui
listingan produk langganan,
Anda akan menentukan kolom listings
ke parameter updateMask
.
Anda dapat menggunakan monetization.subscriptions.batchUpdate
untuk memperbarui beberapa langganan sekaligus.
Gunakan bersama dengan kolom latencyTolerance
yang disetel ke
PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT
untuk mencapai target yang lebih tinggi
yang konsisten.
Untuk mengaktifkan, menonaktifkan, menghapus paket dasar, atau memigrasikan pelanggan ke
versi harga paket dasar terbaru menggunakan endpoint monetization.subscriptions.basePlans
.
Selain itu, Anda dapat memperbarui paket dasar dengan
monetization.subscriptions.basePlans.offers.patch
.
Rekonsiliasi katalog
Apakah Anda memilih untuk memperbarui katalog Google Play setiap kali backend perubahan katalog atau secara berkala, jika Anda memiliki sistem pengelolaan katalog atau di luar katalog Google Play, mungkin ada situasi di mana tidak sinkron dengan katalog pada konfigurasi aplikasi Anda di Play. Hal ini dapat disebabkan oleh perubahan katalog manual darurat di Konsol, pemadaman layanan pada sistem pengelolaan katalog Anda atau mungkin jika Anda kehilangan data terbaru.
Anda dapat membuat proses rekonsiliasi katalog untuk menghindari perbedaan yang berkepanjangan jendela.
Pertimbangan sistem perbedaan
Sebaiknya Anda membangun sistem perbedaan untuk mendeteksi inkonsistensi dan merekonsiliasi dua sistem. Berikut adalah beberapa hal yang perlu dipertimbangkan saat membangun sistem {i>diff <i}untuk membantu menjaga katalog yang sinkron:
- Memahami model data: Langkah pertama adalah memahami data CMS developer dan Google Play Developer API. Hal ini mencakup mengetahui berbagai jenis data yang disimpan di setiap sistem, dan bagaimana elemen data yang berbeda dipetakan satu sama lain.
- Tentukan aturan perbedaan: Setelah memahami model data, Anda harus menentukan aturan perbedaan. Aturan-aturan ini akan menentukan bagaimana data dalam kedua sistem dibandingkan. Misalnya, Anda mungkin ingin mencocokkan ID produk dan membandingkan atribut utama langganan dan paket dasar yang terkait, serta di seluruh platform Google.
- Implementasikan algoritma perbedaan: Setelah menentukan aturan perbedaan, Anda
perlu menerapkan algoritma {i>diff<i}. Algoritma ini akan
mengambil data dari
kedua sistem dan membandingkannya
sesuai dengan aturan yang telah Anda tetapkan. Untuk mendapatkan
data katalog dari Google Play, Anda dapat menggunakan
inappproducts.list
,inappproducts.batchGet
,monetization.subscriptions.list
danmonetization.subscriptions.batchGet
metode. - Buat laporan perbedaan: Algoritme perbedaan akan menghasilkan laporan perbedaan. Laporan ini akan menunjukkan perbedaan antara kedua sistem.
- Rekonsiliasi perbedaan: Setelah membuat laporan perbedaan, Anda harus untuk mengatasi perbedaannya. Langkah ini mungkin termasuk memperbarui data di CMS Anda, atau mungkin termasuk memperbarui data di sisi Google Play menggunakan Developer API endpoint pengelolaan katalog, bergantung pada cara Anda biasanya memperbarui katalog. Untuk merekonsiliasi produk yang tidak sinkron, gunakan endpoint update seperti yang dijelaskan di bagian Pembaruan produk.
Penghentian produk
Google Play Developer API menawarkan beberapa metode untuk membantu developer
menghentikan penggunaan produknya:
inappproducts.delete
dan
inappproducts.batchDelete
untuk produk sekali beli dan
monetization.subscriptions.delete
untuk langganan. Penghentian penggunaan suatu produk mungkin diperlukan dalam berbagai skenario
, seperti:
- Tidak sengaja dibuat.
- Menghentikan fitur atau layanan.
Sebaiknya terapkan penghentian penggunaan produk ke pengelolaan katalog Anda strategi.
Menghentikan penggunaan produk sekali beli
Untuk menghapus produk sekali beli dengan Google Play Developer API, Anda harus menggunakan
tindakan
inappproducts.delete
atau
inappproducts.batchDelete
.
Menghentikan penggunaan produk langganan
Anda dapat menghapus langganan menggunakan
monetization.subscriptions.delete
. Langganan tidak dapat dihapus setelah minimal satu paket dasar
diaktifkan.