第 5 步:实时 API 更新

您系统中的广告资源在一天中会因为新的预订、 取消订单、安排更改以及安排更改。实时更新 API 是一种将商品目录变化告知 Google 的机制 。您还可以使用实时 API 更新将 对现有预订所做的更改。

API 的实时更新和 Feed

API 实时更新用于通知 Google 以下项目的增量更改: 实时掌握库存的可用情况和预订情况此外 实时 API 更新,每天发送完整的可用性 Feed, 因为 Google 拥有最准确、最新的库存状况信息, 您的系统中完整的 Feed 会用作当前 Feed 的快照 您系统中广告资源可用情况的状态

虽然 API 更新可用于更新 (例如有关商家和服务的信息), 通常仅用于更新库存状况信息。

需要实时更新的 API

需要实时更新 (RTU) 的 API
BookingNotification 必须 每当有预订通知时都发送 BookingNotification RTU 预订变更(例如修改或取消)。
可用性替换 RTU 随条件发生变化[1] 发送任一 批量替换单个替换 RTU,用于发送对商品目录库存状况的更新。 更改可能需要几分钟才能传播和反映。
商家 RTU 可选 如果您想对商家进行更改,请发送商家 RTU 实时更新信息更改可能需要几个小时才能生效 和反思。
服务 RTU 可选 如果您想更改服务,请发送服务 RTU 实时更新信息一个常见的使用场景是 大幅波动,实施服务 RTU 建议,以免因价格不一致而导致订单失败。更改可 需要几个小时才能传播和反映
<ph type="x-smartling-placeholder">

可用性替换 API RTU

使用可用性替换 API 在 以下用例:

  • 用户在您的系统上进行了预订,因此可用性空档为 。
  • 商家在您的系统中更改了可用性。
  • 用户通过 Google 进行预订,因此可用性空档为 。
  • 例如,您这边通过 Google 进行的预订被取消, 由商家直接上传您需要更新预订以及 可用性,因为原始空档现在又可用了。
  • 预订服务器 BatchAvailabilityLookup 调用返回 与实际广告资源不匹配的广告资源。

如需了解详情,请参阅以下资源:

Booking Notification API RTU

Booking Notification API 会将相关信息告知 Google 对现有预订进行更新。在你发送有关订阅取消的最新动态时 在请求中只发送重要信息 updateMask 查询参数。示例如下:

Request:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status

Body:
{"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"CANCELED"}

访问 API

创建服务账号

您可以使用 Google API 控制台中的凭据标签页来 创建服务账号。将 JSON 格式的私钥存储在安全的 位置。创建账号时,您可以选择将角色设为 “负责人。”

对 Maps Booking API 进行身份验证

创建服务账号后,请对以下 API 进行身份验证:

  • Google Maps Booking API
  • Google Maps Booking API(开发者版)

有关如何执行此操作的分步指南,请参阅 使用 Maps Booking API 进行身份验证教程。

使用 RESTful 调用或者下载客户端库

我们建议您直接对 Maps Booking API 进行 RESTful 调用 JSON 载荷。有关详情,请参阅 REST API 文档

您还可以通过客户端库连接到 API。

语言 下载链接
Java Java 客户端库。有关详情,请参阅 Java 客户端说明

其他 支持库可供下载 处理 Google API 调用的授权和其他方面。如有需要 看看 这些示例

提取发现文档

对于某些客户端库(如 Ruby),有必要从 API 的发现文档,其中介绍了其方法和 参数。

使用以下命令提取 Discovery 文档:

curl -s -o 'mapsbooking_rest' 'https://mapsbooking.googleapis.com/$discovery/rest?version=v1alpha'

如需详细了解如何从 Ruby 访问 API,请访问以下链接: Ruby API 客户端Ruby 身份验证库

对 API 进行已获授权的调用

调用该 API 时,请参阅 准备进行已获授权的 API 调用以向您的服务授权 账号与您的私钥及以下 OAuth 范围相关联: https://www.googleapis.com/auth/mapsbooking

API 配额

API 更新的配额为每 60 秒 1500 次请求,即 25 次请求 平均每秒运行 1 次当您超出配额(可能是因为您没有在合作伙伴门户中添加正确的 Google Cloud 项目编号时)时,Google 会回复 以下错误消息:

{
  "error": {
    "code": 429,
    "message": "Insufficient tokens for quota ...",
    "status": "RESOURCE_EXHAUSTED",
    "details": [...]
  }
}

要解决此问题,请以指数级时间再次重试调用, 就会成功如果您定期用尽 ReplaceServiceAvailability,切换到 BatchReplaceServiceAvailabily,以减少 API 的数量 调用。通过此方法,您可以在单个 API 中更新多项服务 调用。

沙盒环境和生产环境中的端点

您可以通过以下命令调用沙盒环境和生产环境: 该 API。确保您已在 Google Cloud 项目中启用了这两个 API。 这两个 API 的范围相同,但端点不同。

生产端点:https://mapsbooking.googleapis.com/

沙盒端点:https://partnerdev-mapsbooking.googleapis.com/

以下是有关如何切换端点的 Java 示例:

    // This block of code is for OAuth and is the same for prod and sandbox.
    GoogleCredential
      .fromStream(new FileInputStream(...))
      .createScoped(Collections.singleton("https://www.googleapis.com/auth/mapsbooking"))

    // This block of code sets the endpoint. This is what you'd change to connect to the sandbox.
    new GoogleMapsBookingAPI.Builder(...)
      .setApplicationName(...)
      .setRootUrl("https://partnerdev-mapsbooking.googleapis.com/") // you add this to change the endpoint to use partnerdev.
      .build()