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

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

เราอธิบายฟิลด์เหล่านี้ไว้ในตารางต่อไปนี้

ชื่อพร็อพเพอร์ตี้ ค่า คำอธิบาย
เวอร์ชัน สตริง เวอร์ชันของการแจ้งเตือนนี้ ซึ่งจะเป็น "1.0" ในตอนแรก เวอร์ชันนี้แตกต่างจากฟิลด์เวอร์ชันอื่นๆ
packageName สตริง ชื่อแพ็กเกจของแอปพลิเคชันที่การแจ้งเตือนนี้เกี่ยวข้อง ถึง (เช่น `com.some.thing`)
eventTimeMillis ยาว การประทับเวลาเมื่อเกิดเหตุการณ์เป็นมิลลิวินาทีตั้งแต่ Epoch
subscriptionNotification SubscriptionNotification

หากมีฟิลด์นี้ แสดงว่าการแจ้งเตือนนี้เกี่ยวข้องกับการสมัครใช้บริการ และฟิลด์นี้มีข้อมูลเพิ่มเติมเกี่ยวกับการสมัครใช้บริการ

โปรดทราบว่าฟิลด์นี้ใช้ร่วมกับ pendingRefundReviewNotification, oneTimeProductNotification, voidedPurchaseNotification และ testNotification ไม่ได้

oneTimeProductNotification OneTimeProductNotification

หากมีฟิลด์นี้ แสดงว่าการแจ้งเตือนนี้เกี่ยวข้องกับการซื้อแบบครั้งเดียว และฟิลด์นี้มีข้อมูลเพิ่มเติมเกี่ยวกับการซื้อ

โปรดทราบว่าฟิลด์นี้ใช้ร่วมกับ pendingRefundReviewNotification, subscriptionNotification, voidedPurchaseNotification และ testNotification ไม่ได้

voidedPurchaseNotification VoidedPurchaseNotification

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

โปรดทราบว่าฟิลด์นี้ใช้ร่วมกับ pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification และ testNotification ไม่ได้

pendingRefundReviewNotification PendingRefundReviewNotification

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

โปรดทราบว่าฟิลด์นี้ใช้ร่วมกับ subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, และ testNotification ไม่ได้

testNotification TestNotification

หากมีฟิลด์นี้ แสดงว่าการแจ้งเตือนนี้เกี่ยวข้องกับการเผยแพร่เพื่อทดสอบ ซึ่งจะส่งผ่าน Google Play Console สำหรับนักพัฒนาแอปเท่านั้น

โปรดทราบว่าฟิลด์นี้ใช้ร่วมกับ pendingRefundReviewNotification, 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 - การสมัครใช้บริการหมดอายุแล้ว
  • (17) SUBSCRIPTION_ITEMS_CHANGED - มีการเปลี่ยนแปลงไอเทมในชุดการสมัครใช้บริการ
  • (18) SUBSCRIPTION_CANCELLATION_SCHEDULED - ระบบกำหนดเวลาการยกเลิกการสมัครใช้บริการแบบผ่อนชำระให้มีผลเมื่อสิ้นสุดระยะเวลาผูกมัด
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED - รายละเอียดการเปลี่ยนแปลงราคาของไอเทมการสมัครใช้บริการได้รับการอัปเดต
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - ธุรกรรมที่รอดำเนินการ ของการสมัครใช้บริการถูกยกเลิกแล้ว
  • (22) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED - ระยะเวลาความยินยอมสำหรับการปรับขึ้นราคาของการสมัครใช้บริการ เริ่มต้นขึ้นแล้ว หรือผู้ใช้ให้ความยินยอมสำหรับการปรับขึ้นราคา แล้ว ระบบจะส่ง RTDN นี้สำหรับการสมัครใช้บริการในภูมิภาคที่ต้องมีการปรับขึ้นราคาเท่านั้น
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: ระบุประเภทการคืนเงินที่ยกเลิกการซื้อ

PendingRefundReviewNotification

ระบบจะส่ง PendingRefundReviewNotification เมื่อผู้ใช้ขอให้เรียกเก็บเงินคืนสำหรับการซื้อ และคำขอต้องได้รับการตรวจสอบจากนักพัฒนาแอป เมื่อคุณ ได้รับการแจ้งเตือนนี้ คุณควรประเมินคำขอและแนะนำการคืนเงิน พร้อมหลักฐานการใช้งานการซื้อภายใน 24 ชั่วโมงโดยเรียกใช้ API ReviewRefund

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

{
  "version": string,
  "pendingRefundToken": string,
  "orderId": string,
  "refundReason": int,
  "obfuscatedAccountId": string,
  "obfuscatedProfileId": string
}
ชื่อพร็อพเพอร์ตี้ ค่า คำอธิบาย
เวอร์ชัน สตริง เวอร์ชันของการแจ้งเตือนนี้ ซึ่งจะเป็น "1.0" ในตอนแรก เวอร์ชันนี้แตกต่างจากฟิลด์เวอร์ชันอื่นๆ
pendingRefundToken สตริง โทเค็นที่ไม่ซ้ำกันซึ่งระบุคำขอคืนเงินที่รอดำเนินการอยู่ระหว่างการตรวจสอบ ส่งโทเค็นนี้เมื่อเรียกใช้ ReviewRefund API
orderId สตริง รหัสคำสั่งซื้อของการซื้อที่อยู่ระหว่างการตรวจสอบการคืนเงินที่รอดำเนินการ
refundReason Int เหตุผลของคำขอคืนเงิน การตรวจสอบที่รอดำเนินการรองรับเฉพาะ CHARGEBACK (7) เป็นเหตุผลในการคืนเงิน โค้ดของคุณควร จัดการเหตุผลใหม่เมื่อพร้อมใช้งาน
obfuscatedAccountId สตริง (หากมี) รหัสบัญชีผู้ใช้ที่นักพัฒนาแอปกำหนดและทำให้ไม่ชัดเจนซึ่งระบุไว้เมื่อทำการซื้อ
obfuscatedProfileId สตริง (หากมี) รหัสโปรไฟล์ที่นักพัฒนาแอปกำหนดและทำให้ไม่ชัดเจนซึ่งระบุไว้เมื่อทำการซื้อ

ตัวอย่าง

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

{
  "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 มีฟิลด์ต่อไปนี้

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

ตัวอย่าง

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

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