试单
试单会校验商品价格、房间数量、销售条款、支付类型,校验失败时会返回正确的价格、销售条款、剩余的房量,成功仅返回响应code(10000)。试单成功,下单不一定成功,下单会根据实际的ARI进行最后确认
试单独立于下单之外:利于监测酒店商品及价格库存数据同步的及时性,持续关注该接口的成功率有助于提升异业合作方侧用户的体验
#
请求方式POST
uri: /reservation/prebook
Content-Type: application/json
#
请求参数说明#
RequestHeader#
RequestBody参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
hotelId | String | Y | 32 | 12**567 | 华住酒店ID |
checkinType | String | Y | 16 | DAY | 入住类型,区分大小写,取值参考枚举 |
mobile | String | Y | 16 | 15612341234 | 订单用户手机号:非会员会进行会员注册 |
reservations | List<PreBookReservationInfo> | Y | - | 房单信息,暂只支持单酒店,单产品的预订,集合只需传1个 | |
paymentType | String | Y | 16 | 枚举值: 参考枚举 | |
paymentCard | PaymentCard | N | - | 担保信用卡信息 |
#
PreBookReservationInfo参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
roomTypeCode | String | Y | 64 | DR1 | 房型Code |
rateCode | String | Y | 64 | Base-NTR | 房价码 |
checkin | Date | Y | - | 2021-10-01 | 入住日期,格式 yyyy-MM-dd |
checkout | Date | Y | - | 2021-10-02 | 离店日期,格式 yyyy-MM-dd,传价格不包含离店日,时租入离同一天 |
amountAfterTax | List<BigDecimal> | Y | - | [ 100, 130] | 含税价,规则同 amountBeforeTax |
amountBeforeTax | List<BigDecimal> | N | - | [ 100, 120] | 不含税价,根据 stayRange.checkin 至 stayRange.checkout 逐天依次排列,不包含 checkout eg: [101.00,102.00] 代表 checkin 当天价格为101,checkin + 1天的价格为 102 |
currencyCode | String | Y | 8 | CNY | 价格对应的币种,参考国际标准: ISO-4217 |
guaranteePolicyCode | String | Y | 32 | 担保政策code,传则会校验此参数,取值参考枚举 | |
cancelPolicyCode | String | Y | 64 | 取消政策code,传则会校验此参数,取值参考code规则 | |
roomCount | Integer | Y | - | 2 | 房间数量,最多预订3间 |
adultCount | Integer | Y | - | 1 | 每间房成人数,人数限制依赖酒店详情对应的人数 |
childCount | Integer | N | - | 2 | 每间房儿童数,人数限制依赖酒店详情对应的人数 |
childAges | List<Integer> | N | - | 长度为2的list | 儿童年龄段,长度需与儿童数量保持一致 |
#
PaymentCard参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
cardType | String | Y | 16 | VCC | 卡类型: MA MC VI VCC |
cardHolderName | String | Y | 64 | 持卡人姓名 | |
cardNumber | String | Y | 32 | 卡号 | |
expireDate | String | Y | 32 | 过期时间(月2个数字,年2个数字), 格式: MMYY |
#
响应参数说明#
content参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
hotelId | String | Y | 32 | 12**567 | 华住酒店ID |
reservationsAri | List<ReservationAri> | Y | - | 房价、库存、销售条款信息 |
#
ReservationAri参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
checkin | String | Y | - | 2021-10-01 | 入住日期,格式 yyyy-MM-dd |
checkout | String | Y | - | 2021-10-02 | 离店日期,格式 yyyy-MM-dd (查询出的ARI不包含这一天) |
roomTypeCode | String | Y | 64 | DR1 | 房型Code |
rateCode | String | Y | 64 | Base-NTR | 房价码Code |
currencyCode | String | Y | 8 | CNY | 价格对应的币种 |
mealPlanType | String | Y | 8 | 餐饮类型 | |
mealPlanCounts | List<Integer> | Y | - | 对应餐饮类型每天数量 | |
inventories | List<Integer> | Y | - | 从checkin至checkout,不包含endDate,每日剩于房量 | |
rates | List<RateInfo> | Y | 不包含endDate,每日房价信息 | ||
restriction | RestrictionInfo | Y | 限制条款信息 | ||
guaranteePolicies | List<GuaranteePolicy > | Y | 包含endDate,担保政策,按照预定入住日规则为准 | ||
cancelPolicies | List<CancelPolicy > | Y | 包含endDate,取消政策,按照预定入住日规则为准 |
#
GuaranteePolicy参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
code | String | Y | 16 | 担保code,取值参考枚举 |
#
CancelPolicy参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
code | String | Y | 16 | 取消策略code,取值参考枚举 |
#
RateInfo参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
rackRate | List<BigDecimal> | N | - | [ 110, 130] | 每日门市价 |
amountBeforeTax | List<BigDecimal> | N | - | [ 100, 120] | 每日不含税价 |
amountAfterTax | List<BigDecimal> | Y | - | [ 100, 130] | 每日含税价 |
maxAdultCount | Integer | Y | - | 1 | 最大成人数,小于等于maxAdultCount的价格与此节点对应 |
maxChildCount | Integer | N | - | 2 | 最大儿童数,为null表示不限制 |
childAges | List<Integer> | N | - | 长度为2的list | 儿童年龄段,长度需与最大儿童数量保持一致,为null表示不限制 |
#
RestrictionInfo参考说明示例:销售条款示例
参数 | 类型 | 是否必填 | 最大长度 | 示例 | 描述 |
---|---|---|---|---|---|
close | List<Boolean> | Y | - | 每日关房状态,true:关房, false:未关房 | |
minStayArrival | List<Integer> | Y | - | 每日最小连住天数,针对订单入住首日生效,0表示当天,元素为null表示不限制 | |
maxStayArrival | List<Integer> | Y | - | 每日最大连住天数,针对订单入住首日生效,0表示当天,元素为null表示不限制 | |
minStayThrough | List<Integer> | Y | - | 每日穿过最小连住天数,针对订单经过那天生效,0表示当天,元素为null表示不限制 | |
maxStayThrough | List<Integer> | Y | - | 每日穿过最大连住天数,针对订单经过那天生效,0表示当天,元素为null表示不限制 | |
minAdvanceDay | List<Integer> | Y | - | 每日最小提前预订天数,针对订单入住首日生效,0表示当天,元素为null表示不限制 | |
maxAdvanceDay | List<Integer> | Y | - | 每日最大提前预订天数,针对订单入住首日生效,0表示当天,元素为null表示不限制 | |
cta | List<Boolean> | Y | - | 每日是否可到达Close To Arrival (CTA),针对订单入住首日生效,true:可以; false:不可到达,元素为null表示不限制 | |
ctd | List<Boolean> | Y | - | 每日是否可离店Close To Departure (CTD),针对订单离店日生效,true:可以; false:不可离店,元素为null表示不限制 | |
fplos | List<String> | Y | - | 每日全程连住天数限制Full Patten LOS,每日设置最长31位,元素为null或空字符串表示不限制 |
#
响应码异常码 | 异常类型 | 说明 |
---|---|---|
1000 | Success | |
5101 | Checkin and checkout does not match the rules | 入住离店日期不符合规则 |
5102 | End date is invalid | 离店日无效 |
5103 | Start date is invalid | 入住日无效 |
5104 | Invalid hotel Id | 酒店Id不存在 |
5105 | Hotel is closed | 酒店停业 |
5106 | Invalid currency code | 不支持的币种 |
5107 | Too far in advance | 提前预订天数过大 |
5108 | Price incorrect for room | 房价校验失败 |
5109 | No rooms available for requested dates | 预订日期房间数量不足 |
5110 | Invalid number of rooms, exceed max number of room count | 预订房间数超过最大限制 |
5111 | Invalid number of adults, exceed max number of adult count | 成人数超过最大限制 |
5112 | Invalid rate code for requested hotel | 请求的酒店无此房价码 |
5113 | Invalid room type for requested hotel | 请求的酒店无此房型 |
5114 | Payment type invalid | 支付类型错误 |
5115 | Credit card number is invalid | 不支持的信用卡 |
5116 | Reservation requires credit card data | 需要信用卡信息才可预订 |
5117 | Invalid guarantee policy code | 校验担保政策失败,具体信息参考响应描述:responseDes |
5118 | Invalid cancel policy code | 校验取消政策失败,具体信息参考响应描述:responseDes |
其他 | 全局异常码 | 全局异常[引用] |
#
报文示例#
Case1: 单一产品校验#
请求示例{ "hotelId":"12**567", "checkinType": "DAY", "paymentType":"OPN", "reservations":[ { "checkin":"2021-07-08", "checkout":"2021-07-10", "roomCount":1, "maxAdultCount":2, "amountAfterTax":[ 560, 560 ], "amountAfterTax":[ 549, 549 ], "currencyCode":"CNY", "rateCode":"B15A14NBF", "roomTypeCode":"SQ1", "guaranteePolicyCode": "PN", "cancelPolicyCode": "AD0_0" } ]}
#
校验成功示例{ "code":1000}
#
校验失败示例{ "code":5108, "message":"Price incorrect for room", "content":{ "hotelId":"12**567", "reservationsAri":[ { "checkin":"2021-10-06", "checkout":"2021-10-08", "roomTypeCode":"K1B", "rateCode":"Base-ODC401", "currencyCode":"CNY", "rates":[ { "adultCount":2, "amountAfterTax":[ 328, 328 ], "amountBeforeTax":[ 309, 309 ], "childCount":0 } ], "inventories":[ 0, 2 ], "mealPlanType":"BB", "mealPlanCounts":[ 1, 1 ], "guaranteePolicies":[ { "code":"PL" }, { "code":"PN" } ], "cancelPolicies":[ { "code":"AD0_0" }, { "code":"AD100_6PM0D1N_1N" } ], "restriction":{ "close":[ false, false ], "cta":[ false, false ], "ctd":[ false, false ], "maxAdvanceDay":[ 999, 999 ], "maxStayArrival":[ 999, 999 ], "maxStayThrough":[ 0, 0 ], "minAdvanceDay":[ 3, 3 ], "minStayArrival":[ 5, 5 ], "minStayThrough":[ 0, 0 ], "fplos": [ "0000000", "1110111" ] } } ] }}