Panduan referensi Notifikasi developer real time

Dokumen ini mencantumkan dan menjelaskan jenis Notifikasi developer real-time yang dapat Anda terima dari Google Play.

Encoding

Setiap publikasi yang dibuat pada topik Cloud Pub/Sub berisi kolom data tunggal yang dienkode dengan base64.

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

Setelah Anda mendekode kolom data yang dienkode dengan base64, DeveloperNotification akan berisi kolom berikut:

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "pendingRefundReviewNotification": PendingRefundReviewNotification,
  "testNotification": TestNotification
}

Kolom-kolom ini dijelaskan dalam tabel berikut.

Nama properti Nilai Deskripsi
version string Versi notifikasi ini. Awalnya, versi notifikasi ini adalah "1.0". Versi ini berbeda dengan kolom versi lainnya.
packageName string Nama paket aplikasi yang terkait dengan notifikasi ini (misalnya, `com.some.thing`).
eventTimeMillis long Stempel waktu saat peristiwa terjadi, dalam milidetik sejak Epoch.
subscriptionNotification SubscriptionNotification

Jika kolom ini ada, berarti notifikasi ini terkait dengan langganan, dan kolom ini berisi informasi tambahan yang terkait dengan langganan.

Perhatikan bahwa kolom ini tidak bisa ada pada saat yang sama dengan pendingRefundReviewNotification, oneTimeProductNotification, voidedPurchaseNotification, dan testNotification.

OneTimeProductNotification OneTimeProductNotification

Jika kolom ini ada, berarti notifikasi ini terkait dengan pembelian satu kali, dan kolom ini berisi informasi tambahan yang terkait dengan pembelian.

Perhatikan bahwa kolom ini tidak bisa ada pada saat yang sama dengan pendingRefundReviewNotification, subscriptionNotification, voidedPurchaseNotification, dan testNotification.

voidedPurchaseNotification VoidedPurchaseNotification

Jika kolom ini ada, berarti notifikasi ini terkait dengan pembelian yang dibatalkan, dan kolom ini berisi informasi tambahan yang terkait dengan pembelian yang dibatalkan.

Perhatikan bahwa kolom ini tidak bisa ada pada saat yang sama dengan pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification, dan testNotification.

pendingRefundReviewNotification PendingRefundReviewNotification

Jika kolom ini ada, berarti notifikasi ini terkait dengan permintaan penagihan balik yang dapat Anda sarankan penyelesaiannya. Tanggapi notifikasi ini dengan memanggil API `ReviewRefund`.

Perhatikan bahwa kolom ini tidak bisa ada pada saat yang sama dengan subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, dan testNotification.

testNotification TestNotification

Jika kolom ini ada, berarti notifikasi ini terkait dengan publikasi pengujian. Notifikasi ini hanya dikirim melalui Konsol Google Play.

Perhatikan bahwa kolom ini tidak bisa ada pada saat yang sama dengan pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification, dan voidedPurchaseNotification.

SubscriptionNotification

SubscriptionNotification berisi kolom berikut:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
Nama properti Nilai Deskripsi
version string Versi notifikasi ini. Awalnya, versi notifikasi ini adalah "1.0". Versi ini berbeda dengan kolom versi lainnya.
notificationType int notificationType untuk langganan dapat berisi nilai berikut:
  • (1) SUBSCRIPTION_RECOVERED - Langganan dipulihkan dari penangguhan akun atau dilanjutkan dari jeda.
  • (2) SUBSCRIPTION_RENEWED - Langganan aktif diperpanjang.
  • (3) SUBSCRIPTION_CANCELED - Langganan dibatalkan, baik secara sukarela maupun tidak. Untuk pembatalan sukarela, notifikasi dikirim jika pengguna melakukan pembatalan.
  • (4) SUBSCRIPTION_PURCHASED - Langganan baru telah dibeli.
  • (5) SUBSCRIPTION_ON_HOLD - Langganan memasuki penangguhan akun (jika diaktifkan).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD - Langganan memasuki masa tenggang (jika diaktifkan).
  • (7) SUBSCRIPTION_RESTARTED - Pengguna memulihkan langganannya dari Play > Akun > Langganan. Langganan telah dibatalkan tetapi masa berlakunya belum habis saat pengguna memulihkannya. Untuk informasi selengkapnya, lihat Pemulihan.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (TIDAK DIGUNAKAN LAGI) - Perubahan harga langganan berhasil dikonfirmasi oleh pengguna.
  • (9) SUBSCRIPTION_DEFERRED - Waktu pengulangan langganan diperpanjang.
  • (10) SUBSCRIPTION_PAUSED - Langganan dijeda.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - Jadwal jeda langganan berubah.
  • (12) SUBSCRIPTION_REVOKED - Langganan dicabut dari pengguna sebelum habis masa berlakunya.
  • (13) SUBSCRIPTION_EXPIRED - Langganan habis masa berlakunya.
  • (17) SUBSCRIPTION_ITEMS_CHANGED - Item dalam paket langganan telah diubah.
  • (18) SUBSCRIPTION_CANCELLATION_SCHEDULED - Pembatalan langganan cicilan telah dijadwalkan untuk berlaku pada akhir periode komitmen.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED - Detail perubahan harga item langganan diperbarui.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - Transaksi langganan yang tertunda telah dibatalkan.
  • (22) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED - Periode izin untuk kenaikan harga langganan telah dimulai atau pengguna telah memberikan izin untuk kenaikan harga. RTDN ini hanya dikirim untuk langganan di wilayah yang memerlukan kenaikan harga.
purchaseToken string Token yang diberikan ke perangkat pengguna saat langganan dibeli.

Contoh

Berikut adalah contoh notifikasi untuk pembelian langganan baru:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN"
  }
}

