شما میتوانید در اعلانهای PRODUCT_STATUS_CHANGE مشترک شوید تا هر زمان که وضعیت تأیید محصول در حسابهای مرکز فروشندگان شما تغییر کرد، هشدارهای بلادرنگ دریافت کنید. به عنوان مثال، میتوانید تشخیص دهید که چه زمانی یک محصول تأیید نمیشود تا بتوانید مشکلات احتمالی کیفیت دادهها را برطرف کنید.
قبل از شروع، مطمئن شوید که آدرس URL مربوط به فراخوانی شما مطابق با الزامات شرح داده شده در بخش «مرور اجمالی 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 : شناسه حسابی که میخواهید درباره آن اعلان دریافت کنید.
اگر حساب مرکز فروش شما یک حساب مستقل و بدون حسابهای مرتبط است، از شناسه حساب خودتان برای هر دو متغیر استفاده کنید.
برای همه حسابهای مدیریتشده مشترک شوید
اگر چندین حساب کاربری (مانند یک حساب کاربری پیشرفته با حسابهای فرعی) را مدیریت میکنید، میتوانید با تنظیم 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 دریافت میکند. وقتی رمزگشایی میشود، محتوای آن با فرمت 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"
}