अपने खाते के डेटा में बदलाव होने पर पुश नोटिफ़िकेशन पाएं

बदलावों से जुड़े पुश नोटिफ़िकेशन पाने के लिए, Merchant Notifications API का इस्तेमाल किया जा सकता है खाते के डेटा में बदल सकता है. उदाहरण के लिए, अगर आपने प्रॉडक्ट की स्थिति में बदलाव की सदस्यता ली है सूचनाएं नहीं दिखाई जाती हैं, तो किसी प्रॉडक्ट के अस्वीकार होने पर आपको रीयल टाइम में सूचना दी जा सकती है. आप अपनी किसी भी सूचना की सदस्यता ले सकते हैं उप-खाते या लिंक किए गए अन्य खाते खाते.

इस गाइड में, प्रॉडक्ट की स्थिति से जुड़ी सूचनाओं को मैनेज करने के उदाहरण दिए गए हैं बदलाव. इन उदाहरणों का इस्तेमाल करके, अन्य इवेंट की सूचनाओं को मैनेज किया जा सकता है आपके अनुरोधों में registeredEvent फ़ील्ड की वैल्यू बदलकर. एक पूरी इवेंट टाइप की सूची देखने के लिए, Merchant Notifications API देखें संदर्भ देखें.

सदस्यता लें

सूचनाएं पाने के लिए, आपके पास callBackUri होना ज़रूरी है. आपके कॉलबैक यूआरआई को ये ज़रूरी शर्तें पूरी करते हों:

  • मान्य एसएसएल सर्टिफ़िकेट के साथ सार्वजनिक तौर पर ऐक्सेस किया जा सकने वाला एचटीटीपीएस पता होना चाहिए, सर्टिफ़िकेट देने वाली संस्था या निकाय के हस्ताक्षर हों.
  • Content-Type हेडर और एचटीटीपी POST अनुरोधों को स्वीकार करना ज़रूरी है application/json वैल्यू.
  • यह स्वीकार करने के लिए कि सूचना मिली.
    • 102
    • 200
    • 201
    • 202
    • 204

एक से ज़्यादा सदस्यताओं के लिए, एक ही कॉलबैक यूआरआई का इस्तेमाल किया जा सकता है. हमारा सुझाव है कि आप इनका इस्तेमाल करें हर बेहतर सेटिंग के लिए यूनीक कॉलबैक यूआरआई खाता, हर इवेंट टाइप के लिए एक यूआरआई पर पुश अनुरोधों का लोड कम से कम करें.

यहां प्रॉडक्ट की स्थिति में बदलाव से जुड़ी सूचनाएं पाने की सदस्यता लेने के अनुरोध का एक सैंपल दिया गया है किसी ख़ास व्यापारी खाते के लिए. उस खाते का मर्चेंट आईडी इस्तेमाल करें जिसे नोटिफ़िकेशन को अनुरोध यूआरएल में merchantId के तौर पर पाएं और उस खाते का मर्चेंट ID, जिसके लिए अनुरोध के मुख्य हिस्से में 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"
}

किसी मौजूदा सदस्यता को अपडेट करने के लिए, update_mask के साथ PATCH का इस्तेमाल करें फ़ील्ड, जिन्हें आपको अपडेट करना है और 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"

आपने जो लागू किया है उसकी जांच करना

यहां एक सैंपल सूचना दी गई है. इसका इस्तेमाल, अपने कॉलबैक यूआरआई की जांच करने और डिकोड करने के लिए किया जा सकता है:

curl --header "Content-Type: application/json" --header "Accept: text/plain" --request POST --data '{"message":{"data":
"ImFjY291bnQiOiAiYWNjb3VudHMvMTIzNCIKIm1hbmFnaW5nX2FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIKInJlc291cmNlX3R5cGUiOiBQUk9EVUNUCiJhdHRyaWJ1dGUiOiBTVEFUVVMKImNoYW5nZXMiOiB7CiAgIm9sZF92YWx1ZSI6ICJlbGlnaWJsZSIKICAicmVnaW9uX2NvZGUiOiAiVVMiCiAgInJlcG9ydGluZ19jb250ZXh0IjogU0hPUFBJTkdfQURTCn0KInJlc291cmNlX2lkIjogIk9OTElORX5lbn5VU34wMDAwMDAwMDAwMDAiCiJyZXNvdXJjZSI6ICJhY2NvdW50cy8xMjM0L3Byb2R1Y3RzL09OTElORX5lbn5VU34wMDAwMDAwMDAwMDAi"}}' https://{callBackUri}

इस कॉल के जवाब में, आपके कॉलबैक यूआरआई को पूरा जवाब मिलना चाहिए कोड. डिकोड किए गए मैसेज की वैल्यू नीचे दी गई होगी:

"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"