错误结构、完整错误目录,以及那些看起来像失败的成功响应。
应用错误
json
{
"statusCode": 409,
"code": "transfer_price_changed",
"message": "The transfer price changed. Request pricing again"
}请以 code 而不是 message 作为判断依据:消息是本地化的,且可能被改写。
验证错误
当请求本身格式不正确时,message 是一个问题数组,而不是单个字符串。
json
{
"statusCode": 400,
"message": [
"numPassengers must not be less than 1",
"latitude and longitude must be sent together"
],
"error": "Bad Request"
}通用错误
| HTTP | 代码 | 含义 | 建议操作 |
|---|---|---|---|
400 | 请求体、查询参数或路径无效,或包含未知属性。 | 根据 message 数组修正请求。 | |
400 | transfer_invalid_language | 语言不受支持。 | 使用文档中的语言取值。 |
400 | transfer_invalid_currency | 货币不受支持。 | 使用受支持的货币。 |
400 | transfer_currency_mismatch | 货币与报价或报价单不一致。 | 复用上一步的货币。 |
400 | transfer_location_not_found | 无法解析某个地点。 | 补充城市或邮编,或改用 place ID 或坐标。 |
429 | transfer_provider_error | 临时限流。 | 使用指数退避重试。 |
502 | transfer_provider_error | 请求无法完成。 | 不要假定成功;保留标识符并查询预订。 |
503 | 当前无法确认价格。 | 稍后重试;不要预订,也不要收费。 |
令牌、定价与预订
| HTTP | 代码 | 含义 |
|---|---|---|
400 | transfer_invalid_booking_token | 令牌已过期、被修改,或属于其他报价。 |
400 | transfer_invalid_pricing_token | pricing token 无效或与请求不一致。 |
400 | transfer_pricing_required | 请求缺少 pricing token。 |
400 | transfer_invalid_amenities | 设施 key 重复、为空或不可用。 |
400 | transfer_flight_info_required | 该报价要求提供 airline 和 flightNumber。 |
400 | transfer_return_flight_info_required | 往返行程要求提供返程航班信息。 |
409 | transfer_price_changed | 此前的报价价格已失效。 |
409 | transfer_booking_in_progress | 无法为该 pricing token 接受此预订。 |
410 | transfer_pricing_expired | 在创建预订前报价单已过期。 |
预订
| HTTP | 代码 | 含义 |
|---|---|---|
400 | transfer_booking_not_found | 查询未恰好包含一个标识符。 |
502 | transfer_provider_error | 无法查询、创建、变更、跟踪或取消预订。 |
看起来像失败的成功响应
多个端点会以 200 返回一个否定结果。这些是结果而不是失败,必须从响应体中读取:
- 航班验证的
isValid: false:该航班与接客时间不匹配。 - 取消操作的
cancelled: false或refunded: false。 - 预订或确认变更的
status: "failed"。 - 航班查询返回空的
flights数组。 - 行程开始前,跟踪返回空的响应对象。
在告知旅客某项操作成功之前,请务必先读取 200 响应的响应体。