OneTimeProductNotification

OneTimeProductNotification berisi kolom berikut:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
Nama Properti Nilai Deskripsi
version string Versi notifikasi ini. Awalnya, versi notifikasi ini adalah "1.0". Versi ini berbeda dengan kolom versi lainnya.
notificationType int Jenis notifikasi. Dapat berisi nilai-nilai berikut:
  • (1) ONE_TIME_PRODUCT_PURCHASED - Produk sekali beli berhasil dibeli oleh pengguna.
  • (2) ONE_TIME_PRODUCT_CANCELED - Pembelian produk sekali beli yang tertunda telah dibatalkan oleh pengguna.
purchaseToken string Token yang diberikan ke perangkat pengguna saat pembelian dilakukan.
sku string ID produk sekali beli yang dibeli (misalnya, "sword_001").

Contoh

Berikut ini contoh notifikasi untuk pembelian satu kali yang baru:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

VoidedPurchaseNotification

VoidedPurchaseNotification berisi kolom berikut:

Nama Properti Nilai Deskripsi

purchaseToken

string

Token yang terkait dengan pembelian yang telah dibatalkan. Informasi ini diberikan kepada developer jika pembelian baru terjadi.

orderId

string

ID pesanan unik yang terkait dengan transaksi yang telah dibatalkan. Untuk pembelian satu kali, hal ini mewakili satu-satunya ID pesanan yang dibuat untuk pembelian. Untuk langganan yang diperpanjang otomatis, ID pesanan baru akan dibuat untuk setiap transaksi perpanjangan.

productType

int

productType untuk pembelian yang dibatalkan dapat memiliki nilai berikut:

  • (1) PRODUCT_TYPE_SUBSCRIPTION - Pembelian langganan telah dibatalkan.
  • (2) PRODUCT_TYPE_ONE_TIME - Pembelian satu kali telah dibatalkan.

refundType

int

refundType untuk pembelian yang dibatalkan dapat memiliki nilai berikut:

  • (1) REFUND_TYPE_FULL_REFUND - Pembelian telah dibatalkan sepenuhnya.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND - Pembelian telah dibatalkan sebagian oleh pengembalian dana sebagian berdasarkan jumlah, yang hanya berlaku untuk pembelian multikuantitas. Pembelian dapat dibatalkan sebagian beberapa kali.

Perhatikan bahwa jika jumlah total yang tersisa dari pembelian multi-kuantitas dikembalikan dananya, refundType akan menjadi REFUND_TYPE_FULL_REFUND.

Contoh

Berikut adalah contoh notifikasi untuk pembelian yang baru dibatalkan:

{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}

Memakai VoidedPurchaseNotification

Jika klien RTDN Anda menerima VoidedPurchaseNotification, perhatikan informasi berikut:

  • packageName: Mengidentifikasi aplikasi.
  • eventTimeMillis: Memberi tahu Anda waktu terjadinya perubahan status.
  • purchaseToken: Token yang diberikan ke perangkat pengguna saat produk dibeli.
  • orderId: Mengidentifikasi pesanan yang terkait dengan transaksi yang dibatalkan.
  • productType: Menunjukkan apakah pembelian yang dibatalkan adalah pembelian dalam aplikasi atau langganan.
  • refundType: Menentukan jenis pengembalian dana yang membatalkan pembelian.

PendingRefundReviewNotification

PendingRefundReviewNotification dikirim saat pengguna meminta penagihan balik untuk pembelian, dan permintaan tersebut memerlukan peninjauan developer. Saat Anda menerima notifikasi ini, Anda harus mengevaluasi permintaan dan memberikan saran pengembalian dana serta bukti penggunaan pembelian dalam waktu 24 jam dengan memanggil ReviewRefund API.

PendingRefundReviewNotification berisi kolom berikut:

{
  "version": string,
  "pendingRefundToken": string,
  "orderId": string,
  "refundReason": int,
  "obfuscatedAccountId": string,
  "obfuscatedProfileId": string
}
Nama properti Nilai Deskripsi
version string Versi notifikasi ini. Awalnya, versi notifikasi ini adalah "1.0". Versi ini berbeda dengan kolom versi lainnya.
pendingRefundToken string Token unik yang mengidentifikasi permintaan pengembalian dana tertunda yang sedang ditinjau. Teruskan token ini saat memanggil ReviewRefund API.
orderId string ID pesanan pembelian yang tunduk pada peninjauan pengembalian dana yang tertunda.
refundReason int Alasan permintaan pengembalian dana. Ulasan tertunda hanya mendukung CHARGEBACK (7) sebagai alasan pengembalian dana. Kode Anda harus menangani alasan baru saat tersedia.
obfuscatedAccountId string (Jika ada) ID akun pengguna yang ditentukan developer dan di-obfuscate yang diberikan saat pembelian dilakukan.
obfuscatedProfileId string (Jika berlaku) ID profil yang ditentukan developer dan di-obfuscate yang diberikan saat pembelian dilakukan.

Contoh

Berikut adalah contoh notifikasi peninjauan pengembalian dana tertunda:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "pendingRefundReviewNotification":
  {
    "version":"1.0",
    "pendingRefundToken":"example-token",
    "orderId":"GPA.1234-5678-9012-34567",
    "refundReason":7,
    "obfuscatedAccountId":"user-account-id",
    "obfuscatedProfileId":"user-profile-id"
  }
}

TestNotification

TestNotification berisi kolom berikut:

{
  "version": string
}
Nama properti Nilai Deskripsi
version string Versi notifikasi ini. Awalnya, versi notifikasi ini adalah "1.0". Versi ini berbeda dengan kolom versi lainnya.

Contoh

Berikut adalah contoh notifikasi pengujian:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}