方法名称
hotel.data.booking
使用说明
本接口用于获取某个产品的存在性及其价格库存等信息,同时也可以检验产品的五大对象(HotelId、HotelCode、Room、RoomType和RatePlan)的状态,其任意一种不可用则产品不可用。
与本接口的功能相近的还有hotel.data.validate接口,差异是hotel.data.validate入参要传入TotalPrice、DayPriceList,我们会验证总价及每日价格,但是hotel.data.validate出参比当前接口少很多字段。
调用本接口请使用version大于等于1.13;
用于进入订单填写页面,获取实时的数据进行校验
价格是原始价格,需要自己计算DRR,返回的价格信息用法同hotel.data.rate;如果传入入参IsRatesWithDRR,可以得到计算后可卖的价格;
输入参数
| 节点 | 名称 | 类型 | 可为空 | 说明 |
|---|---|---|---|---|
| ArrivalDate | 入住日期 | Date | N | 要求使用yyyy-MM-dd格式, 其他格式不保证永久可用,例如:2022-12-09,其他格式不保证持续支持 |
| DepartureDate | 离店日期 | Date | N | 要求使用yyyy-MM-dd格式, 其他格式不保证永久可用,例如:2022-12-09,其他格式不保证持续支持 |
| HotelId | 酒店编号 | String(8) | N | |
| HotelCode | 酒店编码 | String(8) | N | |
| RoomId | 展示房型编号 | String(10) | Y | 允许为空,当传入时会校验房型编号绑定关系 |
| RoomTypeID | 销售房型编码 | String(10) | N | |
| RatePlanId | 产品编号 | Int | N | |
| PaymentType | 支付类型 | Enum | N | SelfPay--前台自付 Prepay--预付 |
| IsRatesWithDRR | 返回的价格是否通过DRR计算促销后的 | Boolean | Y | 默认为false;如果为true则返回的Rates节点里面的价格为DRR计算后的促销后的,false则为原始价格。促销产品调用时,需要透传该字段。可全部产品传true |
| MethodType | 调用监控 | Int | Y | 正常用户调用不用传,批量调用传入32,方便艺龙方对接口进行监控。 正常用户调用指的是由用户下单流程触发的校验接口调用,批量调用、非正常用户调用指分销商自己进行踩雷策略或其他操作引起的校验接口调用。 |
| LittleMajiaId | 马甲Id | String | Y | 从hotel.detail接口获取,用于促销,促销产品调用时,需要透传该字段; 新接入搜索模式必传;建议历史已接入搜索模式分销商也将此字段全部传回;国内酒店马甲Id不再有30分钟限制 搜索模式所有产品必传 |
| GoodsUniqId | 商品唯一标示 | String | Y | 从hotel.detail接口获取,用于促销,促销产品调用时,需要透传该字段; 新接入搜索模式必传;建议历史已接入搜索模式分销商也将此字段全部传回 搜索模式所有产品必传 |
| NumberOfRooms | 房间数量 | Int | Y | 当促销产品调用时,需要传如具体房间数量 |
| EarliestArrivalTime | 最早到店时间 | DateTime | Y | 请传入最早到店时间和最晚到店时间(不传时默认逻辑是:当天预订时,当前时间>=23点,最早最晚到店时间赋值为当天的23点59分,当前时间<23点时,最早到店时间为当前时间+30分钟,最晚到店时间为当前时间+60分钟;非当天预订时,最早到店时间为入住日的14点,最晚到店时间为入住日的15点). 要求使用yyyy-MM-dd HH:mm:ss格式 其他格式不保证永久可用,注意最早到店时间需要在hotel.static.info接口的ArrivalTime和LatestArrivalTime之间 |
| LatestArrivalTime | 最晚到店时间 | DateTime | Y | 请传入最早到店时间和最晚到店时间,请注意保证搜索时传入此参数与试单和成单时一致,否则对应担保规则结果会不尽相同,到店时间更改,担保类型为到店时间担保的订单取消规则和担保规则均可能发生变化. 要求使用yyyy-MM-dd HH:mm:ss格式 其他格式不保证永久可用,注意最早到店时间需要在hotel.static.info接口的ArrivalTime和LatestArrivalTime之间且小于最早到店时间 |
响应结果
| 节点 | 名称 | 类型 | 可为空 | 说明 |
|---|---|---|---|---|
| RatePlan | 产品信息 | RatePlan | Y | 参考RatePlan |
| WeekendStart | 周末价格起始日 | Int | Y | 为0表示周末设置从周一开始 为0表示到周日结束,但是两个都为0表示无周末设置; 如果开始为3,结束为1,表示从周三到下周1都是周末设置 1代表周一,7代表周日 |
| WeekendEnd | 周末价格结束日 | Int | Y | |
| BookingRules | 预订规则 | BookingRule[] | Y | 参考BookingRule |
| Inventories | 库存 | Inventory[] | Y | 参考Inventory |
| Rates | 价格 | Rate[] | Y | 参考Rate |
| ObjectEffectiveStatus | 对象状态 | ObjectEffectiveStatus | Y | v1.26新增。参考ObjectEffectiveStatus节点 |
| meals | 到天餐食结果表格 | Meals | Y | 参考hotel.detail#Meals,注意:此为移位后餐食结果表格。根据餐食原始规则,当入住日期内全部为固定餐食或入住日期内全部为半固定餐食且固定餐食类型一样时,固定餐食中的早餐、午餐会向后移一天展示;动态餐食分别与入住日期对应,不会后移一天。hasMealTable为true,表示存在餐食表格。 |
| PrepayResult | 预付规则结果 | PrepayResult | Y | 参考PrepayResult |
| GuaranteeResult | 现付规则结果 | GuaranteeResult | Y | 参考GuaranteeResult |
| DataSource | 数据来源 | Enum | Y | v1.32新增,特定情况使用,一般可忽略不管 DB-数据库 DC-直连 |
| TotalRate | 总卖价 | Decimal | Y |
BookingRule节点
| 节点 | 名称 | 类型 | 可为空 | 说明 |
|---|---|---|---|---|
| TypeCode | 规则类型 | Enum | N | NeedNationality:务必提供客人国籍 PerRoomPerName:您预订了N间房,请您提供不少于N的入住客人姓名 ForeignerNeedEnName:此酒店要求外宾务必留英文拼写 ,港澳台酒店出现这个字段的时候,所有人都需要填写英文名或姓名拼音 RejectCheckinTime:几点到几点酒店不接受预订 , 此处校验的是下单时的当前时间 NeedPhoneNo:务必提供联系人手机号(请加在联系人结点Contact上) |
| RoomTypeIds | 关联的销售房型Id | String(500) | Y | all 表示所有房型 |
| Description | 描述 | String(255) | N | |
| DateType | 日期类型 | Enum | Y | BookDay –预订日期(订单的创建日期) |
| StartDate | 开始日期 | Date | Y | |
| EndDate | 结束日期 | Date | Y | |
| StartHour | 每天开始时间 | Time | Y | 针对日期段内每天生效, 当TypeCode 为RejectCheckinTime时表示当前预订时间在StartHour到EndHour 区间内酒店不接受预订。当EndHour小于StartHour的时候是表示第二天的几点,如2:00表示第二天的2点。 |
| EndHour | 每天结束时间 | Time | Y |
RatePlan节点
| 节点 | 名称 | 类型 | 可为空 | 说明 | |
|---|---|---|---|---|---|
| RatePlanId | 产品编号 | Int | N | ||
| RatePlanName | 产品名称 | String(50) | N | ||
| CustomerType(已废弃) | 宾客类型 | Enum | N | V1.01新增。 All=统一价; Chinese =内宾价,需提示客人“须持大陆身份证入住”; OtherForeign =外宾价,需提示客人“须持国外护照入住”; HongKong =港澳台客人价,需提示客人“须持港澳台身份证入住”; ChinaGuest =中宾价,需提示客人“须持中国身份证、护照入住”; 注意统一价并不是下面几种宾客类型的合集,而是对所有宾客统一售价 | |
| guestType | 适用人群 | String | Y | 宾客类型的适用人群: 0:不限 1:持中国身份证的居民 2:持回乡证的港澳人士 3:持台胞证的台湾人士 4:持中国护照的侨胞 5:持大陆工作证/居留许可的外籍人士 6:持非中国护照的外籍人士 7:其他 | |
| guestTypeExtendCh | 其他 | String | Y | 适用人群中其他的内容 | |
| HotelCode | 对应的酒店编码 | String(8) | N | ||
| PaymentType | 付款类型 | Enum | N | SelfPay-前台现付、Prepay-预付,具体信息参看使用说明 | |
| RoomTypeIds | 关联的房型编码 | String(255) | N | 多个房型编码时以英文逗号分隔 | |
| ProductTypes | 产品特性类型 | String(20) | Y | V1.01新增。可逗号分隔,目前取值: 3-限时抢购 4-钟点房 5-手机专享 6-铂涛产品,下单需提供入住人身份证(Identification字段已包含此逻辑,涉及到身份信息验证的可统一按照Identification字段来处理) 17-景酒打包产品,只能与景点门票打包销售,默认不吐出 25-床位房(床位房类型此处已无效,判断床位房请解析RatePlanName或者Room节点的Name字段,其中只要有一个字段包含“床位”字样即为床位房) 99-未知,艺龙内部使用,一般代理可忽略 | |
| NeedIdNo | 是否需要提供身份证号 | Boolean | Y | 如果是铂涛产品,不能通过此字段判断,不管true还是false,都要传入身份证。如果不是铂涛产品,指该RatePlan在下单的时候,是否需要传入入住人的身份证号信息,如果该字段不为空且为true,则在成单时必须传入身份证号(将来废弃,新字段请参考身份信息验证类型【Identification】) | |
| Identification | 身份信息验证类型 | Int | N | 0-无特殊验证要求(默认值) 1-整个订单至少传一个身份证 2-订单中每个房间至少传一个证件 3-订单中每个房间至少传一个身份证 4-每个客人传一个身份证 5-整个订单至少传一个身份证且需预订本人入住 (后续可能会继续增加其他验证类型,建议接入时将非文档中给出类型的产品做过滤处理) | |
| sellChannels | 分销渠道 | String(20) | Y | V1.51新增。可逗号分隔,目前取值: 1-分销专享,艺龙内部使用,一般代理可忽略 | |
| IsLimitTimeSale | 是否是今日特价(尾房) | Boolean | Y | V1.01新增。 如果为true,则要校验当前时间是否在StartTime和EndTime的范围内,从而决定这个RP是否显示在可销售产品中。 | |
| StartTime | 尾房每天预订开始时间 | Time | Y | 默认值:00:00。仅在尾房情况下有效。 | |
| EndTime | 尾房每天预订结束时间 | Time | Y | 默认值:23:59。仅在尾房情况下有效。 如果结束时间是00:00至6:00,则表示是次日。当EndTime大于24点的时候是表示第二天的几点加上了24小时,如26:00表示第二天的2点。 | |
| MinAmount | 预订最少数量 | Int | Y | 默认值:1 | |
| MinDays | 最少入住天数 | Int | Y | 默认值:1 | |
| MaxDays | 最多入住天数 | Int | Y | 默认值:365 | |
| MaxCheckinRooms | 最多预订间数 | Int | 版本v1.35新增,规定了每个订单最多预订多少间 存在下单订多间不通过,但是一间一间的下单可以下多单的情况,这种情况就是此字段造成的。 为0时默认按照10间处理 默认值:9999 | ||
| MinAdvHours | 最少提前预订小时数 | Int | N | 按checkInDate的23:59:59(一般认为24点)来计算 | |
| MaxAdvHours | 最多提前预订小时数 | Int | N | ||
| GuaranteeRules | 担保规则 | GuaranteeRule[] | Y | 参考 GuaranteeRule节点 | |
| PrepayRules | 预付规则 | PrepayRule[] | Y | 参考PrepayRule节点 | |
| PrepayRuleExtends | 新预付规则 | PrepayRuleExtend[] | Y | 参考PrepayRuleExtend节点 | |
| GuaranteeRuleExtends | 新担保规则 | GuaranteeRuleExtend[] | Y | 参考GuaranteeRuleExtend节点 | |
| ValueAdds | 增值服务 | ValueAdd[] | Y | 参考ValueAdd节点 | |
| Meals | 新餐食节点 | Meal[] | Y | 参考Meals节点 相较增值服务中的早餐,拓展了午餐、晚餐和动态餐食,去掉了无用字段。 | |
| DrrRules(已废弃) | 促销规则 | DrrRule[] | Y | 参考DrrRule节点, DRR例子请参考DrrRule | |
| Coupon(已废弃) | Coupon信息 | Coupon | Y | Coupon和入住日期相关,本处返回仅供参考。 参考Coupon节点 | |
| serviceTimePolicyInfo | 产品提供服务的时间 | serviceTimePolicyInfo | Y | 酒店或供应商能处理订单的时间,无数据(即不返回这个字段)代表全天服务 预订当天入住且预订时间不在服务时间范围内的产品不可展示销售给客人,避免不必要的投诉。参看serviceTimePolicyInfo节点 | |
| BookingChannels | 产品可以展示销售的渠道 | String | Y | v1.20新增,同时需要 Options入参传入1后才能返回。 逗号分隔的数字列表: 1---线上(普通的PC访问的Web) 2---线下(呼叫中心、门店) 3---手机(Mobile App、H5) | |
| IsPriceLimitProduct | 是否为限价产品 | Boolean | N | 表示本RatePlan是否为限价产品,限价产品必须按照艺龙给出的售价进行售卖,即按照hotel.data.rate接口指定的价格卖给客人。不同限价类型约束规则不同,详见下面PriceLimitedType字段,接入完成后通知商务变更,新校验规则生效。 false --- 非限价 true --- 限价 (版本1.36新增) 判断限价时与hotel.data.rate接口中IsPriceLimit字段为或关系,两者有其一为true,均为限价。 | |
| PriceLimitedType | 限价类型 | Int | N | 二进制bit位分别表示各个限价条件,0为非限价,详见 | |
| CustomerLevel | 可售会员等级 | Int[] | Y | V1.25新增。选值: 0-非会员 1-普通会员 2-贵宾会员 3-龙萃会员 4-钻石龙萃 | |
| InvoiceMode | 预付产品发票模式 | String | N | v1.31新增 仅用于预付产品的发票开具模式。 Elong-艺龙开发票、Hotel-酒店开发票前台自付产品都是酒店开发票,这里的过滤是针对预付产品。 需要注意Elong艺龙开发票其实是艺龙可以提供代开发票服务,如果需要开通,请联系商务,否则可能需要自行开具发票 | |
| CooperationType | 酒店签约类型 | int | Y | v1.27 1为直签,2为非直签,0为未知 | |
| earliestToliveTime | 可住开始时间 | String(6) | Y | V1.32新增。 1、钟点房产品特有字段。 2、可住时长stayTime为客人实际可住时长最大值,客人实际的可住时长需要代理根据可住结束时间减去当前时间进行计算 3、建议实际可住时长不足一小时时不要再展示给客人 4、当结束时间小于开始时间时表示第二天结束 5、注意钟点房是有可售时间范围的,可售开始时间为earliestToliveTime,可售结束时间为latestToliveTime减去stayTime,在可售时间范围外试单不能通过,即最晚入住时间为可售结束时间。 V1.61版本开始支持钟点房跨天 latestToliveTime大于24时即为钟点房跨天产品(前端具体展示格式可参考同程旅行官网) | |
| latestToliveTime | 可住结束时间 | String(6) | Y | ||
| stayTime | 可住时长 | String(2) | Y | ||
| timeRushRuleList | 限时抢规则 | timeRushRule[] | Y | ||
| xStayPeopleNum | 可入住人数 | String | Y | 房型补充说明 | |
| xStaySex | 可入住性别 | String | Y | ||
| xBedType | 床型 | String | Y | ||
| xFloor | 楼层 | String | Y | ||
| xOrientation | 朝向 | String | Y | ||
| xUserDefined | 自定义说明 | String | Y | ||
| SupportSpecialInvoice | 是否支持专票 | Boolean | Y | true 支持专票,false 不支持 |
Inventory节点
| 节点 | 名称 | 类型 | 可为空 | 说明 |
|---|---|---|---|---|
| HotelID | 酒店ID | String(8) | N | 这几个属性是业务主键。 Date表示的是某天的库存。 HotelCode关联搜索接口的RatePlan.HotelCode |
| RoomTypeId | 房型ID | String(10) | N | |
| HotelCode | 酒店编码 | String(8) | N | |
| Date | 库存时间 | Date | N | |
| Status | 库存状态 | Boolean | N | False-不可用 True-可用 |
| Amount | 库存数量 | Int | N | 剩余的可知库存数量 |
| OverBooking | 超售状态 | Int | N | 0---可超售,1—不可超售。可超售的时候即使Amount等于0也是可以继续销售的。 |
| StartDate | 可用开始日期 | Date | N | 库存可用开始日期 |
| EndDate | 可用结束日期 | Date | N | 库存可用结束日期 |
| StartTime | 可用开始时间 | Time | N | 预订当天库存,须校验库存可用开始时间 |
| EndTime | 可用结束时间 | Time | N | 预订当天库存,须校验库存可用结束时间; 若为23:59:59则为无限制; |
| IsInstantConfirm | 当天库存是否支持即时确认 | Boolean | Y | V1.22新增,具体使用请见接口使用说明。 注意:此三个字段已无效,是否即时确认请以创建订单接口的返回值或者订单详情中的即时确认相关字段为准。 |
| IC_BeginTime | 预订当天即时确认可用开始时间 | Time | Y | |
| IC_EndTime | 预订当天即时确认可用结束时间 | Time | Y |
Rate节点
| 节点 | 名称 | 类型 | 可为空 | 说明 |
|---|---|---|---|---|
| HotelID | 酒店编号 | String(8) | N | 这几个属性是业务主键 |
| RoomTypeId | 房型编号 | String(10) | N | |
| RateplanId | 产品编号 | Int | N | |
| StartDate | 开始时间 | Date | N | |
| EndDate | 结束时间 | Date | N | |
| HotelCode | 酒店编码 | String(8) | Y | v1.13新增 |
| Status | 状态 | Boolean | N | false--无效、true--有效 |
| Member | 平日卖价 | Decimal | N | -1代表此房无价,无价和满房都不能进行预订 |
| Weekend | 周末卖价 | Decimal | N | 同上,在周末时使用此价格,周末设置参考hotel.data.rp接口 |
| MemberCost | 平日结算价 | Decimal | N | 同上,开通了结算价模式的接入方才可以使用 |
| WeekendCost | 周末结算价 | Decimal | N | 同上,开通了结算价模式的接入方才可以使用 |
| AddBed | 加床价 | Decimal | Y | V1.01新增 -1代表不能加床,0-免费加床,大于0表示加床的费用 |
| PriceID | 价格ID | Long | Y | V1.08新增 |
| CurrencyCode | 货币类型 | String | Y | V1.08新增 参考Currency |
| UsedPromotionDayRoomValues | 每间的同程促销明细 | UsedPromotionDayRoomValue[] | Y | 每间的同程促销明细,参考 UsedPromotionDayRoomValue节点 |
ObjectEffectiveStatus对象状态
| 节点 | 名称 | 类型 | 可为空 | 说明 |
|---|---|---|---|---|
| HotelIdStatus | HotelId 对应对象的状态 | Boolean | N | true --有效,false--无效 |
| RoomStatus | RoomId对应对象的状态 | Boolean | N | |
| RatePlanStaus | RatePlanI对应对象的状态 | Boolean | N | |
| HotelCodeStatus | HotelCode对应对象的状态 | Boolean | N | |
| RoomTypeStatus | RoomTypeId对应对象的状态 | Boolean | N | |
| ProductRelation | RoomTypeId和RatePlanId是否存在绑定关系 | Boolean | N |
UsedPromotionDayRoomValue
| 节点 | 名称 | 类型 | 可为空 | 说明 |
|---|---|---|---|---|
| RoomNumber | 房间号 | String | Y | |
| PromotionDetailList | 促销明细 | PromotionDetail[] | Y | 此间促销明细 |
PromotionDetail
| 节点 | 名称 | 类型 | 可为空 | 说明 |
|---|---|---|---|---|
| Amount | 促销金额 | Decimal | Y | |
| PromotionType | 促销类型 | Int | Y | 促销类型 9:立减 |
常见错误码
| 错误码 | 解释 | 解决方案 |
|---|---|---|
| H001083 | 获取产品信息失败,可能酒店、房型和RatePlan无效或未关联,也可能无对应库存或房价 | 遇到这个问题,首先检查HotelId、RoomTypeId和RatePlanId对应关系是否正确(HotelId不要传HotelCode,RoomTypeId不要传RoomId)。如果对应正确,那么可能是库存失效导致的,大部分原因是因为数据更新不及时,用户搜索得到结果后过了一段时间才下单,此时数据已发生变化,无库存、满房、无价、不符合预定规则。该问题不可能完全杜绝,离线数据模式可以通过及时更新数据来减少。 |
| H001083-1 | 对象状态无效 | 通过ObjectEffectiveStatus属性确认哪个对象已经无效,就可以将本地的改对象进行关闭 |
| H008008 | 酒店挂牌等级不符 | 酒店挂牌等级已经发生了变化 |
| H009001 | 获取的产品信息RatePlan无效 | 限价产品被过滤 |
