试单
试单会校验商品价格、房间数量、销售条款、支付类型,校验失败时会返回正确的价格、销售条款、剩余的房量,成功仅返回响应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" ] } } ] }}