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

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

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

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

testNotification TestNotification

หากมีฟิลด์นี้ แสดงว่าการแจ้งเตือนนี้เกี่ยวข้องกับการเผยแพร่เวอร์ชันทดสอบ โดยจะส่งผ่าน Google Play Developer 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 ชั่วโมงโดยการเรียกใช้ ReviewRefund API

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

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

ตัวอย่าง

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

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