बदलावों से जुड़े पुश नोटिफ़िकेशन पाने के लिए, 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"
अगर सूचना में कोई old_value
फ़ील्ड नहीं है, तो एक नया प्रॉडक्ट था
आपके खाते में जोड़ा गया. अगर new_value
फ़ील्ड नहीं है, तो प्रॉडक्ट मिटा दिया गया था
आपके खाते से
reporting_context
फ़ील्ड, Enum वैल्यू ReportingContextEnum में सिर्फ़ SHOPPING_ADS
, LOCAL_INVENTORY_ADS
, YOUTUBE_SHOPPING
के साथ काम करता है.
आपने जो लागू किया है उसकी जांच करना
यहां एक सैंपल सूचना दी गई है. इसका इस्तेमाल, अपने कॉलबैक यूआरआई की जांच करने और डिकोड करने के लिए किया जा सकता है:
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"