合作伙伴服务器

如需集成价格和可用性信息,合作伙伴需要实现 Partner API。此接口基于 REST,允许 Google 通过 HTTP 发送实时调用。虽然参考部分介绍了各个 API 方法的详细信息 ,但您可以在后面找到 有关横切关注点的信息。

请求和响应格式

最初,系统仅支持 JSON 格式。如果需要其他请求或响应 格式,请与 Travel Transport 团队联系,电子邮件地址为 transport-help@google.com,讨论您的 使用情形。

请求将使用 HTTP 方法 POST 发送,请求消息位于 POST 正文中。

请注意,为了结构清晰,API 接口文档以 协议缓冲区 消息定义的形式提供,协议缓冲区 消息定义到 JSON 对象的转换由 规范 JSON 映射定义,使用 以下 选项发出具有默认值的字段使用 proto 字段名称而不是 lowerCamelCase 名称

身份验证

Google 支持 HTTP 摘要式身份验证、OAuth 2.0 和客户端证书 身份验证(请参阅合作伙伴 配置)。 合作伙伴应在 API 测试期间向 Google 提供正确的凭据:

  • 对于摘要式身份验证:用户名和密码。
  • 对于 OAuth 2.0:client_id 和 client_secret。
  • 对于证书:SSL 客户端证书。

状态代码和错误处理

一般来说,HTTP 响应可以返回以下状态代码:

HTTP 代码 HTTP 说明 备注
2xx 确定 不是错误;成功时返回。响应正文应包含成功结果(例如 TripOptionsResult),而非 错误响应。
400 请求无效 收到的请求无效。应使用特定于方法的错误响应 在响应正文中返回其他错误详细信息。一般情况下,只有在 Google 出现技术错误 (例如,请求中的字段名称错误)时,才应使用 HTTP 400。
403 禁止 权限被拒绝/禁止(调用方已知且被拒)。如果遭拒的原因是部分 资源已用尽,则不得使用此 响应(请改用“请求次数过多”来表示此类错误)。如果调用方无法识别,则不得使用“禁止” (请改用“未经授权” 来表示此类错误)。
404 未找到 无法找到所请求的资源。 应使用特定于方法的错误响应在响应正文中返回其他错误详细信息。
429 请求次数过多 部分资源已用尽,可能是每用户配额不足。
500 内部服务器错误 内部错误。这意味着底层系统所期望的一些不变量已损坏。此错误代码保留用于 严重错误,表示合作伙伴的 API 服务器 实现中存在 bug。
503 服务不可用 服务不可用,这很可能是一种暂时情况,可以通过退避重试来纠正。
504 网关超时 期限已到,但操作尚未完成。对于 更改系统状态的操作,即使操作已成功完成,也可能会 返回此错误。例如, 服务器的成功响应延迟时间过长, 截止期限已过。

请注意,对于所有前提条件、无效参数或未找到错误:

  • 应使用 API 中定义的方法专用响应或错误消息。
  • 应使用正确 HTTP 代码,如方法专用 代码中所指定(例如,请参阅 TripOptionsErrorType

这样可以提供有关这些类型错误的更详细信息。这些信息可用于:

  • 确定是否可以重试错误
    • SEGMENT_KEY_NOT_FOUND 无法重试。
  • 更正过时的信息
    • Unavailable.Reason.CANCELED 表示行程应移除(请注意,这是成功响应的一部分)
    • Unavailable.Reason.TEMPORARILY_UNAVAILABLE 以及错误代码 SEGMENT_KEY_NOT_FOUNDSUBOPTIMAL_ITINERARYBOOKING_WINDOW_NOT_SUPPORTEDTICKETING_PROHIBITED 会移除我们之前从缓存中收到的任何价格。
  • 为用户提供相关指导

TripOptionsError 中提供的方法专用错误列表是起点。如果需要其他错误类型,请与 Google 旅行交通团队联系。

QPS(每秒查询次数)

Google 发送的 QPS 级别可能会因合作伙伴库存以及有多少用户查看缓存的数据或点击进入合作伙伴网站进行预订而异。

延迟时间

请求将在 10 秒后超时。对于 Beta 版合作伙伴集成,没有其他延迟时间指南。不过,我们将在合作伙伴数据质量指南中定义进一步的延迟时间 SLO。

货币、税费

发送给 Google 的所有价格都必须包含所有税费,并且必须以受支持的货币指定。

货币

价格的货币使用 currency_code 字段指定,该字段必须是有效的 ISO 4217 货币代码。

示例 10.25 USD

{
  "price": {
    "currency_code": "USD",
    "units": 10,
    "nanos": 250000000
  }
}

税费

您提供的价格必须是用户将支付的最终总价,其中包含所有税费(如增值税)和任何额外费用(如预订费或支付卡费)。您可以使用可重复的 line_items 字段添加可选的票价明细。Google 会向用户显示总价以及可选的票价明细。