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