预订保留与继续
Rapid API 的保留与继续功能使您能够为 2 步预订模式提供支持。
作为 2 步预订模式的一部分,如果合作伙伴或旅客在未完成预订的情况下取消或放弃某间客房,他们可以保留该客房,而不立即收费以及收取任何取消手续费。
如果旅客或合作伙伴要在指定时限内确认客房,他们可以在第二步完成预订。如果旅客/合作伙伴放弃预订,则该预订会自动回退并释放所选库存。
概述
需要进行哪些变更?
保留与继续会使用现有的 API,其中响应中包含新的请求标记和新的标记化链接。无需使用新的分立式 API 方法进行集成。要集成保留与继续功能,您需要为以下项目更新请求和/或响应处理:
- 预订创建处理。
- 预订检索处理。
- 继续 - 检索响应中的新令牌链接处理。
- 取消 - 创建响应中的新令牌链接处理。
请完整查看此页面,以便您可以充分了解完整的保留与继续流程,然后再参考我们的各份 API 文档进行集成。还可以在我们现有的预订和预订管理 API 的相应专用文档页面中获取此页面上记录的特定选项。
创建保留的预订
预订请求现在拥有一个名为 hold
的全新布尔字段。发送 true
值会让住宿处于保留状态。
只能在您的特定应用程序要求的最短时间内使保留的预订处于保留状态。如果在未确认的情况下让预订处于保留状态,则该预订会自动回退。
成功的保留预订响应会返回用于继续完成、确认和支付保留预订的其他标记化链接。它还会省略通常用于提供取消链接的 rooms 队列,因为还没有要取消的客房。
保留的预订的示例预订响应
{
"itinerary_id": "2667552437552",
"links": [
{
"rel": "retrieve",
"method": "GET",
"href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
},
{
"rel": "resume",
"method": "PUT",
"href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
},
{
"rel": "cancel",
"method": "DELETE",
"href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
}
]
}
如果 hold
标记用于预订,则不会对预订收取任何费用。仅当在保留期限内使用了保留预订响应中的 PUT
方法链接时,才会完成预订并收取付款。
检索保留的预订
使用保留预订响应中提供的 retrieve
链接可以检索保留的预订。保留与继续的预订检索方法与 1 步预订的常规检索并无二异,并且不需要请求正文。
响应场景:
- 检索某个仍处于保留状态的保留预订将返回包含有限数据的响应,其中包括立即继续和完成或取消预订的链接。
- 检索某个已取消(已请求回退)或已超时(已自动回退)的保留预订将返回“找不到行程”错误。
- 检索某个之前已继续并确认的保留预订,其表现与标准行程检索相同,并将返回完整的详细预订信息。
保留的预订的示例检索响应
{
"itinerary_id": "8701934321257",
"creation_date_time": "2018-03-09T14:42:58.159Z",
"links": {
"resume": {
"method": "PUT",
"href": "/v3/itineraries/8701934321257?token=QldfCGlcUA…{example trimmed for length}="
},
"cancel": {
"method": "DELETE",
"href": "/v3/itineraries/9700934721257?token=QldfCGlcUA…{example trimmed for length}="
}
}
}
已取消/已超时的保留预订的示例检索响应
{
"type": "resource_not_found",
"message": "Itinerary was not found with provided request."
}
继续保留的预订
要确认某个预订是否已保留并最终完成付款,必须继续预订。
可以使用原始保留预订响应中提供的 resume
链接继续保留的预订,并且该操作不需要请求正文。
响应场景:
- 继续某个仍处于保留状态的保留预订将完成预订,并返回 HTTP 204 - 无内容响应以指示已成功完成。使用初始保留预订响应中的 GET 链接可以检索完整的行程。
- 继续某个已取消(已请求回退)或已超时(已自动回退)的保留预订将返回与之前检索部分所述相同的“找不到行程”错误。
- 继续某个已成功继续的保留预订将返回说明预订已提交的错误。
已继续预订的示例继续响应
{
"type": "resume.already_resumed",
"message": "Booking has already been resumed."
}
取消保留的预订(回退)
预订创建和检索响应中提供的 cancel
标记化链接在行程级别起作用。使用此链接时,它将释放所需的保留住宿并回退保留的行程。仅在成功继续预订后才会在检索响应中提供客房级别的取消链接。
执行 cancel
操作还将返回 HTTP 204 状态代码,与成功继续响应的代码相同。两种状态中都会使用 HTTP 204,以指示服务器已成功完成请求,并且在响应有效负载主体中没有要发送的其他内容。
请求取消某个保留的预订将导致出现相同的最终场景,就像已允许自动回退预订。
响应场景:
- 取消某个仍处于保留状态的保留预订将释放保留的库存并返回 HTTP 204 状态。
- 取消某个已取消(已请求回退)或已超时(已自动回退)的保留预订将返回“找不到行程”错误,该错误之前已在此页面上记录。
- 取消某个已成功继续的保留预订将返回“不支持行程级别取消”错误消息。进行检索调用并使用响应中提供的客房级别链接取消各间客房。
已继续预订的示例取消响应
{
"type": "resume.itinerary_level_cancel_not_supported",
"message": "Itinerary level cancel on confirmed booking is not supported."
}