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

หัวข้อนี้จะแสดงรายการและอธิบายประเภทของการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอปที่คุณจะได้รับจาก 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 ยาว การประทับเวลาที่เกิดเหตุการณ์เป็นมิลลิวินาทีนับตั้งแต่เริ่มต้น
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: ข้อมูลนี้จะบอกประเภทของการคืนเงินที่ยกเลิกการซื้อ

หากสิ่งที่ต้องทำเพื่อปรับเปลี่ยนการมีสิทธิ์คือค้นหาการซื้อและคำสั่งซื้อที่ถูกต้อง คุณก็มีข้อมูลทั้งหมดที่จำเป็นแล้วในตอนนี้ หากต้องการดูวิธีรับข้อมูลเพิ่มเติมเกี่ยวกับการซื้อที่ถูกยกเลิก โปรดดูGoogle Play Voided Purchases API ซึ่งเป็นรูปแบบการดึงข้อมูลที่จะให้ข้อมูลเพิ่มเติมเกี่ยวกับการซื้อที่ถูกยกเลิกระหว่างการประทับเวลาหนึ่งๆ

สำหรับการซื้อหลายรายการที่ยกเลิกบางส่วน ช่อง refundableQuantity ที่ระบุโดย purchases.products จะมีจำนวนผลิตภัณฑ์ที่ซื้อที่เหลือซึ่งยังไม่ได้ยกเลิก

TestNotification

TestNotification มีฟิลด์ต่อไปนี้

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

ตัวอย่าง

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

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