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