您可以訂閱 PRODUCT_STATUS_CHANGE 通知,在 Merchant Center 帳戶中的產品核准狀態變更時,即時收到快訊。舉例來說,您可以偵測產品何時遭到拒登,以便修正潛在的資料品質問題。
開始之前,請務必按照「Notifications sub-API 總覽」一文所述規定,設定回呼 URI。
訂閱產品狀態變更
如要訂閱產品狀態變更,請將 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:擁有訂閱項目並接收通知的帳戶 ID。
- TARGETACCOUNT_ID:您要接收通知的帳戶 ID。
如果 Merchant Center 帳戶是獨立帳戶,沒有已連結帳戶,請在兩個變數中使用自己的帳戶 ID。
為所有客戶帳戶訂閱
如果你管理多個帳戶 (例如具有子帳戶的進階帳戶),可以設定 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 ID,包括專屬訂閱 ID:
{
"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:狀態變更的廣告或免費產品資訊平台。支援的值包括 ReportingContextEnum 中的SHOPPING_ADS、LOCAL_INVENTORY_ADS、YOUTUBE_SHOPPING、YOUTUBE_CHECKOUT、YOUTUBE_AFFILIATE和FREE_LISTINGS_UCP_CHECKOUT。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"
}