يمكنك الاشتراك في إشعارات PRODUCT_STATUS_CHANGE لتلقّي تنبيهات في الوقت الفعلي
عندما تتغيّر حالات الموافقة على المنتجات في حساباتك على Merchant Center. على سبيل المثال، يمكنك رصد حالات رفض المنتجات لتتمكّن من حلّ المشاكل المحتملة في جودة البيانات.
قبل البدء، تأكَّد من ضبط معرّف الموارد المنتظم (URI) لمعاودة الاتصال وفقًا للمتطلبات الموضّحة في نظرة عامة على واجهة برمجة التطبيقات الفرعية للإشعارات.
الاشتراك في خدمة تلقّي إشعارات بشأن التغييرات في حالة المنتجات
للاشتراك في التغييرات في حالة المنتج، أرسِل طلب 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. عند فك ترميز الحمولة، تتوافق مع تنسيق
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"
}
حقول الحمولة وقواعدها
-
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"
}