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