接收帳戶服務異動的推播通知

您可以訂閱 ACCOUNT_SERVICE_CHANGE 通知,在 AccountService 資源建立、更新或刪除時,接收即時快訊。這對第三方供應商和管理多帳戶服務關係的企業來說,特別實用。

訂閱帳戶服務異動後,您就能立即偵測到帳戶服務的提議、核准、更新或移除,不必輪詢 API。

開始之前,請務必按照「Notifications sub-API 總覽」一文所述規定,設定回呼 URI。

訂閱帳戶服務異動通知

如要訂閱帳戶服務異動通知,請將 registeredEvent 設為 ACCOUNT_SERVICE_CHANGE,然後向 notificationsubscriptions 資源傳送 POST 要求。

訂閱特定目標帳戶

下列範例要求會訂閱特定商家帳戶的帳戶服務異動:

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

更改下列內容:

  • ACCOUNT_ID:擁有訂閱項目並接收通知的帳戶 ID。
  • TARGETACCOUNT_ID:您要接收通知的帳戶 ID。

為所有客戶帳戶訂閱

供應商和管理多個商家帳戶的商家,可以設定 allManagedAccounts: true,訂閱所有一般管理員帳戶的帳戶服務異動:

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

呼叫成功後,系統會傳回訂閱項目的 name ID,包括專屬訂閱 ID:

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

解碼帳戶服務變更酬載

帳戶服務發生異動時,回呼 URI 會收到以 Base64 編碼的訊息。解碼後,酬載會符合 ResourceChangeMessage 格式:

{
  "account": "accounts/{TARGETACCOUNT_ID}",
  "managingAccount": "accounts/{ACCOUNT_ID}",
  "resourceType": "ACCOUNT_SERVICE",
  "resource": "accounts/{TARGETACCOUNT_ID}/services/{SERVICE_ID}",
  "operation": "CREATE",
  "eventTime": "2026-08-25T10:00:00Z"
}

酬載欄位和規則

  • account:擁有已變更服務實體 (accounts/{merchant_id}) 的目標帳戶。
  • managingAccount:管理商家帳戶 (accounts/{service_provider_id}) 的帳戶。
  • resourceType:變更的資源類型 (ACCOUNT_SERVICE)。
  • resource:帳戶服務的完整資源名稱 (例如 accounts/{account}/services/{service})。
  • operation:對資源執行的作業:
    • CREATE:已建立新的帳戶服務關係。
    • UPDATE:現有帳戶服務設定或權限已變更。
    • DELETE:已移除帳戶服務關係。
  • eventTime:事件生成時的時間戳記。請使用這個時間戳記,確保事件順序正確。

測試帳戶服務變更通知

請使用下列範例要求,測試回呼端點是否能正確接收、確認及解碼帳戶服務變更訊息:

curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJBQ0NPVU5UX1NFUlZJQ0UiLAogICJyZXNvdXJjZSI6ICJhY2NvdW50cy8xMjM0L3NlcnZpY2VzLzEyMyIsCiAgIm9wZXJhdGlvbiI6ICJDUkVBVEUiLAogICJldmVudFRpbWUiOiAiMjAyNi0wOC0yNVQxMDowMDowMFoiCn0="}}'

為回應這項呼叫,回呼 URI 應傳回可接受的 HTTP 狀態碼 (例如 200 OK)。解碼後的訊息包含下列內容:

{
  "account": "accounts/1234",
  "managingAccount": "accounts/5678",
  "resourceType": "ACCOUNT_SERVICE",
  "resource": "accounts/1234/services/123",
  "operation": "CREATE",
  "eventTime": "2026-08-25T10:00:00Z"
}