Panduan referensi Notifikasi developer real time

Topik 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,
  "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 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 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 oneTimeProductNotification, subscriptionNotification, 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 oneTimeProductNotification, subscriptionNotification, dan voidedPurchaseNotification.

SubscriptionNotification

SubscriptionNotification berisi kolom berikut:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "subscriptionId": 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 memiliki nilai berikut:
  • (1) SUBSCRIPTION_RECOVERED - Langganan dipulihkan dari penangguhan akun.
  • (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 - 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.
purchaseToken string Token yang diberikan ke perangkat pengguna saat langganan dibeli.
subscriptionId string ID produk langganan yang dibeli (misalnya "monthly001").

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",
    "subscriptionId":"monthly001"
  }
}

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 berbasis jumlah, hanya berlaku untuk pembelian multikuantitas. Pembelian dapat dibatalkan sebagian beberapa kali.

Perhatikan bahwa jika jumlah total pembelian multikuantitas yang tersisa 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: Hal ini mengidentifikasi aplikasi.
  • eventTimeMillis: Hal ini memberi tahu developer waktu saat perubahan status terjadi.
  • purchaseToken: Token yang diberikan ke perangkat pengguna saat produk dibeli.
  • orderId: Hal ini mengidentifikasi pesanan yang terkait dengan transaksi yang dibatalkan.
  • productType: Hal ini memberi tahu Anda apakah pembelian yang dibatalkan adalah pembelian dalam aplikasi atau langganan.
  • refundType: Bagian ini menunjukkan jenis pengembalian dana yang membatalkan pembelian.

Jika yang perlu Anda lakukan untuk penyesuaian hak adalah menemukan pembelian dan pesanan yang tepat, Anda akan memiliki semua informasi yang diperlukan pada tahap ini. Untuk mempelajari cara mendapatkan informasi tambahan tentang pembelian yang dibatalkan, lihat Voided Purchases API Google Play, yang merupakan model pull yang memberikan data tambahan untuk pembelian yang dibatalkan di antara stempel waktu tertentu.

Untuk pembelian multikuantitas yang dibatalkan sebagian, kolom refundableQuantity yang disediakan oleh purchases.products berisi sisa jumlah produk yang dibeli yang belum dibatalkan.

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"
  }
}