คู่มืออ้างอิงการแจ้งเตือนนักพัฒนาแอปแบบเรียลไทม์

เอกสารนี้แสดงและอธิบายประเภท การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอปที่คุณจะได้รับจาก Google Play

การเข้ารหัส

การเผยแพร่แต่ละครั้งที่ทำกับหัวข้อ Cloud Pub/Sub จะมีฟิลด์ข้อมูลเดียวที่เข้ารหัส base64

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

หลังจากถอดรหัสฟิลด์ข้อมูลที่เข้ารหัส Base64 แล้ว DeveloperNotification จะมีฟิลด์ต่อไปนี้

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

ช่องเหล่านี้มีคำอธิบายในตารางต่อไปนี้

ชื่อพร็อพเพอร์ตี้ ค่า คำอธิบาย
เวอร์ชัน สตริง เวอร์ชันของการแจ้งเตือนนี้ โดยในระยะแรกจะเป็น "1.0" เวอร์ชันนี้แตกต่างจากฟิลด์เวอร์ชันอื่นๆ
packageName สตริง ชื่อแพ็กเกจของแอปพลิเคชันที่การแจ้งเตือนนี้เกี่ยวข้อง (เช่น `com.some.thing`)
eventTimeMillis ยาว การประทับเวลาเมื่อเกิดเหตุการณ์ในหน่วยมิลลิวินาทีนับตั้งแต่ Epoch
subscriptionNotification SubscriptionNotification หากมีฟิลด์นี้ แสดงว่าการแจ้งเตือนนี้เกี่ยวข้องกับการสมัครใช้บริการ และฟิลด์นี้มีข้อมูลเพิ่มเติมที่เกี่ยวข้องกับการสมัครใช้บริการ โปรดทราบว่าฟิลด์นี้จะใช้ร่วมกับ oneTimeProductNotification, voidedPurchaseNotification และ testNotification ไม่ได้
oneTimeProductNotification OneTimeProductNotification หากมีฟิลด์นี้ แสดงว่าการแจ้งเตือนนี้เกี่ยวข้องกับ การซื้อแบบครั้งเดียว และฟิลด์นี้มีข้อมูลเพิ่มเติม ที่เกี่ยวข้องกับการซื้อ โปรดทราบว่าฟิลด์นี้เป็นข้อมูลแยกกัน กับ subscriptionNotification, voidedPurchaseNotification และ testNotification
voidedPurchaseNotification VoidedPurchaseNotification หากมีช่องนี้ การแจ้งเตือนนี้จะเกี่ยวข้องกับการซื้อที่ ถูกยกเลิก และช่องนี้จะมีข้อมูลเพิ่มเติมที่เกี่ยวข้อง กับการซื้อที่ถูกยกเลิก โปรดทราบว่าฟิลด์นี้จะใช้ร่วมกับ oneTimeProductNotification, subscriptionNotification และ testNotification ไม่ได้
testNotification TestNotification หากมีฟิลด์นี้ การแจ้งเตือนนี้จะเกี่ยวข้องกับการเผยแพร่เวอร์ชันทดสอบ โดยจะส่งผ่าน Google Play Developer Console เท่านั้น โปรดทราบว่าฟิลด์นี้จะใช้ร่วมกับ oneTimeProductNotification, subscriptionNotification และ voidedPurchaseNotification ไม่ได้

SubscriptionNotification

