Nhận thông báo đẩy khi trạng thái sản phẩm thay đổi

Bạn có thể đăng ký nhận thông báo PRODUCT_STATUS_CHANGE để nhận cảnh báo theo thời gian thực mỗi khi trạng thái phê duyệt sản phẩm thay đổi trong tài khoản Merchant Center. Ví dụ: bạn có thể phát hiện khi một sản phẩm bị từ chối để có thể khắc phục các vấn đề tiềm ẩn về chất lượng dữ liệu.

Trước khi bắt đầu, hãy đảm bảo rằng URI gọi lại của bạn được định cấu hình theo các yêu cầu được mô tả trong phần Tổng quan về API phụ Thông báo.

Đăng ký nhận thông báo khi trạng thái sản phẩm thay đổi

Để đăng ký nhận thông báo về các thay đổi về trạng thái sản phẩm, hãy gửi yêu cầu POST đến tài nguyên notificationsubscriptions với registeredEvent được đặt thành PRODUCT_STATUS_CHANGE.

Đăng ký cho một tài khoản mục tiêu cụ thể

Yêu cầu mẫu sau đây đăng ký nhận thông báo về các thay đổi đối với trạng thái sản phẩm cho một tài khoản nhà bán hàng cụ thể:

POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "targetAccount": "accounts/{TARGETACCOUNT_ID}",
  "callBackUri": "https://example.com/callback"
}

Thay thế nội dung sau:

  • ACCOUNT_ID: Giá trị nhận dạng của tài khoản sở hữu gói thuê bao và nhận thông báo.
  • TARGETACCOUNT_ID: Giá trị nhận dạng của tài khoản mà bạn muốn nhận thông báo.

Nếu tài khoản Merchant Center của bạn là một tài khoản độc lập và không có tài khoản nào được liên kết, hãy sử dụng mã tài khoản của riêng bạn cho cả hai biến.

Đăng ký cho tất cả tài khoản được quản lý

Nếu quản lý nhiều tài khoản (chẳng hạn như tài khoản nâng cao có tài khoản phụ), bạn có thể đăng ký nhận thông báo về các thay đổi đối với trạng thái sản phẩm trên tất cả các tài khoản được quản lý bằng cách đặt allManagedAccounts: true:

POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com/callback"
}

Các lệnh gọi thành công sẽ trả về một giá trị nhận dạng name cho gói thuê bao của bạn, bao gồm cả mã nhận dạng riêng biệt của gói thuê bao:

{
  "name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com/callback"
}

Giải mã tải trọng thay đổi trạng thái sản phẩm

Khi trạng thái sản phẩm thay đổi, URI lệnh gọi lại của bạn sẽ nhận được một thông báo được mã hoá base64. Khi được giải mã, tải trọng sẽ tuân theo định dạng 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"
}

Các trường và quy tắc tải trọng

  • oldValue và newValue: Biểu thị trạng thái trước đó và trạng thái mới cập nhật. Các giá trị có thể là approved, pending, disapproved hoặc một chuỗi trống ('').
    • Nếu bạn bỏ qua oldValue, sản phẩm sẽ được tạo mới.
    • Nếu bạn bỏ qua newValue, sản phẩm sẽ bị xoá.
  • expirationTime: Cho biết thời điểm ưu đãi sản phẩm hết hạn. Trường này sẽ bị bỏ qua khi một sản phẩm bị xoá.
  • reportingContext: Nền tảng quảng cáo hoặc trang thông tin miễn phí nơi trạng thái thay đổi. Các giá trị được hỗ trợ bao gồm SHOPPING_ADS, LOCAL_INVENTORY_ADS, YOUTUBE_SHOPPING, YOUTUBE_CHECKOUT, YOUTUBE_AFFILIATE và FREE_LISTINGS_UCP_CHECKOUT trong ReportingContextEnum.
  • eventTime: Dấu thời gian khi sự kiện được tạo. Hãy sử dụng dấu thời gian này để đảm bảo thứ tự chính xác của các sự kiện.

Thông báo thử nghiệm về các thay đổi về trạng thái sản phẩm

Hãy sử dụng yêu cầu mẫu sau đây để kiểm tra xem điểm cuối gọi lại của bạn có nhận, xác nhận và giải mã đúng các thông báo thay đổi trạng thái sản phẩm hay không:

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=="}}'

Để phản hồi lệnh gọi này, URI gọi lại của bạn phải trả về một mã trạng thái HTTP chấp nhận được (chẳng hạn như 200 OK). Thông báo đã giải mã có nội dung sau:

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