合作伙伴服务器

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

请求和响应格式

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

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

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

身份验证

Google 支持 HTTP 摘要身份验证和客户端证书身份验证。Partner API 的所有 HTTP 调用都使用 HTTP 摘要身份验证(使用用户名和密码)或客户端证书身份验证。合作伙伴应向 Google 提供用户名和密码(请参阅合作伙伴配置)或 SSL 客户端证书。

状态代码和错误处理

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

HTTP 代码 HTTP 说明 备注
2xx 确定 不是错误信息;成功时返回此项。响应正文应包含成功结果(例如 TripOptionsResult),而非错误响应。
400 请求有误 收到的请求无效。应使用特定于方法的错误响应在响应正文中返回其他错误详细信息。 HTTP 400 通常仅在 Google 出现技术错误(例如,请求中的字段名称错误)时使用。
403 禁止 权限被拒绝/禁止(调用方已知且被拒)。如果遭拒的原因是部分资源已用尽,则不得使用此响应(请改用“请求过多”来表示此类错误)。如果无法识别调用方,则不得使用 Forbidden(请改用 Unauthorized 来表示此类错误)。
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 Travel Transport 团队联系。

QPS(每秒查询次数)

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

延迟时间

请求将在 10 秒后超时。对于 Beta 版合作伙伴集成,不会有额外的延迟时间指南。不过,我们将在合作伙伴数据质量指南中定义更多延迟时间 SLO。

币种、税费和其他费用

发送给 Google 的所有价格都必须包含所有税费及其他费用,并且必须以支持的币种指定。

币种

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

示例 10.25 美元

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

税费

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