אפשר להשתמש ב-Merchant Notification API כדי לקבל התראות על שינויים לנתוני החשבון. לדוגמה, אם נרשמת לשינוי סטטוס של מוצר התראות, אתם יכולים לקבל התראה בזמן אמת אם מוצר נפסל. אפשר להירשם לקבלת התראות לגבי כל אחד חשבונות משנה או מקושרים אחרים חשבונות.
במדריך הזה מפורטות דוגמאות לניהול התראות לגבי סטטוס מוצר
שינויים. אפשר להשתמש בדוגמאות האלה כדי לנהל התראות לגבי אירועים אחרים על ידי:
שינוי הערך בשדה registeredEvent
בבקשות. כדי לקבל
רשימה של סוגי האירועים זמינה ב-Merchant Notifications API
.
להרשמה
כדי לקבל התראות, צריך callBackUri
. ה-URI להתקשרות חזרה
לעמוד בדרישות הבאות:
- כתובת ה-HTTPS חייבת להיות נגישה לציבור עם אישור SSL תקף, חתומות על ידי רשות אישורים.
- חייבים לאשר בקשות HTTP
POST
עם הכותרתContent-Type
וגם ערךapplication/json
. - יש להחזיר אחד מקודי התגובה הבאים כדי לאשר ש
התקבלה התראה.
102
200
201
202
204
אפשר להשתמש באותו URI של קריאה חוזרת למספר מינויים. מומלץ להשתמש URI ייחודי להתקשרות חזרה לכל מתקדם account, לכל סוג אירוע: לצמצם את העומס של בקשות דחיפה ל-URI יחיד.
צירפנו בקשה לדוגמה להירשם לקבלת התראות על שינויים בסטטוס המוצר
לחשבון של מוכר ספציפי. יש להשתמש במספר חשבון Merchant של החשבון שצריך להשתמש בו
לקבל את ההתראות בתור merchantId
בכתובת ה-URL של הבקשה.
המספר המזהה של החשבון שעליו רוצים לקבל התראות
targetMerchantId
בגוף הבקשה. אם החשבון שלכם הוא חשבון נפרד
ללא חשבונות מקושרים, וברצונך לקבל התראות לגבי
שלך, השתמש במספר חשבון Merchant שלך בשני המקומות.
POST https://merchantapi.googleapis.com/notifications/v1beta/accounts/merchantId/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/targetMerchantId",
"callBackUri": "https://example.com"
}
שיחות שבוצעו בהצלחה מחזירות
name
עבור
מינוי, כולל מזהה מינוי:
{
"name":"accounts/merchantId/notificationsubscriptions/subscriptionId",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/targetMerchantId",
"callBackUri": "https://example.com"
}
אפשר להשתמש בname
הזה כדי GET
וב-DELETE
מינויים אישיים.
אפשר להירשם לקבלת התראות על שינויים בסטטוס המוצרים של כל
חשבונות מקושרים על ידי הכללת "allManagedAccounts": true
במקום
targetAccount
בבקשה שלך:
POST https://merchantapi.googleapis.com/notifications/v1beta/accounts/merchantId/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com"
}
כדי לעדכן מינוי קיים, צריך להשתמש ב-PATCH
עם update_mask
כדי לציין
השדות שרוצים לעדכן, והערכים החדשים בגוף ה-JSON:
PATCH /notifications/v1beta/accounts/merchantId/notificationsubscriptions/subscriptionId?update_mask=callBackUri
{
"callBackUri": "https://my-own-personal-domain.com"
}
פענוח הקוד של ההתראות
לאחר יצירת המינוי, מקבלים התראות לגבי
callBackUri
בפורמט הבא:
{"message":{"data":"{base64_encoded_string}"}}
נתוני ההתראות מקודדים. אפשר לפענח את הנתונים לטקסט קריא שבו צריך להשתמש בהטמעה. הנה דוגמה לבקר אתחול לאביב עשוי לשמש לעיבוד הנתונים המקודדים:
@RestController
public class ExampleController {
@RequestMapping(value = "/push",
method = RequestMethod.POST,
consumes = {"application/json"},
produces = {"text/plain"})
@ResponseStatus(HttpStatus.OK)
public void doStuff(@RequestBody String message) {
//wrapped message
JSONObject jsonObject = new JSONObject(message);
JSONObject jsonMessage = jsonObject.getJSONObject("message");
message = jsonMessage.getString("data");
byte[] decodedBytes = Base64.getDecoder().decode(message);
String decodedMessage = new String(decodedBytes);
// Implement your business logic here
}
}
הנה דוגמה ל-base64_encoded_string
שפוענח:
"account": "accounts/targetMerchantId"
"managing_account": "accounts/merchantId"
"resource_type": PRODUCT
"attribute": STATUS
"changes": {
"old_value": "eligible"
"new_value": "disapproved"
"region_code": "GE"
"reporting_context": SHOPPING_ADS
},
"changes" {
"old_value": "eligible"
"new_value": "disapproved"
"region_code": "JP"
"reporting_context": SHOPPING_ADS
},
changes {
"old_value": "eligible"
"new_value": "disapproved"
"region_code": "US"
"reporting_context": SHOPPING_ADS
}
resource_id: "ONLINE~en~US~1234"
resource: "accounts/targetMerchantId/products/ONLINE~en~US~1234"
אם אין בהודעה השדה old_value
, מוצר חדש:
נוסף לחשבון שלך. אם אין את השדה new_value
, המוצר נמחק
מהחשבון שלך.
השדה reporting_context
תומך רק (SHOPPING_ADS
, LOCAL_INVENTORY_ADS
, YOUTUBE_SHOPPING
) מערך ה-enum ReportingContextEnum.
מבצעים בדיקות של ההטמעה.
בהמשך מוצגת הודעה לדוגמה שבה אפשר להשתמש כדי לבדוק את ה-URI של הקריאה החוזרת ואת הפענוח שלה:
curl --header "Content-Type: application/json" --header "Accept: text/plain" --request POST --data '{"message":{"data":
"ImFjY291bnQiOiAiYWNjb3VudHMvMTIzNCIKIm1hbmFnaW5nX2FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIKInJlc291cmNlX3R5cGUiOiBQUk9EVUNUCiJhdHRyaWJ1dGUiOiBTVEFUVVMKImNoYW5nZXMiOiB7CiAgIm9sZF92YWx1ZSI6ICJlbGlnaWJsZSIKICAicmVnaW9uX2NvZGUiOiAiVVMiCiAgInJlcG9ydGluZ19jb250ZXh0IjogU0hPUFBJTkdfQURTCn0KInJlc291cmNlX2lkIjogIk9OTElORX5lbn5VU34wMDAwMDAwMDAwMDAiCiJyZXNvdXJjZSI6ICJhY2NvdW50cy8xMjM0L3Byb2R1Y3RzL09OTElORX5lbn5VU34wMDAwMDAwMDAwMDAi"}}' https://{callBackUri}
בתגובה לקריאה החוזרת, ה-URI של הקריאה החוזרת אמור להחזיר תגובה שהסתיימה בהצלחה . ההודעה המפוענחת צריכה להכיל את הערך הבא:
"account": "accounts/1234"
"managing_account": "accounts/5678"
"resource_type": PRODUCT
"attribute": STATUS
"changes": {
"old_value": "eligible"
"region_code": "US"
"reporting_context": SHOPPING_ADS
}
"resource_id": "ONLINE~en~US~000000000000"
"resource": "accounts/1234/products/ONLINE~en~US~000000000000"