يمكنك تلقّي إشعارات فورية بالتغييرات التي تطرأ على بيانات حسابك.

يمكنك استخدام واجهة برمجة التطبيقات Merchant notifications API لتلقّي إشعارات فورية عند رصد أي تغييرات في بيانات الحساب. على سبيل المثال، إذا اشتركت في إشعارات تغيير حالة المنتج، يمكنك إرسال إشعار إليك في الوقت الفعلي عندما يتم رفض المنتج. يمكنك الاشتراك في خدمة تلقّي الإشعارات بشأن أيّ من حساباتك الفرعية أو الحسابات المرتبطة الأخرى.

يقدّم هذا الدليل أمثلة حول كيفية إدارة الإشعارات المتعلّقة بالتغييرات في حالة المنتجات. يمكنك استخدام هذه الأمثلة لإدارة الإشعارات لأحداث أخرى من خلال تغيير قيمة الحقل registeredEvent في طلباتك. للحصول على قائمة كاملة بأنواع الأحداث، يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات لإشعارات التاجر.

اشتراك

لتلقّي الإشعارات، تحتاج إلى callBackUri. يجب أن يفي معرّف الموارد المنتظم (URI) لرد الاتصال بالمتطلبات التالية:

  • يجب أن يكون عنوان HTTPS متاحًا للجميع مع شهادة طبقة مقابس آمنة (SSL) صالحة، وموقَّعة من مرجع تصديق.
  • يجب قبول طلبات HTTP POST التي تتضمّن العنوان Content-Typeوالقيمة application/json.
  • يجب عرض أحد رموز الاستجابة التالية للإقرار باستلام الإشعار.
    • 102
    • 200
    • 201
    • 202
    • 204

يمكنك استخدام معرّف الموارد المنتظم (URI) لرد الاتصال نفسه لاشتراكات متعددة. ننصح باستخدام معرّف موارد منتظم (URI) فريد لمعاودة الاتصال لكل حساب متقدّم ولكل نوع حدث للحدّ من تحميل الطلبات الفورية إلى معرّف موارد منتظم (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"

التحقق من نجاح العملية

في ما يلي نموذج إشعار يمكنك استخدامه لاختبار معرّف الموارد المنتظم (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"