يمكنك استخدام Merchant Notifications API لتلقّي إشعارات فورية عند حدوث تغييرات. إلى بيانات الحساب. على سبيل المثال، إذا اشتركت في خدمة تغيير حالة المنتج الإشعارات، يمكن إعلامك في الوقت الفعلي عند رفض منتج ما. يمكنك الاشتراك في الإشعارات لأي من الحسابات الفرعية أو المرتبطة الأخرى الحسابات.
يقدّم هذا الدليل أمثلة على كيفية إدارة الإشعارات الخاصة بحالة المنتج.
التغييرات. يمكنك استخدام هذه الأمثلة لإدارة الإشعارات لأحداث أخرى كما يلي:
تغيير قيمة الحقل registeredEvent
في طلباتك. للحصول على
قائمة بأنواع الأحداث، راجِع Merchant Notifications API
المرجع.
اشتراك
لتلقّي الإشعارات، تحتاج إلى callBackUri
. يجب أن يكون معرّف الموارد المنتظم (URI) لمعاودة الاتصال
استيفاء المتطلبات التالية:
- يجب أن يكون عنوان HTTPS متاحًا للجميع ومزوّدًا بشهادة طبقة مقابس آمنة (SSL) صالحة. وموقَّعة من مرجع مصدق.
- يجب قبول طلبات HTTP
POST
التي تتضمّن العنوانContent-Type
القيمةapplication/json
. - يجب عرض أحد رموز الاستجابة التالية للإقرار بأنّ
.
102
200
201
202
204
يمكنك استخدام نفس معرِّف الموارد المنتظم (URI) لمعاودة الاتصال مع اشتراكات متعددة. ننصح باستخدام معرف موارد منتظم (URI) فريد لمعاودة الاتصال لكل متقدم account، لكل نوع حدث تقليل تحميل طلبات الدفع إلى عنوان URI واحد.
في ما يلي نموذج طلب للاشتراك في الإشعارات بشأن التغييرات في حالة المنتج
لحساب تاجر محدَّد استخدِم معرّف التاجر الخاص بالحساب الذي يجب أن
تلقّي الإشعارات على شكل merchantId
في عنوان URL للطلب
معرّف التاجر في الحساب الذي تريد تلقي إشعارات بشأنه
targetMerchantId
في نص الطلب. إذا كان حسابك مستقلاً
بدون حسابات مرتبطة، وترغب في تلقي إشعارات بشأن
حسابك، استخدم معرّف التاجر الخاص بك في كلتا الخدمتين.
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"
إذا لم يكن هناك حقل old_value
في الإشعار، يعني هذا أنّ المنتج الجديد
تمت إضافتها إلى حسابك. أمّا إذا لم يتوفّر الحقل new_value
، هذا يعني أنّه تم حذف المنتج.
من حسابك.
يمكن استخدام الحقل reporting_context
فقط (SHOPPING_ADS
وLOCAL_INVENTORY_ADS
وYOUTUBE_SHOPPING
) من قيمة التعداد ReportingContextEnum.
التحقق من نجاح العملية
إليك نموذج إشعار يمكنك استخدامه لاختبار معرّف الموارد المنتظم (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"