预订接送服务和变更预订所必须遵循的调用顺序。
新预订
text
POST /search
-> POST /pricing
-> POST /book
-> GET /reservations/details即使旅客未选择任何设施,也必须先调用 pricing。无法直接从搜索结果发起预订。
变更预订
text
POST /reservations/changes/search
-> POST /pricing
-> POST /reservations/changes在确认变更之前,原预订保持有效。
需要在调用之间传递的值
| 值 | 来源 | 用途 |
|---|---|---|
searchId | 搜索或变更搜索 | 定价、预订、预订查询 |
resultId | 所选报价 | 定价和预订 |
bookingToken | 所选报价 | 定价和预订 |
pricingToken | 定价 | 预订或确认变更 |
reservationId | 预订 | 预订查询、司机与车辆、跟踪、取消 |
confirmationNumber | 预订 | 预订查询、与旅客沟通 |
bookingToken 和 pricingToken 是不透明的。请原样复制到下一次调用:不要解码、解析或修改。它们仅属于签发时对应的报价,并在该报价过期后失效,expiresAt 会提前告知过期时间。
预订结果状态
预订和确认变更都返回 HTTP 200,并带有 status 字段:
status | 含义 | 应对方式 |
|---|---|---|
completed | 接送已预订成功。 | 当 completed 为 true 且 reservations 非空时向旅客确认。 |
pending | 尚无最终结果。 | 查询预订以确认结果,不要重复发送预订请求。 |
failed | 预订被拒绝。 | 展示 error 中的原因,并为旅客提供其他选项。 |
不要仅因为 HTTP 状态为 200 就认为预订已确认。
请求失败之后
502 表示请求未完成,而不是什么都没发生。请保留已有标识符,并在再次创建之前先查询预订。
需要持久化的内容
请保存 searchId、resultId、bookingToken、pricingToken、reservationId、confirmationNumber 以及你自己的 partnerTrackingId。缺少它们将无法在之后查询、变更或取消预订。