你可以訂閱PRODUCT_STATUS_CHANGE通知,在 Merchant Center 帳戶中的產品核准狀態變更時,收到即時快訊。舉例來說,你可以偵測產品何時遭到拒登,以便修正潛在的資料品質問題。
開始前,請確認回呼 URI 已根據通知子 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:擁有訂閱項目並接收通知的帳戶 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:狀態變更的廣告或免費產品資訊平台。支援的值包括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"
}