接收有关账号服务变更的推送通知

您可以订阅 ACCOUNT_SERVICE_CHANGE 通知,以便在 AccountService 资源创建、更新或删除时收到实时提醒。对于管理多账号服务关系的第三方提供商和企业,这一点尤为重要。

订阅账号服务变更后,您无需轮询 API,即可立即检测到账号服务何时被提议、批准、更新或移除。

在开始之前,请确保您的回调 URI 已按照通知子 API 概览中所述的要求进行配置。

订阅账号服务变更

如需订阅账号服务变更,请向 notificationsubscriptions 资源发送 POST 请求,并将 registeredEvent 设置为 ACCOUNT_SERVICE_CHANGE。

为特定目标账号订阅

以下示例请求订阅了特定商家账号的账号服务变更:

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:拥有相应订阅并接收通知的账号的标识符。
  • TARGETACCOUNT_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:

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