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