অ্যাকাউন্ট ডেটাতে পরিবর্তনের জন্য পুশ বিজ্ঞপ্তি পেতে আপনি বণিক বিজ্ঞপ্তি API ব্যবহার করতে পারেন। উদাহরণ স্বরূপ, আপনি যদি পণ্যের স্থিতি পরিবর্তনের বিজ্ঞপ্তিতে সদস্যতা নেন, তাহলে কোনো পণ্য অস্বীকৃত হলে আপনাকে রিয়েল টাইমে অবহিত করা যেতে পারে। আপনি আপনার যেকোনো সাব-অ্যাকাউন্ট বা অন্যান্য লিঙ্ক করা অ্যাকাউন্টের জন্য বিজ্ঞপ্তিতে সদস্যতা নিতে পারেন।
এই নির্দেশিকা পণ্যের স্থিতি পরিবর্তনের জন্য বিজ্ঞপ্তিগুলি কীভাবে পরিচালনা করতে হয় তার উদাহরণ প্রদান করে৷ আপনি আপনার অনুরোধে registeredEvent
ক্ষেত্রের মান পরিবর্তন করে অন্যান্য ইভেন্টগুলির জন্য বিজ্ঞপ্তিগুলি পরিচালনা করতে এই উদাহরণগুলি ব্যবহার করতে পারেন৷ ইভেন্টের প্রকারের সম্পূর্ণ তালিকার জন্য, মার্চেন্ট বিজ্ঞপ্তি API রেফারেন্স দেখুন।
সদস্যতা
বিজ্ঞপ্তি পেতে, আপনার একটি callBackUri
প্রয়োজন। আপনার কলব্যাক URI নিম্নলিখিত প্রয়োজনীয়তা পূরণ করতে হবে:
- একটি বৈধ SSL শংসাপত্র সহ একটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য HTTPS ঠিকানা হতে হবে, একটি শংসাপত্র কর্তৃপক্ষ দ্বারা স্বাক্ষরিত৷
-
Content-Type
হেডার এবংapplication/json
মান সহ HTTPPOST
অনুরোধগুলি অবশ্যই গ্রহণ করতে হবে। - বিজ্ঞপ্তিটি গৃহীত হয়েছে তা স্বীকার করতে নিম্নলিখিত প্রতিক্রিয়া কোডগুলির মধ্যে একটি ফেরত দিতে হবে।
-
102
-
200
-
201
-
202
-
204
-
আপনি একাধিক সদস্যতার জন্য একই কলব্যাক ইউআরআই ব্যবহার করতে পারেন। আমরা একটি একক URI-তে পুশ অনুরোধের লোড কমাতে ইভেন্টের ধরন প্রতি উন্নত অ্যাকাউন্ট প্রতি একটি অনন্য কলব্যাক URI ব্যবহার করার পরামর্শ দিই।
এখানে একটি নির্দিষ্ট বণিক অ্যাকাউন্টের জন্য পণ্যের স্থিতি পরিবর্তনের বিজ্ঞপ্তিগুলিতে সদস্যতা নেওয়ার জন্য একটি নমুনা অনুরোধ রয়েছে৷ অনুরোধের ইউআরএলে merchantId
আইডি হিসেবে বিজ্ঞপ্তি পাওয়া অ্যাকাউন্টের মার্চেন্ট আইডি এবং অনুরোধের বডিতে 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"
}
আপনি পৃথক সদস্যতা GET
এবং DELETE
এই name
ব্যবহার করতে পারেন৷
আপনি "allManagedAccounts": true
আপনার অনুরোধে একটি targetAccount
পরিবর্তে সত্য:
POST https://merchantapi.googleapis.com/notifications/v1beta/accounts/merchantId/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com"
}
একটি বিদ্যমান সাবস্ক্রিপশন আপডেট করতে, আপনি আপডেট করতে চান এমন ক্ষেত্রগুলি এবং JSON বডিতে নতুন মানগুলি নির্দিষ্ট করতে update_mask
সহ PATCH
ব্যবহার করুন:
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",
"managingAccount": "accounts/merchantId",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "eligible",
"newValue": "disapproved",
"regionCode": "US",
"reportingContext": "SHOPPING_ADS"
}, {
"oldValue": "eligible",
"newValue": "disapproved",
"regionCode": "JP",
"reportingContext": "SHOPPING_ADS"
},{
"oldValue": "eligible",
"newValue": "disapproved",
"regionCode": "GE",
"reportingContext": "SHOPPING_ADS"
}],
"resourceId": "ONLINE~en~US~1234",
"resource": "accounts/targetMerchantId/products/ONLINE~en~US~1234",
"expirationTime": "2024-10-22T02:43:47.461464Z"
}
বিজ্ঞপ্তিতে কোনো oldValue
ক্ষেত্র না থাকলে, আপনার অ্যাকাউন্টে একটি নতুন পণ্য যোগ করা হয়েছে। যদি কোনও newValue
ক্ষেত্র না থাকে তবে পণ্যটি আপনার অ্যাকাউন্ট থেকে মুছে ফেলা হয়েছে।
reportingContext
ক্ষেত্রটি শুধুমাত্র enum মান ReportingContextEnum থেকে ( SHOPPING_ADS
, LOCAL_INVENTORY_ADS
, YOUTUBE_SHOPPING
, YOUTUBE_CHECKOUT
) সমর্থন করে।
আপনার বাস্তবায়ন পরীক্ষা করুন
এখানে একটি নমুনা বিজ্ঞপ্তি রয়েছে যা আপনি আপনার কলব্যাক ইউআরআই এবং ডিকোডিং পরীক্ষা করতে ব্যবহার করতে পারেন:
curl --header "Content-Type: application/json" --header "Accept: text/plain" --request POST --data '{"message":{"data":
"ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJQUk9EVUNUIiwKICAiYXR0cmlidXRlIjogIlNUQVRVUyIsCiAgImNoYW5nZXMiOiBbewogICAgIm9sZFZhbHVlIjogImVsaWdpYmxlIiwKICAgICJyZWdpb25Db2RlIjogIlVTIiwKICAgICJyZXBvcnRpbmdDb250ZXh0IjogIlNIT1BQSU5HX0FEUyIKICB9XSwKICAicmVzb3VyY2VJZCI6ICJPTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAicmVzb3VyY2UiOiAiYWNjb3VudHMvMTIzNC9wcm9kdWN0cy9PTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAiZXhwaXJhdGlvblRpbWUiOiAiMjAyNC0xMC0yMlQwMjo0Mzo0Ny40NjE0NjRaIgp9"}}' https://{callBackUri}
এই কলের প্রতিক্রিয়া হিসাবে, আপনার কলব্যাক ইউআরআই একটি সফল প্রতিক্রিয়া কোড ফেরত দেবে। ডিকোড করা বার্তার নিম্নলিখিত মান থাকা উচিত:
{
"account": "accounts/1234",
"managingAccount": "accounts/5678",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "eligible",
"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"
}