- Resource: SubscriptionPurchase
- IntroductoryPriceInfo
- SubscriptionCancelSurveyResult
- SubscriptionPriceChange
- Metode
Resource: SubscriptionPurchase
Resource SubscriptionPurchase menunjukkan status pembelian langganan pengguna.
| Representasi JSON |
|---|
{ "kind": string, "startTimeMillis": string, "expiryTimeMillis": string, "autoResumeTimeMillis": string, "autoRenewing": boolean, "priceCurrencyCode": string, "priceAmountMicros": string, "introductoryPriceInfo": { object ( |
| Kolom | |
|---|---|
kind |
Jenis ini menampilkan objek subscriptionPurchase di layanan androidpublisher. |
startTimeMillis |
Waktu saat langganan diberikan, dalam milidetik sejak Epoch. |
expiryTimeMillis |
Waktu saat langganan akan berakhir, dalam milidetik sejak Epoch. |
autoResumeTimeMillis |
Waktu saat langganan akan dilanjutkan secara otomatis, dalam milidetik sejak Epoch. Hanya ada jika pengguna telah meminta untuk menjeda langganan. |
autoRenewing |
Apakah langganan akan diperpanjang secara otomatis saat mencapai expiry time saat ini. |
priceCurrencyCode |
Kode mata uang ISO 4217 untuk harga langganan. Misalnya, jika harga ditentukan dalam pound sterling Inggris, priceCurrencyCode adalah "GBP". |
priceAmountMicros |
Harga langganan. Untuk negara yang tidak memberlakukan pajak, harga tidak termasuk pajak. Untuk negara yang menyertakan pajak, harga termasuk pajak. Harga dinyatakan dalam unit mikro, yang mana 1.000.000 unit mikro mewakili satu unit mata uang. Misalnya, jika harga langganan adalah €1,99, priceAmountMicros adalah 1990000. |
introductoryPriceInfo |
Informasi harga perkenalan langganan. Ini hanya berlaku jika langganan dibeli dengan harga perkenalan. Kolom ini tidak menunjukkan langganan yang saat ini berada dalam periode harga perkenalan. |
countryCode |
Kode negara/wilayah penagihan ISO 3166-1 alpha-2 pengguna pada saat langganan diberikan. |
developerPayload |
String yang ditentukan developer yang berisi informasi tambahan tentang pesanan. |
paymentState |
Status pembayaran langganan. Nilai yang mungkin adalah: 0. Pembayaran tertunda 1. Pembayaran diterima 2. Uji coba gratis 3. Upgrade/downgrade yang ditangguhkan tertunda Tidak ada untuk langganan yang dibatalkan dan sudah berakhir. |
cancelReason |
Alasan langganan dibatalkan atau tidak diperpanjang secara otomatis. Nilai yang mungkin adalah: 0. Pengguna membatalkan langganan 1. Langganan dibatalkan oleh sistem, misalnya karena masalah penagihan 2. Langganan diganti dengan langganan baru 3. Langganan dibatalkan oleh developer |
userCancellationTimeMillis |
Waktu saat langganan dibatalkan oleh pengguna, dalam milidetik sejak epoch. Hanya ada jika cancelReason adalah 0. |
cancelSurveyResult |
Informasi yang diberikan oleh pengguna saat mereka menyelesaikan alur pembatalan langganan (survei alasan pembatalan). |
orderId |
ID pesanan dari pesanan berulang terbaru yang terkait dengan pembelian langganan. Jika langganan dibatalkan karena pembayaran ditolak, ini akan menjadi ID pesanan dari pesanan yang pembayarannya ditolak. |
linkedPurchaseToken |
Token pembelian dari pembelian awal jika langganan ini adalah salah satu dari yang berikut: 0. Pendaftaran ulang langganan yang dibatalkan tetapi belum berakhir 1. Upgrade/downgrade dari langganan sebelumnya Misalnya, pengguna pertama kali mendaftar dan Anda menerima token pembelian X, lalu pengguna membatalkan dan menjalani alur pendaftaran ulang (sebelum langganan mereka berakhir) dan Anda menerima token pembelian Y, dan akhirnya pengguna mengupgrade langganannya dan Anda menerima token pembelian Z. Jika Anda memanggil API ini dengan token pembelian Z, kolom ini akan disetel ke Y. Jika Anda memanggil API ini dengan token pembelian Y, kolom ini akan disetel ke X. Jika Anda memanggil API ini dengan token pembelian X, kolom ini tidak akan disetel. |
purchaseType |
Jenis pembelian langganan. Kolom ini hanya disetel jika pembelian ini tidak dilakukan menggunakan alur penagihan dalam aplikasi standar. Nilai yang mungkin adalah: 0. Test (yaitu dibeli dari akun pengujian lisensi) 1. Promo (yaitu dibeli menggunakan kode promo) |
priceChange |
Informasi perubahan harga terbaru tersedia. Ini hanya ada jika terdapat perubahan harga langganan yang akan datang yang belum diterapkan. Setelah langganan diperbarui dengan harga baru atau langganan dibatalkan, tidak ada informasi perubahan harga yang akan ditampilkan. |
profileName |
Nama profil pengguna saat langganan dibeli. Hanya ada jika pembelian dilakukan dengan 'Berlangganan dengan Google'. |
emailAddress |
Alamat email pengguna saat langganan dibeli. Hanya ada jika pembelian dilakukan dengan 'Berlangganan dengan Google'. |
givenName |
Nama pengguna saat langganan dibeli. Hanya ada jika pembelian dilakukan dengan 'Berlangganan dengan Google'. |
familyName |
Nama keluarga pengguna saat langganan dibeli. Hanya ada jika pembelian dilakukan dengan 'Berlangganan dengan Google'. |
profileId |
ID profil Google pengguna saat langganan dibeli. Hanya ada jika pembelian dilakukan dengan 'Berlangganan dengan Google'. |
acknowledgementState |
Status konfirmasi produk langganan. Nilai yang mungkin adalah: 0. Belum dikonfirmasi 1. Dikonfirmasi |
externalAccountId |
ID akun pengguna dalam layanan pihak ketiga. Hanya ada jika penautan akun terjadi sebagai bagian dari alur pembelian langganan. |
promotionType |
Jenis promosi yang diterapkan untuk pembelian ini. Kolom ini hanya disetel jika promosi berlaku saat langganan dibeli. Nilai yang mungkin adalah: 0. Kode sekali pakai 1. Kode cantik |
promotionCode |
Kode promosi yang diterapkan untuk pembelian ini. Kolom ini hanya disetel jika promosi kode cantik diterapkan saat langganan dibeli. |
obfuscatedExternalAccountId |
Versi ID yang di-obfuscate dan terkait secara unik dengan akun pengguna di aplikasi Anda. Ada untuk pembelian berikut: * Jika penautan akun terjadi sebagai bagian dari alur pembelian langganan. * Ditentukan menggunakan https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid saat pembelian dilakukan. |
obfuscatedExternalProfileId |
Versi ID yang di-obfuscate dan terkait secara unik dengan profil pengguna di aplikasi Anda. Hanya ada jika ditentukan menggunakan https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid saat pembelian dilakukan. |
IntroductoryPriceInfo
Berisi informasi harga perkenalan untuk langganan.
| Representasi JSON |
|---|
{ "introductoryPriceCurrencyCode": string, "introductoryPriceAmountMicros": string, "introductoryPricePeriod": string, "introductoryPriceCycles": integer } |
| Kolom | |
|---|---|
introductoryPriceCurrencyCode |
Kode mata uang ISO 4217 untuk harga langganan perkenalan. Misalnya, jika harga ditentukan dalam pound sterling Inggris, priceCurrencyCode adalah "GBP". |
introductoryPriceAmountMicros |
Harga perkenalan langganan, tidak termasuk pajak. Mata uangnya sama dengan priceCurrencyCode. Harga dinyatakan dalam unit mikro, yang mana 1.000.000 unit mikro mewakili satu unit mata uang. Misalnya, jika harga langganan adalah €1,99, priceAmountMicros adalah 1990000. |
introductoryPricePeriod |
Periode harga perkenalan, ditentukan dalam format ISO 8601. Nilai yang umum adalah (tetapi tidak terbatas pada) "P1W" (satu minggu), "P1M" (satu bulan), "P3M" (tiga bulan), "P6M" (enam bulan), dan "P1Y" (satu tahun). |
introductoryPriceCycles |
Jumlah periode penagihan untuk menawarkan harga perkenalan. |
SubscriptionCancelSurveyResult
Informasi yang diberikan oleh pengguna saat mereka menyelesaikan alur pembatalan langganan (survei alasan pembatalan).
| Representasi JSON |
|---|
{ "cancelSurveyReason": integer, "userInputCancelReason": string } |
| Kolom | |
|---|---|
cancelSurveyReason |
Alasan pembatalan yang dipilih pengguna dalam survei. Nilai yang mungkin adalah: 0. Lainnya 1. Saya jarang menggunakan layanan ini 2. Masalah teknis 3. Alasan terkait biaya 4. Ada aplikasi yang lebih baik |
userInputCancelReason |
Input alasan pembatalan yang disesuaikan dari pengguna. Hanya ada jika cancelReason adalah 0. |
SubscriptionPriceChange
Berisi informasi perubahan harga langganan yang dapat digunakan untuk mengontrol perjalanan pengguna untuk perubahan harga dalam aplikasi. Hal ini bisa berupa meminta konfirmasi dari pengguna atau menyesuaikan pengalaman agar konversi berhasil.
| Representasi JSON |
|---|
{
"newPrice": {
object ( |
| Kolom | |
|---|---|
newPrice |
Harga baru perpanjangan langganan jika perubahan harga diterima oleh pengguna. |
state |
Status perubahan harga saat ini. Nilai yang mungkin adalah: 0. Belum dimulai: Status perubahan harga masih menunggu persetujuan pengguna. Dalam status ini, Anda dapat meminta konfirmasi dari pengguna menggunakan API Dalam Aplikasi. 1. Diterima: Status perubahan harga yang diterima dan akan digunakan untuk memperpanjang langganan kecuali jika dibatalkan. Perubahan harga berlaku pada masa mendatang saat langganan diperpanjang. Perhatikan bahwa perubahan mungkin tidak terjadi saat perpanjangan langganan berikutnya. |
Metode |
|
|---|---|
|
Mengonfirmasi pembelian langganan. |
|
Membatalkan pembelian langganan pengguna. |
|
Menunda pembelian langganan pengguna hingga waktu habis masa berlaku tertentu pada masa mendatang. |
(deprecated) |
Tidak digunakan lagi: Sebagai gantinya, gunakan purchases.subscriptionsv2.get. |
(deprecated) |
Tidak digunakan lagi: Gunakan orders.refund sebagai gantinya. |
(deprecated) |
Tidak digunakan lagi: Sebagai gantinya, gunakan purchases.subscriptionsv2.revoke. |
Kode error
Operasi resource ini menampilkan kode error HTTP berikut:
| Kode error | Alasan | Deskripsi | Resolusi |
|---|---|---|---|
400 / 410 |
subscriptionExpired |
Langganan telah berakhir dan operasi yang diminta tidak dapat dilakukan. | Periksa waktu habis masa berlaku langganan. Operasi ini tidak diizinkan pada langganan yang telah berakhir. |
400 |
subscriptionInvalidArgument |
Argumen yang tidak valid diberikan dalam permintaan langganan. | Tinjau dokumentasi API dan pastikan semua kolom wajib diisi telah disediakan dan diformat dengan benar. |
400 |
invalidPurchaseState |
Pembelian tidak dalam status yang valid untuk melakukan operasi yang diminta. Misalnya, Anda mungkin mencoba mengonfirmasi pembelian yang sudah digunakan atau membatalkan langganan yang tidak aktif. | Periksa status resource saat ini menggunakan Get API yang sesuai sebelum mencoba operasi. Pastikan resource berada dalam status yang sesuai untuk tindakan tersebut. |
400 |
invalidValue |
Nilai yang tidak valid diberikan dalam permintaan. Error ini sering kali ditampilkan untuk token pembelian yang salah format atau tidak valid. | Perbaiki nilai kolom yang tidak valid dalam isi atau parameter permintaan berdasarkan referensi API. |
400 |
prepaidSubscriptionNotSupported |
Operasi yang diminta tidak didukung untuk langganan prabayar. | Pastikan operasi berlaku untuk jenis langganan. Error ini khusus untuk metode seperti Batal, Tunda, Pengembalian Dana, atau Cabut. |
400 |
productNotOwnedByUser |
Token pembelian yang diberikan valid, tetapi pengguna saat ini tidak memiliki produk. Hal ini dapat terjadi jika pembelian dikembalikan dananya, dibatalkan, atau masa berlakunya habis sebelum dikonfirmasi. | Periksa status resource saat ini menggunakan Get API yang sesuai sebelum mencoba operasi. Pastikan resource berada dalam status yang sesuai untuk tindakan tersebut. |
400 |
purchaseTokenMismatch |
Token pembelian yang diberikan tidak cocok dengan pembelian, nama paket, ID langganan, atau ID produk. | Pastikan semua detail dalam permintaan sudah benar dan sesuai satu sama lain. |
400 |
required |
Kolom atau parameter wajib diisi tidak ada dalam permintaan. | Lihat dokumentasi API untuk memastikan semua kolom dan parameter wajib diisi disertakan. |
400 |
unsupportedIabType |
Operasi tidak didukung untuk jenis Penagihan Dalam Aplikasi yang diberikan. | Pastikan metode API kompatibel dengan jenis item yang dikelola. |
403 |
userInsufficientPermission |
Pengguna tidak memiliki izin yang memadai untuk melakukan operasi yang diminta. | Pastikan pengguna yang diautentikasi memiliki izin yang diperlukan di Konsol Google Play. Lihat Menggunakan akun layanan untuk mengetahui detail selengkapnya. |
404 |
notFound |
Resource yang diminta tidak dapat ditemukan. | Verifikasi bahwa ID (misalnya, token pembelian, nama paket, ID produk, ID langganan) sudah benar. |
409 |
concurrentUpdate |
Ada upaya untuk memperbarui objek yang sedang diperbarui secara bersamaan. | Coba lagi permintaan dengan backoff eksponensial. Hindari modifikasi serentak pada resource yang sama. |
410 |
purchaseTokenNoLongerValid |
Token pembelian tidak valid secara permanen karena akun pengguna terkait telah dihapus atau catatan pembelian tidak lagi ada. | Hentikan penggunaan token pembelian ini. |
410 |
subscriptionNoLongerAvailable |
Pembelian langganan tidak lagi tersedia untuk kueri karena masa berlakunya telah berakhir terlalu lama. | Error ini menunjukkan bahwa langganan telah berakhir selama lebih dari 60 hari. Anda tidak boleh lagi membuat kueri langganan ini. |
5xx |
Generic error |
Error umum di server Google Play. | Coba lagi permintaan Anda. Jika masalah berlanjut, hubungi pengelola akun Google Play Anda atau kirimkan permintaan dukungan. Pertimbangkan untuk memeriksa Dasbor Status Play untuk mengetahui pemadaman layanan yang diketahui. |