קבלת התראות פוש על שינויים בסטטוס המוצר

אתם יכולים להירשם להתראות של PRODUCT_STATUS_CHANGE כדי לקבל התראות בזמן אמת בכל פעם שסטטוס האישור של מוצר משתנה בחשבונות Merchant Center שלכם. לדוגמה, אתם יכולים לזהות מתי מוצר נפסל כדי שתוכלו לפתור בעיות פוטנציאליות באיכות הנתונים.

לפני שמתחילים, צריך לוודא שכתובת ה-URI של הקריאה החוזרת מוגדרת בהתאם לדרישות שמפורטות בסקירה הכללית של Notifications sub-API.

הרשמה לעדכונים על שינויים בסטטוס המוצרים

כדי להירשם לשינויים בסטטוס המוצר, שולחים בקשת POST למשאב notificationsubscriptions עם registeredEvent שמוגדר ל-PRODUCT_STATUS_CHANGE.

הרשמה לחשבון יעד ספציפי

הבקשה לדוגמה הבאה נרשמת לשינויים בסטטוס המוצר בחשבון של מוכר/ת ספציפי:

POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "targetAccount": "accounts/{TARGETACCOUNT_ID}",
  "callBackUri": "https://example.com/callback"
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ACCOUNT_ID: המזהה של החשבון שבבעלותו המינוי ושמקבל את ההתראות.
  • ‫TARGETACCOUNT_ID: המזהה של החשבון שרוצים לקבל לגביו התראות.

אם חשבון Merchant Center שלכם הוא חשבון עצמאי ללא חשבונות מקושרים, השתמשו במספר החשבון שלכם בשני המשתנים.

הרשמה לכל החשבונות המנוהלים

אם אתם מנהלים כמה חשבונות (למשל חשבון מתקדם עם חשבונות משנה), אתם יכולים להירשם לקבלת עדכונים על שינויים בסטטוס המוצרים בכל החשבונות המנוהלים על ידי הגדרת allManagedAccounts: true:

POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com/callback"
}

קריאות מוצלחות מחזירות מזהה name למינוי, כולל מזהה מינוי ייחודי:

{
  "name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com/callback"
}

פענוח של נתוני השינויים בסטטוס המוצר

כשסטטוס המוצר משתנה, ה-URI של הקריאה החוזרת מקבל הודעה בקידוד base64. אחרי הפענוח, המטען הייעודי (payload) תואם לפורמט ProductStatusChangeMessage:

{
  "account": "accounts/{TARGETACCOUNT_ID}",
  "managingAccount": "accounts/{ACCOUNT_ID}",
  "resourceType": "PRODUCT",
  "attribute": "STATUS",
  "changes": [{
    "oldValue": "approved",
    "newValue": "disapproved",
    "regionCode": "US",
    "reportingContext": "SHOPPING_ADS"
  }, {
    "oldValue": "approved",
    "newValue": "disapproved",
    "regionCode": "JP",
    "reportingContext": "SHOPPING_ADS"
  },{
    "oldValue": "approved",
    "newValue": "disapproved",
    "regionCode": "GE",
    "reportingContext": "SHOPPING_ADS"
  }],
  "resourceId": "ONLINE~en~US~1234",
  "resource": "accounts/{TARGETACCOUNT_ID}/products/ONLINE~en~US~1234",
  "expirationTime": "2024-10-22T02:43:47.461464Z",
  "eventTime": "2024-03-21T02:43:47.461464Z"
}

שדות וכללים של מטען ייעודי (payload)

  • ‫oldValue ו-newValue: מייצגים את הסטטוס הקודם והסטטוס המעודכן. הערכים האפשריים הם approved,‏ pending,‏ disapproved או מחרוזת ריקה ('').
    • אם לא מציינים את oldValue, המוצר נוצר מחדש.
    • אם המאפיין newValue לא מופיע, המוצר נמחק.
  • ‫expirationTime: מציין מתי פג התוקף של המוצר. השדה הזה מושמט כשמוחקים מוצר.
  • ‫reportingContext: פלטפורמת הפרסום או כרטיסי המוצר החינמיים שבה הסטטוס השתנה. הערכים הנתמכים כוללים את SHOPPING_ADS,‏ LOCAL_INVENTORY_ADS,‏ YOUTUBE_SHOPPING,‏ YOUTUBE_CHECKOUT,‏ YOUTUBE_AFFILIATE ו-FREE_LISTINGS_UCP_CHECKOUT מ-ReportingContextEnum.
  • eventTime: חותמת הזמן שבה נוצר האירוע. השתמשו בחותמת הזמן הזו כדי לוודא שהאירועים מסודרים בסדר הנכון.

התראות בדיקה על שינויים בסטטוס המוצר

כדי לבדוק אם נקודת הקצה של הקריאה החוזרת מקבלת, מאשרת ומפענחת בצורה נכונה הודעות על שינוי בסטטוס המוצר, אתם יכולים להשתמש בבקשה לדוגמה הבאה:

curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJQUk9EVUNUIiwKICAiYXR0cmlidXRlIjogIlNUQVRVUyIsCiAgImNoYW5nZXMiOiBbewogICAgIm9sZFZhbHVlIjogImFwcHJvdmVkIiwKICAgICJyZWdpb25Db2RlIjogIlVTIiwKICAgICJyZXBvcnRpbmdDb250ZXh0IjogIlNIT1BQSU5HX0FEUyIKICB9XSwKICAicmVzb3VyY2VJZCI6ICJPTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAicmVzb3VyY2UiOiAiYWNjb3VudHMvMTIzNC9wcm9kdWN0cy9PTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAiZXhwaXJhdGlvblRpbWUiOiAiMjAyNC0xMC0yMlQwMjo0Mzo0Ny40NjE0NjRaIiwKICAiZXZlbnRUaW1lIjogIjIwMjQtMDMtMjFUMDI6NDM6NDcuNDYxNDY0WiIKfQ=="}}'

בתגובה לקריאה הזו, ה-URI של הקריאה החוזרת צריך להחזיר קוד סטטוס HTTP תקין (כמו 200 OK). ההודעה המפוענחת מכילה את התוכן הבא:

{
  "account": "accounts/1234",
  "managingAccount": "accounts/5678",
  "resourceType": "PRODUCT",
  "attribute": "STATUS",
  "changes": [{
    "oldValue": "approved",
    "regionCode": "US",
    "reportingContext": "SHOPPING_ADS"
  }],
  "resourceId": "ONLINE~en~US~000000000000",
  "resource": "accounts/1234/products/ONLINE~en~US~000000000000",
  "expirationTime": "2024-10-22T02:43:47.461464Z",
  "eventTime": "2024-03-21T02:43:47.461464Z"
}