SubscriptionNotification มีช่องต่อไปนี้

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
ชื่อพร็อพเพอร์ตี้ ค่า คำอธิบาย
เวอร์ชัน สตริง เวอร์ชันของการแจ้งเตือนนี้ โดยในระยะแรกจะเป็น "1.0" เวอร์ชันนี้แตกต่างจากฟิลด์เวอร์ชันอื่นๆ
notificationType Int notificationType สำหรับการสมัครใช้บริการอาจมีค่าต่อไปนี้
  • (1) SUBSCRIPTION_RECOVERED - มีการกู้คืนการสมัครใช้บริการจากการระงับบัญชี
  • (2) SUBSCRIPTION_RENEWED - มีการต่ออายุการสมัครใช้บริการที่ใช้งานอยู่
  • (3) SUBSCRIPTION_CANCELED - การสมัครใช้บริการถูกยกเลิกโดยตั้งใจ หรือไม่ตั้งใจ สำหรับการยกเลิกโดยตั้งใจ ระบบจะส่งเมื่อ ผู้ใช้ยกเลิก
  • (4) SUBSCRIPTION_PURCHASED - มีการซื้อการสมัครใช้บริการใหม่
  • (5) SUBSCRIPTION_ON_HOLD - การสมัครใช้บริการเข้าสู่การระงับบัญชี (หากเปิดใช้)
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD - การสมัครใช้บริการเข้าสู่ ระยะเวลาผ่อนผัน (หากเปิดใช้)
  • (7) SUBSCRIPTION_RESTARTED - ผู้ใช้ได้กู้คืนการสมัครใช้บริการจาก Play > บัญชี > การสมัครใช้บริการ การสมัครใช้บริการถูกยกเลิก แต่ยังไม่หมดอายุเมื่อผู้ใช้ กู้คืน ดูข้อมูลเพิ่มเติมได้ที่ การกู้คืน
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (เลิกใช้งานแล้ว) - ผู้ใช้ยืนยันการเปลี่ยนแปลงราคาการสมัครใช้บริการเรียบร้อยแล้ว
  • (9) SUBSCRIPTION_DEFERRED - ระบบได้ขยายเวลาการเรียกเก็บเงินตามรอบของการสมัครใช้บริการ แล้ว
  • (10) SUBSCRIPTION_PAUSED - การสมัครใช้บริการถูกหยุดชั่วคราว
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - มีการเปลี่ยนแปลงกำหนดการหยุดการสมัครใช้บริการชั่วคราว
  • (12) SUBSCRIPTION_REVOKED - มีการเพิกถอนการสมัครใช้บริการจาก ผู้ใช้ก่อนเวลาหมดอายุ
  • (13) SUBSCRIPTION_EXPIRED - การสมัครใช้บริการหมดอายุแล้ว
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - ธุรกรรมที่รอดำเนินการ ของการสมัครใช้บริการถูกยกเลิกแล้ว
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED - มีการอัปเดตรายละเอียดการเปลี่ยนแปลงราคาของรายการการสมัครใช้บริการ
purchaseToken สตริง โทเค็นที่มอบให้แก่อุปกรณ์ของผู้ใช้เมื่อมีการซื้อการสมัครใช้บริการ

ตัวอย่าง

ตัวอย่างการแจ้งเตือนสำหรับการซื้อการสมัครใช้บริการใหม่มีดังนี้

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

OneTimeProductNotification

OneTimeProductNotification มีช่องต่อไปนี้

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
ชื่อพร็อพเพอร์ตี้ ค่า คำอธิบาย
เวอร์ชัน สตริง เวอร์ชันของการแจ้งเตือนนี้ โดยในระยะแรกจะเป็น "1.0" เวอร์ชันนี้แตกต่างจากฟิลด์เวอร์ชันอื่นๆ
notificationType Int ประเภทการแจ้งเตือน โดยอาจมีค่าดังต่อไปนี้
  • (1) ONE_TIME_PRODUCT_PURCHASED - ผู้ใช้ซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวสำเร็จแล้ว
  • (2) ONE_TIME_PRODUCT_CANCELED - ผู้ใช้ยกเลิกการซื้อไอเทมแบบเรียกเก็บเงินครั้งเดียวที่รอดำเนินการ
purchaseToken สตริง โทเค็นที่มอบให้แก่อุปกรณ์ของผู้ใช้เมื่อทำการซื้อ
SKU สตริง รหัสผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวที่ซื้อ (เช่น "sword_001")

ตัวอย่าง

