קבלת התראות על שינויים בנתוני החשבון

אפשר להשתמש ב-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"

מבצעים בדיקות של ההטמעה.

בהמשך מוצגת הודעה לדוגמה שבה אפשר להשתמש כדי לבדוק את ה-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"