รับข้อความ Push สำหรับการเปลี่ยนแปลงสถานะผลิตภัณฑ์

คุณสามารถสมัครรับPRODUCT_STATUS_CHANGEการแจ้งเตือนเพื่อรับการแจ้งเตือนแบบเรียลไทม์ ทุกครั้งที่สถานะการอนุมัติผลิตภัณฑ์เปลี่ยนแปลงในบัญชี Merchant Center เช่น คุณสามารถตรวจหาเมื่อผลิตภัณฑ์ไม่ได้รับอนุมัติเพื่อแก้ไขปัญหาด้านคุณภาพของข้อมูลที่อาจเกิดขึ้นได้

ก่อนเริ่มต้น โปรดตรวจสอบว่าได้กำหนดค่า URI การเรียกกลับตาม ข้อกำหนดที่อธิบายไว้ในภาพรวมของ Sub-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 การเรียกกลับจะได้รับข้อความที่เข้ารหัส 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 จาก ReportingContextEnum
  • eventTime: การประทับเวลาเมื่อสร้างเหตุการณ์ ใช้การประทับเวลานี้ เพื่อให้มั่นใจว่าเหตุการณ์จะเรียงตามลำดับอย่างถูกต้อง

ทดสอบการแจ้งเตือนการเปลี่ยนแปลงสถานะผลิตภัณฑ์

ใช้คำขอตัวอย่างต่อไปนี้เพื่อทดสอบว่าปลายทางการเรียกกลับ รับ ทราบ และถอดรหัสข้อความการเปลี่ยนแปลงสถานะผลิตภัณฑ์ได้อย่างถูกต้องหรือไม่

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 ของการเรียกกลับควรแสดงรหัสสถานะ 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"
}