ตัวอย่างการแจ้งเตือนสำหรับการซื้อแบบครั้งเดียวครั้งใหม่มีดังนี้

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

VoidedPurchaseNotification

VoidedPurchaseNotification มีช่องต่อไปนี้

ชื่อพร็อพเพอร์ตี้

ค่า

คำอธิบาย

purchaseToken

string

โทเค็นที่เชื่อมโยงกับการซื้อที่ถูกยกเลิก ระบบจะให้ข้อมูลนี้แก่ นักพัฒนาแอปเมื่อมีการซื้อใหม่ เกิดขึ้น

orderId

string

รหัสคำสั่งซื้อที่ไม่ซ้ำกันซึ่งเชื่อมโยงกับธุรกรรมที่ถูกยกเลิก แล้ว สำหรับการซื้อแบบครั้งเดียว รหัสนี้คือรหัสคำสั่งซื้อเดียว ที่สร้างขึ้นสำหรับการซื้อ สำหรับการสมัครใช้บริการที่ต่ออายุอัตโนมัติ ระบบจะสร้างรหัสคำสั่งซื้อใหม่ สำหรับธุรกรรมการต่ออายุแต่ละรายการ

productType

int

productTypeสำหรับการซื้อที่ถูกยกเลิก อาจมีค่าต่อไปนี้

  • (1) PRODUCT_TYPE_SUBSCRIPTION - ระบบได้ยกเลิกการซื้อการสมัครใช้บริการ แล้ว
  • (2) PRODUCT_TYPE_ONE_TIME - การซื้อครั้งเดียว ถูกยกเลิกแล้ว

refundType

int

refundTypeสำหรับการซื้อที่ถูกยกเลิก อาจมีค่าต่อไปนี้

  • (1) REFUND_TYPE_FULL_REFUND - การซื้อถูกยกเลิกทั้งหมดแล้ว
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND - การซื้อ ได้รับการยกเลิกบางส่วนโดยการคืนเงินบางส่วนตามจำนวน ซึ่งใช้ได้กับการซื้อแบบหลายจำนวนเท่านั้น การซื้อสามารถ ยกเลิกบางส่วนได้หลายครั้ง

โปรดทราบว่าเมื่อมีการคืนเงินสำหรับจำนวนรวมที่เหลือของการซื้อแบบหลายรายการ refundType จะREFUND_TYPE_FULL_REFUND

ตัวอย่าง

ตัวอย่างการแจ้งเตือนสำหรับการซื้อใหม่ที่ถูกยกเลิกมีดังนี้

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

การใช้ VoidedPurchaseNotification

เมื่อไคลเอ็นต์ RTDN ได้รับ VoidedPurchaseNotification ให้จดข้อมูลต่อไปนี้

  • packageName: ระบุแอป
  • eventTimeMillis: แจ้งให้คุณทราบเวลาที่สถานะมีการเปลี่ยนแปลง
  • purchaseToken: โทเค็นที่มอบให้แก่อุปกรณ์ของผู้ใช้เมื่อซื้อผลิตภัณฑ์
  • orderId: ระบุคำสั่งซื้อที่เชื่อมโยงกับธุรกรรมที่ถูกยกเลิก
  • productType: ระบุว่าการซื้อที่ถูกยกเลิกเป็นการซื้อในแอปหรือการสมัครใช้บริการ
  • refundType: ระบุประเภทการคืนเงินที่ทำให้การซื้อเป็นโมฆะ

TestNotification

TestNotification มีช่องต่อไปนี้

{
  "version": string
}
ชื่อพร็อพเพอร์ตี้ ค่า คำอธิบาย
เวอร์ชัน สตริง เวอร์ชันของการแจ้งเตือนนี้ โดยในระยะแรกจะเป็น "1.0" เวอร์ชันนี้แตกต่างจากฟิลด์เวอร์ชันอื่นๆ

ตัวอย่าง

ตัวอย่างการแจ้งเตือนทดสอบมีดังนี้

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