במסמך הזה מפורטים סוגי ההתראות למפתחים בזמן אמת שאפשר לקבל מ-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 | ארוך | חותמת הזמן של האירוע, באלפיות השנייה מאז ראשית הזמן. |
| 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 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"
}
}