คุณสามารถสมัครรับการแจ้งเตือนของ PRODUCT_STATUS_CHANGE เพื่อรับการแจ้งเตือนแบบเรียลไทม์เมื่อสถานะการอนุมัติผลิตภัณฑ์เปลี่ยนแปลงในบัญชี Merchant Center เช่น คุณสามารถตรวจจับได้เมื่อผลิตภัณฑ์ไม่ได้รับอนุมัติ เพื่อให้คุณแก้ไขปัญหาด้านคุณภาพของข้อมูลที่อาจเกิดขึ้นได้
ก่อนเริ่มต้น โปรดตรวจสอบว่าได้กำหนดค่า URI Callback ตามข้อกำหนดที่อธิบายไว้ในภาพรวมของ API ย่อยสำหรับการแจ้งเตือนแล้ว
สมัครรับข้อมูลการเปลี่ยนแปลงสถานะผลิตภัณฑ์
หากต้องการสมัครรับข้อมูลการเปลี่ยนแปลงสถานะผลิตภัณฑ์ ให้ส่งคำขอ POST ไปยังทรัพยากร notificationsubscriptions โดยตั้งค่า registeredEvent เป็น PRODUCT_STATUS_CHANGE
สมัครใช้บริการสำหรับบัญชีเป้าหมายที่เฉพาะเจาะจง
ตัวอย่างคำขอต่อไปนี้จะสมัครรับข้อมูลการเปลี่ยนแปลงสถานะผลิตภัณฑ์สำหรับบัญชีผู้ขายที่เฉพาะเจาะจง
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
แทนที่ค่าต่อไปนี้
- ACCOUNT_ID: ตัวระบุของบัญชีที่เป็นเจ้าของการสมัครใช้บริการและรับการแจ้งเตือน
- TARGETACCOUNT_ID: ตัวระบุของบัญชีที่คุณต้องการรับการแจ้งเตือน
หากบัญชี Merchant Center เป็นบัญชีแบบสแตนด์อโลนที่ไม่มีบัญชีที่ลิงก์ ให้ใช้รหัสบัญชีของคุณเองสำหรับตัวแปรทั้ง 2 รายการ
สมัครใช้บริการสำหรับบัญชีที่จัดการทั้งหมด
หากคุณจัดการหลายบัญชี (เช่น บัญชีขั้นสูงที่มีบัญชีย่อย) คุณสามารถสมัครรับข้อมูลการเปลี่ยนแปลงสถานะผลิตภัณฑ์ในบัญชีที่จัดการทั้งหมดได้โดยตั้งค่า allManagedAccounts: true ดังนี้
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
การเรียกที่สำเร็จจะแสดงผลตัวระบุ name สำหรับการสมัครใช้บริการ ซึ่งรวมถึงรหัสการสมัครใช้บริการที่ไม่ซ้ำกัน ดังนี้
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
ถอดรหัสเพย์โหลดการเปลี่ยนแปลงสถานะผลิตภัณฑ์
เมื่อมีการเปลี่ยนแปลงสถานะผลิตภัณฑ์ URI Callback จะได้รับข้อความที่เข้ารหัส Base64 เมื่อถอดรหัสแล้ว เพย์โหลดจะเป็นไปตามรูปแบบ ProductStatusChangeMessage ดังนี้
{
"account": "accounts/{TARGETACCOUNT_ID}",
"managingAccount": "accounts/{ACCOUNT_ID}",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "US",
"reportingContext": "SHOPPING_ADS"
}, {
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "JP",
"reportingContext": "SHOPPING_ADS"
},{
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "GE",
"reportingContext": "SHOPPING_ADS"
}],
"resourceId": "ONLINE~en~US~1234",
"resource": "accounts/{TARGETACCOUNT_ID}/products/ONLINE~en~US~1234",
"expirationTime": "2024-10-22T02:43:47.461464Z",
"eventTime": "2024-03-21T02:43:47.461464Z"
}
ฟิลด์และกฎของเพย์โหลด
oldValueและnewValue: แสดงสถานะก่อนหน้าและสถานะที่อัปเดต ค่าที่เป็นไปได้คือapproved,pending,disapprovedหรือสตริงว่าง ('')- หากไม่ใส่
oldValueระบบจะสร้างผลิตภัณฑ์ใหม่ - หากไม่ระบุ
newValueแสดงว่าผลิตภัณฑ์ถูกลบไปแล้ว
- หากไม่ใส่
expirationTime: ระบุวันที่ข้อเสนอผลิตภัณฑ์หมดอายุ ระบบจะไม่แสดงช่องนี้เมื่อลบผลิตภัณฑ์reportingContext: แพลตฟอร์มโฆษณาหรือข้อมูลที่แสดงฟรีซึ่งมีการเปลี่ยนแปลงสถานะ ค่าที่รองรับ ได้แก่SHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATEและFREE_LISTINGS_UCP_CHECKOUTจาก ReportingContextEnumeventTime: การประทับเวลาเมื่อสร้างเหตุการณ์ ใช้การประทับเวลานี้เพื่อตรวจสอบว่าเหตุการณ์ต่างๆ มีการจัดลำดับอย่างถูกต้อง
ทดสอบการแจ้งเตือนการเปลี่ยนแปลงสถานะผลิตภัณฑ์
ใช้คำขอตัวอย่างต่อไปนี้เพื่อทดสอบว่าปลายทาง Callback ได้รับ รับทราบ และถอดรหัสข้อความการเปลี่ยนแปลงสถานะผลิตภัณฑ์อย่างถูกต้องหรือไม่
curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJQUk9EVUNUIiwKICAiYXR0cmlidXRlIjogIlNUQVRVUyIsCiAgImNoYW5nZXMiOiBbewogICAgIm9sZFZhbHVlIjogImFwcHJvdmVkIiwKICAgICJyZWdpb25Db2RlIjogIlVTIiwKICAgICJyZXBvcnRpbmdDb250ZXh0IjogIlNIT1BQSU5HX0FEUyIKICB9XSwKICAicmVzb3VyY2VJZCI6ICJPTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAicmVzb3VyY2UiOiAiYWNjb3VudHMvMTIzNC9wcm9kdWN0cy9PTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAiZXhwaXJhdGlvblRpbWUiOiAiMjAyNC0xMC0yMlQwMjo0Mzo0Ny40NjE0NjRaIiwKICAiZXZlbnRUaW1lIjogIjIwMjQtMDMtMjFUMDI6NDM6NDcuNDYxNDY0WiIKfQ=="}}'ในการตอบสนองต่อการเรียกนี้ URI Callback ควรแสดงรหัสสถานะ HTTP ที่ยอมรับได้ (เช่น 200 OK) ข้อความที่ถอดรหัสแล้วจะมีเนื้อหาต่อไปนี้
{
"account": "accounts/1234",
"managingAccount": "accounts/5678",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "approved",
"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",
"eventTime": "2024-03-21T02:43:47.461464Z"
}