方法名称
hotel.data.rp
使用说明
本接口对比实时hotel.detail接口缺少折扣优惠,价格竞争力低,非必要尽量不对接此接口。
本接口用于获取酒店的产品详情,在需要获取所有酒店产品和某一个酒店产品更新时使用。
支付方式
分为现付和预付
现付:分为担保与非担保:
担保:分为全额担保和首晚担保,都需要考虑取消的情况,但客户到店依然需要支付房费,担保的费用会退回用户。
预付:预付都是全额预付,也要考虑取消的情况。
现付的担保和预付的全款都需要调用支付功能。
输入参数
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
HotelIds | 酒店编号列表 | String(100) | N | 最多10个,逗号分隔 |
PaymentType | 付款类型 | Enum | Y | All -- 全部 SelfPay -- 前台现付 Prepay -- 预付 |
Options | 扩展参数 | string | Y | 逗号分隔的数字列表。 1 - 返回RatePlan对应的可售卖渠道 2 - 返回结果中包含钟点房产品,1.32新增。 |
InvoiceMode | 发票模式 | Enum | Y | NoSense --全部 Elong --艺龙开票 Hotel --酒店开票 注:该字段只过滤预付产品。 |
响应结果
根节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
Hotels | 酒店列表 | Hotel[] | Y | 包含多个Hotel节点 |
Hotel节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
HotelID | 酒店编号 | String(8) | N | |
Suppliers | 供应商列表 | Supplier[] | Y | 包含多个Supplier节点,一个Supplier表示一个供应商,一家酒店可能代理给多个供应商,艺龙也会从其他供应商分销部分产品,所以一个HotelId会对应多个HotelCode来表示不同的供应商酒店 |
RatePlans | 产品列表 | RatePlan[] | Y | 包含多个 RatePlan节点 |
Gifts | 礼包 | Gift[] | Y | 酒店送礼信息, 礼品信息和预订或入住日期相关。 包含多个Gift节点(建议使用GiftPackages节点) |
GiftPackages | 礼包套餐 | GiftPackage[] | Y | 参考多个GiftPackage节点,参考下方文末礼包套餐(GiftPackage)使用说明 |
Supplier节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
HotelCode | 酒店编码 | String(8) | N | |
WeekendStart | 周末开始 | Int | N | 为0表示周末设置从周一开始 |
WeekendEnd | 周末结束 | Int | N | 为0表示到周日结束,但是两个都为0表示无周末设置; 如果开始为3,结束为1,表示从周三到下周1都是周末设置 1代表周一,7代表周日 |
BookingRules | 预订规则 | BookingRule[] | Y | 参考BookingRule节点 |
Rooms | 房间对应关系 | Room[] | Y | 用于产品获取对应房型静态信息 包含多个Room节点 |
InvoiceMode | 预付产品发票模式 | Enum | N | 建议使用RatePlan节点上的InvoiceMode,该字段之后将不再使用。 仅用于预付产品的发票开具模式。 Elong-艺龙开发票、Hotel-酒店开发票前台自付产品都是酒店开发票,这里的过滤是针对预付产品。 需要注意Elong艺龙开发票其实是艺龙可以提供代开发票服务,如果需要开通,请联系商务,否则可能需要自行开具发票 |
hotellevel | 酒店等级 | String | Y | V1.34新增 1:特牌 2:金牌 3:银牌 4:蓝牌 0:非挂牌 |
DCSupplierId | 直连供应商ID | String | Y | 仅表示直连供应商Id |
SupplierType | 供应商类型 | String | 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大于24点的时候是表示第二天的几点加上了24小时,如26:00表示第二天的2点。 | |
EndHour | 每天结束时间 | Time | Y |
GuaranteeRule节点
节点 | 名称 | 类型 | 可为空 | 说明 | |
---|---|---|---|---|---|
Description | 描述 | String(255) | N | ||
DateType | 日期类型 | Enum | N | CheckInDay-入住日期 StayDay-在店日期 | |
StartDate | 开始日期 | date | N | 举例:DateType为CheckInDay:表示当前订单的入住日期落在StartDate和EndDate之间,并且入住日期符合周设置时才需要判断其它条件是否担保,否则不需要担保 | |
EndDate | 结束日期 | date | N | ||
WeekSet | 周有效天数, 一般为周一到周日都有效, 判断日期符合日期段同时也要满足周设置的有效 周一对应为1,周二对应为2, 依次类推;逗号分隔 为空时表示无周末设置 | String(20) | Y | DateType为StayDay:表示当前订单的客人只要有住在店里面的日期(ArrivalDate,DepartureDate)落在StartDate和EndDate之间,并且入住日期符合周设置时才需要判断其它条件是否担保,否则不需要担保 | |
IsTimeGuarantee | 是否到店时间担保 | Boolean | N | False:为不校验到店时间 True:为需要校验到店时间 此字段与之后的IsAmountGuarantee字段用法比较特殊,请仔细阅读注意事项中关于这两个字段的说明。 | |
StartTime | 到店担保开始时间 | Time | Y | 用于IsTimeGuarantee==true进行检查。 | |
EndTime | 到店担保结束时间 | Time | Y | [补充]当EndTime小于StartTime的时候,默认从StartTime到次日6点都需要担保。 | |
IsTomorrow | 到店担保的结束时间是否为第二天 | Boolean | Y | 0为当天,1为次日 | |
IsAmountGuarantee | 是否房量担保 | Boolean | N | False:为不校验房量条件 True:为校验房量条件 | |
Amount | 担保的房间数,预定几间房以上要担保 | Int | Y | 用于IsAmountGuarantee==true进行检查 | |
GuaranteeType | 担保类型 | String | Y | FirstNightCost为首晚房费担保 FullNightCost为全额房费担保 | |
ChangeRule | 变更规则 | Enum | Y | 担保规则取消变更规则: NoChange、不允许变更取消 NeedSomeDay、允许变更/取消,需在XX日YY时之前通知 NeedCheckinTime、允许变更/取消,需在最早到店时间之前几小时通知 NeedCheckin24hour、允许变更/取消,需在到店日期的24点之前几小时通知 | |
Day | 日期参数 | Date | Y | ChangeRule= NeedSomeDay时,对应规则2描述中 “允许变更/取消,需在XX日YY时之前通知” 中的XX日,YY时 | |
Time | 时间参数 | Time | Y | ||
Hour | 小时参数 | Int | Y | ChangeRule= NeedCheckinTime时,对应规则3描述中 “ 允许变更/取消,需在最早到店时间之前几小时通知” 中的几小时 ChangeRule= NeedCheckin24hour时,对应规则4描述中“ 允许变更/取消,需在到店日期的24点之前几小时通知” 中的几小时 |
PrepayRule节点
节点 | 名称 | 类型 | 可为空 | 说明 | |
---|---|---|---|---|---|
Description | 描述 | String(255) | N | ||
DateType | 日期类型 | Enum | N | CheckInDay:入住日期(该字段后期下线,可以不用判断) | |
StartDate | 开始日期 | Date | Y | 使用离线数据模式需要判断 | |
EndDate | 结束日期 | Date | Y | ||
WeekSet | 周有效设置 | String(20) | Y | ||
ChangeRule | 变更规则 | Enum | N | PrepayNoChange:不允许变更取消; PrepayNeedSomeDay:在到店当日24点前Hour小时前按规则看是否可以免费变更取消(一般是不收罚金),在Hour和Hour2之间按规则存在罚金,Hour2之后不能变更取消; PrepayNeedOneTime:在约定日期时间点(DateNum + Time)前可以免费变更取消 | |
Hour | 第一阶段提前的几小时 | Int | Y | 用于PrepayNeedSomeDay | |
Hour2 | 第二阶段提前的几小时 | Int | Y | ||
DateNum | 具体取消时间日期部分 | date | Y | 用于PrepayNeedOneTime | |
Time | 具体取消时间小时部分 | time | Y | ||
DeductFeesBefore | 在变更时间点前是否扣费 | Int | Y | 用于 PrepayNeedSomeDay的Hour前扣款类型(一般不收罚金)。DeductFeesBefore为1表示扣款,0表示不扣款。 | |
DeductNumBefore | 时间点前扣费的金额或比例 | Decimal | Y | ||
CashScaleFirstAfter | 时间点后扣款类型 | Enum | Y | Money:金额 Percent:比例 FristNight:首晚 | |
DeductFeesAfter | 在变更时间点后是否扣费 | Int | Y | 用于 PrepayNeedSomeDay的Hour到Hour2之间的扣款类型。DeductFeesAfter为1表示扣款,0表示不扣款。如果CashScaleFirstAfter为FristNight,则返回-1,没有意义 | |
DeductNumAfter | 时间点后扣费的金额或比例 | Decimal | Y | ||
CashScaleFirstBefore | 时间点前扣款类型 | Enum | Y | Money:金额 Percent:比例 FristNight:首晚 |
PrepayRuleExtend节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
StartDate | 开始时间 | Date | N | 按入住日匹配,入住日在开始时间和结束时间之间,且符合周有效规则,即为命中此规则 |
EndDate | 结束时间 | Date | N | |
WeekSet | 周有效设置 | String | N | |
NoshowPenalty | 取消费用类型 | Int | Y | 0:跟随取消费用 1:订单全额(目前只有0) |
PenaltyRuleList | 取消规则列表 | PenaltyWindowType[] | N | 参见PenaltyWindowType节点;解析示例:点此查看 |
SubId | 规则类型 | Int | Y | 1:长期规则;2:特殊规则,优先看特殊规则 |
GuaranteeRuleExtend节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
StartDate | 开始时间 | Date | N | 按入住日匹配,入住日在开始时间和结束时间之间,且符合周有效规则,即为命中此规则 |
EndDate | 结束时间 | Date | N | |
WeekSet | 周有效设置 | String | N | |
GuaranteeType | 担保类型 | Int | N | 0:需担保 1:无需担保 2:超时担保 |
NoshowPenalty | 取消费用类型 | Int | Y | 0:跟随取消费用 1:订单全额 计算担保金额用,0时取PenaltyRuleList计算出的罚金列表中罚金的最大值 |
GrtLatestCheckTime | 超时担保时间 | Int | Y | 单位分钟,相对入住日24点的小时偏移量, 范围[0,840] |
PenaltyRuleList | 取消规则列表 | PenaltyWindowType[] | N | 参见PenaltyWindowType节点;解析示例:点此查看 |
SubId | 规则类型 | Int | Y | 1:长期规则;2:特殊规则,优先看特殊规则 |
PenaltyWindowType 节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
PenaltyType | 扣款类型 | Int | N | 0:百分比 1:晚数 2:首晚百分比 |
PenaltyValue | 罚金 | Double | N | PenaltyType 为 0,2时,此值为两位小数。 PenaltyType 为1是,此值使用时会取整,按整数处理。 |
Deadline | 规则时间分割起始点 | String | N | 单位分钟,第一个点为1439280 |
ValueAdd节点
节点 | 名称 | 类型 | 可为空 | 说明 | |
---|---|---|---|---|---|
TypeCode | 业务代码 | String(2) | N | 01-早餐 02-午餐 03-晚餐 04-宽带上网 05-服务费 06-政府税 99-特殊早餐,有效日期内生效,优先级高于01早餐 当99特殊早餐和01早餐同时存在时,需要根据特殊早餐的有效日期判断哪种早餐生效,即在特殊早餐有效日期内99特殊早餐生效,有效日期外01早餐生效。 | |
Description | 描述 | String(255) | N | 附加服务描述,代理不想解析的话,可以直接显示该描述 | |
IsInclude | 是否包含在房费中 | Boolean | N | false-不包含 true-包含,例如业务代码为早餐时,false即为不含早,true为含早 | |
Amount | 包含的份数 | Int | Y | ||
CurrencyCode | 货币代码 | Enum | N | 参考Currency | |
PriceOption | 单价默认选项 | Enum | Y | Money-金额,Percent-比例,None-无效 | |
Price | 单价 | Decimal | Y | 视PriceOption表示金额或比例, 比例值保存的百分数,不是最终的小数, 例如 20%, 则该字段保存为20 | |
IsExtAdd | 是否单加 | Boolean | N | 目前只有早餐服务该字段有意义 | |
ExtOption | 单加单价默认选项 | Enum | Y | Money-金额,Percent-比例 | |
ExtPrice | 单加单价 | Decimal | Y | 视 extOption 不同表示金额或比例值, 比例值保存的百分数,不是最终的小数, 例如 20%, 则该字段保存为20 | |
StartDate | 开始日期 | Date | Y | 特殊早餐有效日期 | |
EndDate | 结束日期 | Date | Y | ||
WeekSet | 周有效设置 | String(20) | Y |
DrrRule节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
RoomTypeIds | 关联的房型 | String(100) | Y | 版本v1.11新增了节点RoomTypeIds,表示这个DrrRule关联的销售房型 |
TypeCode | 产品促销规则类型代码 | Enum | N | DRRBookAhead --提前X天预订,每间晚优惠:金额M或比例N% DRRStayPerRoomPerNight --连住X晚起,每间晚优惠:金额M或比例N% DRRStayLastNight --连住X晚起,最后Y晚优惠:金额M或比例N% DRRStayTheNightAndAfter --连住X晚起,第Y晚及以后优惠:金额M或比例N% DRRStayPerLastNight --每连住X晚起,最后Y晚优惠:金额M或比例N% DRRStayWeekDay --在店日期包含周X1……X7,订单按周末价或平日价结算 DRRCheckInWeekDay --在周X1至X7入住,订单按周末价或平日价结算 |
Description | 描述 | String(255) | Y | |
DateType | 日期类型 | Enum | N | CheckInDay:入住日期 StayDay:在店日期 BookDay:预订日期 |
StartDate | 促销生效开始日期 | Date | Y | |
EndDate | 促销生效结束日期 | Date | Y | |
DayNum | 提前几天 | Int | Y | |
CheckInNum | 连住几天 | Int | Y | |
EveryCheckInNum | 每连住几晚 | Int | Y | |
LastDayNum | 最后几天 | Int | Y | |
WhichDayNum | 第几晚及以后优惠 | Int | Y | |
CashScale | 按金额或按比例来优惠 | Enum | Y | Cash-金额 Scale-比例 |
DeductNum | 按金额或比例优惠的数值 | Decimal | Y | 当CashScale为Percent时,该值保存的为百分数,例如30% |
WeekSet | 星期有效设置 | String(20) | Y | 日期符合Weekset中的周设置,才享受 feetype所对应的价格 仅DRRStayWeekDay和DRRCheckInWeekDay的时候使用 |
FeeType | 价格类型 | Enum | Y | WeekendFee -周末价格 WeekdayFee -平日价格 |
Room节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
RoomTypeId | 销售房型编号 | String(8) | N | 关联RatePlan.RoomTypeIds |
RoomId | 展示房型编号 | String(8) | N | 参考静态xml中的Room@Id |
Status | 销售房型可用状态 | Boolean | Y | 版本V1.11增加;true---该销售房型可销售,false-该销售房型不能销售 |
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 不支持 |
timeRushRule节点
节点 | 名称 | 类型 | 可为空 | 说明 | |
---|---|---|---|---|---|
startDate | 规则生效开始日期 | Date | Y | 限时抢产品规则,只对产品类型为限时抢的产品生效。 在规则生效日期时间范围内开启限时抢,可抢购时间范围为startTime到endTime。 | |
bookingStartTime | 规则生效开始时间 | Time | Y | ||
endDate | 规则生效结束日期 | Date | Y | ||
bookingEndTime | 规则生效结束时间 | Time | Y | ||
startTime | 限时抢开始时间 | Time | Y | ||
endTime | 限时抢结束时间 | Time | Y |
serviceTimePolicyInfo节点
节点 | 名称 | 类型 | 可为空 | 说明 | |
---|---|---|---|---|---|
start_date | 服务开始日期 | Date | Y | 酒店或供应商能处理订单的时间,无数据代表全天服务 预订当天入住且预订时间不在服务时间范围内的产品不可展示销售给客人,避免不必要的投诉。 | |
end_date | 服务结束日期 | Date | Y | ||
week_effective | 服务周有效 | Integer[] | Y | 周日:0,周一:1,周二:2,周三:3,周四:4,周五:5,周六:6 在服务开始结束日期范围内,周无效代表不可服务 | |
start_time | 服务开始时间 | Time | Y | 可服务的时间段,如果end_time小于start_time,则end_time表示的是次日的时间 | |
end_time | 服务结束时间 | Time | Y |
Coupon节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
EffectiveDateFrom | 有效开始日期 | DateTime | N | |
EffectiveDateTo | 有效结束日期 | DateTime | N | |
CouponRedemptionUpperLimit | 最高上限值 | Decimal | N | 根据用户优惠券的情况实行抵扣,抵扣不能超过这个数额 |
PromotionType | 类型 | Int | N | 1 - 返现 9 - 预付立减 |
RoomTypeID | 关联的房型 | String(8) | N | |
RatePlanID | 关联的产品 | Int | N |
GiftPackage节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
PkgProductId | 礼包套餐ID | Long | N | 关联RatePlan.PkgProductids |
PkgType | 礼包套餐类型 | Int | N | 0:礼包,1:套餐 |
Status | 礼包套餐状态 | Int | N | 0:无效,1:有效 |
PkgProductName | 礼包套餐名字 | String | N | |
RuleDescriptionAdditional | 礼包套餐特别说明 | String | Y | |
Pictures | 礼包套餐图片 | Picture[] | Y | 参考Picture节点 |
XProducts | X产品列表 | XProduct[] | Y | 参考XProduct节点 |
RelatedProduct | 礼包套餐关联的产品 | RelatedProduct | N |
XProduct节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
XProductId | X产品ID | Long | N | X产品即一个具体的礼包 |
XProductName | X产品名字 | String | N | |
Status | X产品状态 | Int | N | 0:无效,1:有效 |
TypeName | X产品类型 | String | Y | |
Quantity | X产品数量 | String | Y | |
ReceptionTimes | X产品接待时间 | String | Y | |
Capacity | X产品适用人数 | String | Y | |
BookingPhone | X产品预订电话 | String | Y | |
AppointPolicy | X产品预订规则 | String | Y |
Picture节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
ImgIndex | 礼包图片顺序 | Int | N | |
ImgUrl | 礼包图片链接 | String | N |
RelatedProduct节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
RoomTypeId | 供应商房型id | String | N | |
RatePlanId | 价格计划ID | Int | N |
Gift节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
GiftId | 送礼编号 | Int | N | 关联RatePlan.GiftId |
GiftDescription | 礼包副标题 | String | Y | 关于礼品副标题的描述 |
Description | 描述 | String | N | 关于礼品的描述 |
EffectiveDates | 礼包有效日期 | HotelGiftDate[] | N | 参考HotelGiftDate节点 |
RelatedProducts | 礼包关联产品 | HotelGiftProductRelation[] | N | 参考HotelGiftProductRelation节点 |
DateType | 日期类型 | Enum | N | CheckinDate:入住日 BookingDate:预订日 StayDate:在店日 |
WeekSet | 星期设置 | String(20) | N | |
GiftContent | 活动内容 | String(2000) | N | |
GiftTypes | 送礼类型 | String(20) | N | 1.礼品-含果盘 3.礼品-含水果 4.礼品-含饮品 5.礼品-含精美艺品 6.礼品-其他 7.延迟退房-延迟至13点退房 8.延迟退房-延迟至14点退房 9.延迟退房-延迟至15点退房 10.延迟退房-其他 11.餐饮-含午餐 12.餐饮-含晚餐 13.餐饮-含下午茶 14.餐饮-含餐券 15.餐饮-其他 16.旅游门票-含景点门票 17.旅游门票-含演出门票 18.旅游门票-其他 19.折扣/折扣券-含店内折扣/折扣券 20.折扣/折扣券-含外部折扣/折扣券 21.折扣/折扣券-其他 22.交通-含接站 23.交通-含接机 24.交通-含送站 25.交通-含送机 26.交通-含景区直通车 27.交通-其他 28.其他-其他 注意:1.52版本及以后该字段废弃,请使用GiftInfos字段,1.52之前的版本扔使用该字段。 |
GiftInfos | 新的送礼类型 | GiftInfo[] | Y | 参考GiftInfo字段 |
HourNumber | 小时数 | Int | Y | |
HourType | 小时数的类型 | Enum | Y | Hours24全天24小时都可以送礼品 XhourBefore几点之前送礼品 XHourAfter几点之后送礼品 |
WayOfGiving | 送礼方式 | Enum | N | EveryRoom-每间房送一回礼品 EveryRoomPerDay-每间房每个晚上送一回礼品 Other-其他,参考下面的描述 |
WayOfGivingOther | 其他的送礼具体方式 | String(20) | Y | 送礼方式为其他的时候,送礼活动的名称 |
GiftValue | 礼包价值 | Double | Y | 礼包、套餐的预估总价值 |
GiftInfo节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
GiftInfo | 礼包一级编号 | Integer | N | 1.含礼品 2.延迟退房 3.含餐饮 4.含旅游门票 5.含折扣/抵扣券 6.含交通 7.其他 |
GiftSubInfos | 二级礼包内容 | GiftSubInfo[] | N | 参考GiftSubInfo节点 |
GiftSubInfo节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
SubInfo | 礼包二级编号 | Integer | N | 1.含果盘 3.含水果 4.含饮品 5.含精美艺品 6.其他 7.延迟至13点退房 8.延迟至14点退房 9.延迟至15点退房 10.其他 11.含午餐 12.含晚餐 13.含下午茶 14.含餐券 15.其他 16.含景点门票 17.含演出门票 18.其他 19.含店内折扣/抵扣券 20.含外部折扣/抵扣券 21.其他 22.含接站 23.含接机 24.含送站 25.含送机 26.含景区直通车 27.其他 28.其他 注意:1-6对应一级编号的1,7-10对应一级编号的2,11-15对应一级编号的3,16-18对应一级编号的4,19-21对应一级编号的5,22-27对应一级编号的6,28对应一级编号的7 |
HotelGiftProductRelation节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
RoomTypeIds | 关联的房型 | String(500) | Y | All –表示所有房型(仅限同一个HotelCode) |
RatePlanId | 关联的RatePlan | Int | N | 0表示所有 |
HotelGiftDate节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
StartDate | 礼包开始日期 | DateTime | N | |
EndDate | 礼包结束日期 | DateTime | N |
Meals节点
节点 | 名称 | 类型 | 可为空 | 说明 |
---|---|---|---|---|
Type | 餐食类型 | String(2) | N | 01-默认餐食 02-带有效期范围的餐食 当02和01同时存在时,入住日在02餐食有效日期内则02餐食生效,入住日在02范围内解析是无餐食也不看01默认餐食了;否则有效日期外01默认餐食生效。 02餐食可能有多条,01默认餐食最多1条。 (注:此节点为餐食的原始规则节点,hotel.detail#Meals为移位后的到天餐食结果表格。以下2种情况需要移位:1、入住日期内全部为固定餐食,2、入住日期内全部为半固定餐食且固定餐食类型一样时,固定餐食早餐、午餐需向后移一天展示;动态餐食分别与入住日期对应,不需要后移一天) |
IsInclude | 是否包含在房费中 | Boolean | N | false-不包含 true-包含,false即为不含餐食,true为含餐食 |
NumberOfBreakfast | 早餐份数 | Int | N | |
NumberOfLunch | 午餐份数 | Int | N | |
NumberOfDinner | 晚餐份数 | Int | N | |
NumberOfTypeMeal | 餐食种类数量 | Int | N | 表示早餐份数、午餐份数、晚餐份数这三个字段大于0的字段数量之和;最小为0,最大为3 |
NumberOfOptionalMeal | 可选餐食种类数量 | Int | N | 当NumberOfTypeMeal>NumberOfOptionalMeal时,表示动态餐食,有以下几种情况: 1、早午晚餐,三选一、三选二 2、早午餐,二选一 3、午晚餐,二选一 4、早晚餐,二选一 当NumberOfTypeMeal=NumberOfOptionalMeal时,表示固定餐食,有以下几种情况: 1、早+午+晚 2、早+午 3、早+晚 4、午+晚 5、只有早/午/晚 NumberOfTypeMeal为0或NumberOfOptionalMeal为0,均为无餐食 |
optionalMeals | 可选餐食类型 | String | Y | 表示可选餐食的类型,多个类型以“,”分割,只有当餐食为固定+动态餐食时才会有值 比如餐食为早餐两份+午餐2份或晚餐2份(到店2选1),该字段有值,为"Lunch,Dinner" |
Description | 描述 | String(500) | N | 餐食描述 |
DescribeOfBreakfast | 早餐描述 | String | Y | |
DescribeOfLunch | 午餐描述 | String | Y | |
DescribeOfDinner | 晚餐描述 | String | Y | |
StartDate | 开始日期 | Date | Y | 02餐食的有效日期;01默认餐食时此字段均为空 |
EndDate | 结束日期 | Date | Y | |
WeekSet | 周有效设置 | String(20) | Y |
输入参数示例
https://api-test.elong.com/rest?timestamp=1489987430&format=json &method=hotel.data.rp&signature=6e21cd0ce89b1784b789d089ae08e2b3 &user={userid}&data={"Version":"1.28","Local":"zh_CN","Request": {"HotelIds":"40101006","PaymentType":"All"}}
输出参数示例
{ "Code": "0", "Result": { "Hotels": [ { "HotelID": "40101006", "Suppliers": [ { "HotelCode": "90042369", "WeekendStart": 5, "WeekendEnd": 7, "BookingRules": [ { "TypeCode": "PerRoomPerName", "RoomTypeIds": "all", "DateType": "BookDay", "StartDate": "2014-02-13T00:00:00 08:00", "EndDate": "2064-02-13T00:00:00 08:00", "StartHour": "00:00", "EndHour": "23:59", "Description": "酒店要求每个房间至少提供一名入住客人的姓名" } ], "Rooms": [ { "RoomTypeId": "0001", "RoomId": "1131", "Status": true } ], "InvoiceMode": "Elong" } ], "RatePlans": [ { "HotelCode": "40101006", "RoomTypeIds": "1161,1168,1170,1179", "CustomerType": "All", "IsLimitTimeSale": false, "StartTime": "00:00:00", "EndTime": "23:59:00", "MinAdvHours": 0, "MaxAdvHours": 8760, "GuaranteeRules": [], "ValueAdds": [ { "TypeCode": "01", "IsInclude": false, "Amount": 0, "PriceOption": "Money", "Price": 0, "IsExtAdd": true, "ExtOption": "Money", "ExtPrice": 50, "Description": "附加服务:单加1份早餐 50.0 元" } ], "DrrRules": [], "CustomerLevel": [ 0, 1, 2, 3, 4 ], "CooperationType": 1, "RatePlanId": 106674, "RatePlanName": "不含早餐", "MinAmount": 1, "MinDays": 1, "MaxDays": 365, "PaymentType": "SelfPay" } ], "Gifts": [ { "HotelGiftId": 1128, "HotelCode": "90042369", "RelatedProducts": [ { "RoomTypeIds": "0004", "RatePlanId": 375036 }, { "RoomTypeIds": "0004", "RatePlanId": 375038 }, { "RoomTypeIds": "0004", "RatePlanId": 375039 } ], "EffectiveDates": [ { "StartDate": "2016-08-01T00:00:00 08:00", "EndDate": "2017-08-31T00:00:00 08:00" } ], "DateType": "CheckinDate", "WeekSet": "1,2,3,4,5,6,7", "GiftContent": "礼包测试", "GiftContentEn": "", "GiftTypes": "", "HourNumber": 0, "HourType": "Hours24", "WayOfGiving": "EveryRoom", "WayOfGivingOther": "", "WayOfGivingOtherEn": "" } ] } ] }, "Guid": "e686bd6f-129e-416d-9ee7-982fde323d33" }
注意事项
说明:担保预付规则,老逻辑是A,新逻辑是B、C;目前老逻辑,容易造成代理对客展示逻辑跟艺龙试单、下单之后的罚金、担保金额、取消时间等不一致,故建议代理按新逻辑进行处理,对客展示,防止双方因逻辑不一致导致赔付。
新增新的规则取消节点PrepayRuleExtends、GuaranteeRuleExtends,若是B类供应商,走新节点的判断逻辑(点此查看),A类供应商的判断逻辑不变;开量切换中,最终B类供应商都会切到新规则,接入、切换过程有问题请联系我们。
A、 担保条件判断优先级说明
找到所有的担保规则 , 在店日期类型的条件优先级最高,入住日期类型的其次,仅返回一条有效的记录。
1. 有没有符合条件的在店日期类型的担保条件
2. 如果有含在店日期类型的担保条件,将所有在店日期依次判断,找到第一条符合星期条件的记录 并返回
3. 继续找出有没有符合条件的入住日期类型的担保条件
4. 如果有入住日期类型的担保条件 ,找到第一条符合星期条件的记录 并返回
5. 担保规则筛选顺序:先判断IsAmountGuarantee和IsTimeGuarantee字段,再根据结果来决定最后判断的字段。IsAmountGuarantee和IsTimeGuarantee字段的详细判断如下:
IsAmountGuarantee | IsTimeGuarantee | 说明 |
---|---|---|
FALSE | FALSE | 无条件担保订单,即必须担保,不需要判断其他条件 |
TRUE | FALSE | 房量担保,检查Amount |
FALSE | TRUE | 到店时间担保,检查StartTime 和EndTime |
TRUE | TRUE | 房量担保或到店时间担保 。需要检查Amount、StartTime和EndTime,满足一个条件就需要担保 |
B、担保规则条件判断说明(RatePlan节点下新增SupplierType,根据此字段区分供应商类别)
A类供应商判别逻辑如下:
1.1:初步筛选出满足“有效日期”、“日期类型”、“周有效”的担保规则列表。
1.2:按“日期类型”,优先级:在店日期>入住日期,依次判断日期类型是:在店日期的规则是否命中“担保条件”,如果命中就用该担保规则计算担保金额、取消时间,无需再判断;如果未命中,继续查找,当所有“日期类型”为在店日期都无法满足时,才判断“日期类型”是到店日期的规则,全部过程只需要找到一条满足条件的规则,即可返回。
B类供应商判别逻辑如下:
1.1:初步筛选出满足“有效日期”、“日期类型”、“周有效”的担保规则列表。
1.2:判断每一天,找出满足条件的担保规则列表,对担保金额、取消时间各维度取最严。担保金额:需要担保的日期房费之和(多个首晚不叠加,有全额即全额)。取消时间:为触发的规则列表中取最严从入住日的24点往前推算。
现付规则Case如下:
现付规则列表 | 担保规则1 | 担保规则2 | 担保规则3 | 担保规则4 | 担保规则5 |
DateType | CheckInDay | StayDay | StayDay | StayDay | StayDay |
StartDate | 2019-10-01 | 2019-10-03 | 2019-10-05 | 2019-10-07 | 2019-10-09 |
EndDate | 2019-10-02 | 2019-10-04 | 2019-10-06 | 2019-10-08 | 2019-10-10 |
WeekSet | 1,2,3,4,5,6,7 | 1,2,3,4,5,6,7 | 1,2,3,4,5,6,7 | 1,2,3,4,5,6,7 | 1,2,3,4,5,6,7 |
IsTimeGuarantee | true | true | false | false | false |
StartTime | 18:00 | 15:00 | |||
EndTime | 次日6:00 | 次日6:00 | 次日6:00 | 次日6:00 | 次日6:00 |
IsTomorrow | true | true | true | true | true |
IsAmountGuarantee | false | false | true | true | false |
Amount | 0 | 0 | 3 | 2 | 0 |
GuaranteeType | FullNightCost | FirstNightCost | FirstNightCost | FullNightCost | FullNightCost |
ChangeRule | NeedCheckin24hour | NeedCheckin24hour | NeedCheckin24hour | NeedCheckin24hour | NoChange |
Day | 1970-01-01T00:00:00+08:00 | 1970-01-01T00:00:00+08:00 | 1970-01-01T00:00:00+08:00 | 1970-01-01T00:00:00+08:00 | 1970-01-01T00:00:00+08:00 |
Time | 18:00 | 18:00 | 18:00 | 18:00 | 18:00 |
Hour | 6 | 4 | 10 | 5 | 0 |
Case1(跨规则1、2) | A类供应商 | B类供应商 | ||
ArrivalDate | 2019-10-01 | 命中规则2 | 命中规则1、2 | 命中规则 |
DepartureDate | 2019-10-04 | 15:00之前到店不需要担保,15:00~次日6:00到店需要担保 | 15:00之前到店不需要担保,15:00~次日6:00到店需要担保 | 担保条件 |
FirstNightCost | FullNightCost | 担保金额 | ||
入住日24点前4个小时前可以免费取消,之后无法变更取消。 | 入住日24点前6个小时前可以免费取消,之后无法变更取消。 | 取消时间 | ||
说明:1:A类供应商,按在店日期>入住日期,找到满足条件的1条数据,故命中规则2;”担保条件“、”担保金额“、”取消时间“均按规则2进行计算。 2:B类供应商,判断每一天,找到所有命中的规则,故命中规则1、2;对各维度取最严,担保条件:规则2的更严,用规则2数据;担保金额:规则1的更严,使用规则1数据;取消时间:规则1更严,使用规则1数据。 |
Case2(跨规则2、3) | A类供应商 | B类供应商 | ||
ArrivalDate | 2019-10-03 | 命中规则2 | 3间房以上(含3间)命中规则2、3; 3间房以下,命中规则2 | 命中规则 |
DepartureDate | 2019-10-06 | 15:00之前到店不需要担保,15:00~次日6:00到店需要担保 | 3间房以上(含3间),需要担保; 3间房以下,15:00之前到店不需要担保,15:00~次日6:00到店需要担保。 | 担保条件 |
FirstNightCost | 3间房以上(含3间),FirstNightCost; 3间房以下,FirstNightCost | 担保金额 | ||
入住日24点前4个小时前可以免费取消,之后无法变更取消。 | 3间房以上(含3间),入住日24点前10个小时前可以免费取消,之后无法变更取消 ; 3间房以下,入住日24点前4个小时前可以免费取消,之后无法变更取消。 | 取消时间 | ||
说明:1:A类供应商,按在店日期>入住日期,找到满足条件的1条数据,故命中规则2;”担保条件“、”担保金额“、”取消时间“均按规则2进行计算。 2:B类供应商,3间房以上命中规则2、3;故“担保条件”、“担保金额”、“取消时间”各维度取最严。 |
Case3(跨规则3、4) | A类供应商 | B类供应商 | ||
ArrivalDate | 2019-10-05 | 1间房未命中任何规则; 2间房命中规则4; 3间房以上(含3间)命中规则3; | 1间房未命中任何规则; 2间房命中规则4; 3间房以上(含3间)命中规则3、4; | 命中规则 |
DepartureDate | 2019-10-08 | 1间房不需要担保; 2间房、3间房以上均需担保,故2间房以上(含2间)需要担保 | 1间房不需要担保; 2间房、3间房以上均需担保,故2间房以上(含2间)需要担保; | 担保条件 |
1间房无担保金额; 2间房FullNightCost; 3间房FirstNightCost | 1间房无担保金额; 2间房FullNightCost; 3间房FullNightCost | 担保金额 | ||
1间房可以免费取消; 2间房,入住日24点前5个小时可以免费取消,之后无法变更取消; 3间房,入住日24点前10个小时可以变更取消,之后无法变更取消; | 1间房可以免费取消; 2间房,入住日24点前5个小时可以免费取消,之后无法变更取消; 3间房,入住日24点前10个小时可以变更取消,之后无法变更取消; | 取消时间 | ||
说明:1:A类供应商,按在店日期>入住日期,1间房不能命中任何规则;2间房命中可以命中规则4,根据规则4计算担保金额、取消时间;3间房以上命中规则3,根据规则3计算担保金额、取消时间。 2:B类供应商,1间房未命中任何规则;2间房命中规则4,根据规则4计算担保金额、取消时间;3间房以上命中规则3、4,从规则3、4对担保金额、取消时间取最严。 |
Case4(跨规则4、5) | A类供应商 | B类供应商 | ||
ArrivalDate | 2019-10-07 | 1间房命中规则5 2间房以上(含2间)命中规则4; | 1间房命中规则5; 2间房以上(含2间)命中规则4、5; | 命中规则 |
DepartureDate | 2019-10-10 | 1间房需要担保; 2间房以上(含2间)需要担保; 合并:1间房以上均需担保。 | 1间房需要担保; 2间房以上(含2间)需要担保; 合并:1间房以上均需担保。 | 担保条件 |
1间房FullNightCost; 2间房以上FullNightCost; 合并:FullNightCost | 1间房FullNightCost; 2间房以上FullNightCost; 合并:FullNightCost | 担保金额 | ||
1间房不可以取消; 2间房以上,入住日24点前5个小时可以免费取消,之后无法变更取消; | 1间房不可以取消; 2间房以上,不可以取消; 合并:不可变更取消。 | 取消时间 | ||
说明:1:A类供应商,按在店日期>入住日期,1间房命中规则5,故担保金额、取消时间均按规则5计算;2间房以上命中规则4,故担保金额、取消时间按规则4计算。 2:B类供应商,1间房命中规则5,故担保金额、取消时间按规则5计算;2间房以上,命中规则4、5,担保金额、取消时间按规则4、5取最严。 |
C、预付规则条件判断说明(RatePlan节点下新增SupplierType,根据此字段区分供应商类别)
A类供应商判别逻辑如下(不校验“日期类型”):
1.1:只判断第一天是否命中规则,即:拿客人的入住日,判断是否在规则有效期内,同时是否命中“周有效”;
1.2:如果命中,则使用该规则计算罚金、取消时间。
1.3:如果未命中,则认为可以免费取消。
B类供应商判别逻辑如下(不校验“日期类型”):
1.1:判断每一天,即:拿客人入住日~离店日的每一天,判断是否在规则有效期,是否命中“周有效”;
1.2:如果命中多条,则对罚金、取消时间取最严,存在“PrepayNoChange”,先用不允许变更取消。
1.3:如果未命中,则认为可以免费取消。
预付规则Case如下:
预付规则列表 | 预付规则1 | 预付规则2 | 预付规则3 |
StartDate | 2019-10-01T00:00:00+08:00 | 2019-10-03T00:00:00+08:00 | 2019-10-05T00:00:00+08:00 |
EndDate | 2019-10-02T00:00:00+08:00 | 019-10-04T00:00:00+08:00 | 2019-10-06T00:00:00+08:00 |
WeekSet | 1,2,3,4,5,6,7 | 1,2,3,4,5,6,7 | 1,2,3,4,5,6,7 |
ChangeRule | PrepayNeedSomeDay | PrepayNeedSomeDay | PrepayNoChange |
DateNum | 1970-01-01T00:00:00+08:00 | 1970-01-01T00:00:00+08:00 | 1970-01-01T00:00:00+08:00 |
Time | 18:00 | 18:00 | 18:00 |
CashScaleFirstAfter | Money | Percent | FristNight |
DeductFeesAfter | 1 | 1 | 0 |
DeductNumAfter | 300 | 10 | 0 |
CashScaleFirstBefore | FristNight | FristNight | FristNight |
DeductFeesBefore | 0 | 0 | 0 |
DeductNumBefore | 0 | 0 | 0 |
Hour | 30 | 20 | 24 |
Hour2 | 10 | 15 | 0 |
Case1(跨规则1、规则2),客人入参 | A类供应商 | B类供应商 | |
ArrivalDate | 2019-10-02 | 命中规则1 | 命中规则1、2 |
DepartureDate | 2019-10-04 | 在到店当日24点前30小时前可以免费取消,在30小时和10小时之间按规则收取罚金300元,10小时后不能变更取消。 | 在到店日24点前30小时可以免费取消,在30小时到15小时之间按规则收取罚金(罚金需要判断规则1、2哪个大,用哪个),15小时后不能变更取消 |
说明:1:A类供应商,判断第一天,命中规则1,所有逻辑按规则1计算。 2:B类供应商,判断每一天,命中规则1、2,罚金、取消时间取最严;取消时间:取规则1的30小时前可以免费取消,取规则2的15小时后不可变更取消。 罚金:需要判断规则1、规则2哪个罚金多,用哪个。 |
Case2(跨规则2、规则3),客人入参 | A类供应商 | B类供应商 | |
ArrivalDate | 2019-10-03 | 命中规则2 | 命中规则2、3 |
DepartureDate | 2019-10-06 | 在到店日24点前20小时可以免费取消,在20小时和15小时之前按规则取消收取10%罚金,15小时后不能变更取消 | 不能变更取消 |
说明:1:A类供应商,判断第一天,命中规则2,所有逻辑按规则2计算。 2:B类供应商,判断每一天,命中规则2、3,罚金、取消时间取最严;因规则3是“PrepayNoChange”,故不允许变更取消。 |
B类供应商新规则节点(PrepayRuleExtends、GuaranteeRuleExtends)解析逻辑
1.按入住日匹配,入住日在开始时间和结束时间之间,且符合周有效规则,即为命中此规则
2.当同时存在长期规则和特殊规则时,特殊规则优先(hotel.detail、hotel.data.booking无需考虑,给出的即是命中规则)
3.Deadline按入住日24点往前推N分钟,是此段规则结果的EndTime,下一段规则结果的BeginTime;第一段1439280表示无穷小起始
4.预付规则解析时最后一段非扣全额时应虚拟出不可取消段,最后一段为非扣全额且大于0的,将规则算出来的最后一段的结束时间改为入住日次日06:00,即最后一段的deadline-入住日次日06:00定义为付费取消段(如扣50%,左开右闭区间),再虚拟出一段不可取消的,即入住日次日06:00-无穷大,按全额百分比扣100%(case1、2);最后一段为非扣全额且等于0的,将规则算出来的最后一段的结束时间改为入住日24:00,即最后一段的deadline-入住日24:00定义为免费取消段,再虚拟出一段不可取消的,即入住日24:00-无穷大,按全额百分比扣100%(case3)
5.现付规则解析时,若担保类型为超时担保,需要根据超时担保时间计算出是否需要担保,不需要担保时可以免费取消,需要担保时取消规则按照取消规则列表PenaltyRuleList计算(case5)
示例:
条件:"ArrivalDate": "2023-07-20","DepartureDate": "2023-07-22","每晚房费": 100
case1,限时免费取消,按首晚的50%扣费:
"PrepayRuleExtends": [
{
"StartDate": "2023-07-19T00:00:00+08:00",
"EndDate": "2099-01-01T00:00:00+08:00",
"WeekSet": "1,2,3,4,5,6,7,",
"NoshowPenalty": 0,
"PenaltyRuleList": [
{
"PenaltyType": 0,
"PenaltyValue": 0,
"Deadline": 1439280
},
{
"PenaltyType": 2,
"PenaltyValue": 0.5,
"Deadline": 600
}
]
}
]
case1解析结果:
"PrepayResult": {
"CancelDescription": "您可以在2023年7月20日14:00之前免费取消或变更订单;您在2023年7月21日6:00之前变更或取消,将收取部分房费50元作为违约费用;在2023年7月21日6:00之后变更或取消,将收取全额房费作为违约费用。若您已办理入住,则订单不可变更或取消。",
"CancelTag": "入住日14点前免费取消",
"CancelType": 3,
"LadderParseList": [
{
"BeginTime": 1603512000,
"EndTime": 1689832800,
"CutType": 0,
"CutValue": 0,
"Amount": 0,
"ShortDesc": "免费取消",
"BeginTimeLocal": 1603512000,
"EndTimeLocal": 1689832800,
"AmountRmb": 0,
"ExchangeRate": 1
},
{
"BeginTime": 1689832800,
"EndTime": 1689890400,
"CutType": 1,
"CutValue": 50
"Amount": 50,
"ShortDesc": "¥50",
"BeginTimeLocal": 1689832800,
"EndTimeLocal": 1689890400,
"AmountRmb": 50,
"ExchangeRate": 1
},
{
"BeginTime": 1689890400,
"EndTime": 4102329600,
"CutType": 1,
"CutValue": 200,
"Amount": 200,
"ShortDesc": "不可取消",
"BeginTimeLocal": 1689890400,
"EndTimeLocal": 4102329600,
"AmountRmb": 200,
"ExchangeRate": 1
}
]
}
case2,限时免费取消,按订单总额比例80%扣费:
"PrepayRuleExtends": [
{
"StartDate": "2023-07-19T00:00:00+08:00",
"EndDate": "2099-01-01T00:00:00+08:00",
"WeekSet": "1,2,3,4,5,6,7,",
"NoshowPenalty": 0,
"PenaltyRuleList": [
{
"PenaltyType": 0,
"PenaltyValue": 0,
"Deadline": 1439280
},
{
"PenaltyType": 0,
"PenaltyValue": 0.8,
"Deadline": 360
}
]
}
]
case2解析结果:
"PrepayResult": {
"CancelDescription": "您可以在2023年7月20日18:00之前免费取消或变更订单;您在2023年7月21日6:00之前变更或取消,将收取部分房费160元作为违约费用;在2023年7月21日6:00之后变更或取消,将收取全额房费作为违约费用。若您已办理入住,则订单不可变更或取消。",
"CancelTag": "入住日18点前免费取消",
"CancelType": 3,
"LadderParseList": [
{
"BeginTime": 1603512000,
"EndTime": 1689847200,
"CutType": 0,
"CutValue": 0,
"Amount": 0,
"ShortDesc": "免费取消",
"BeginTimeLocal": 1603512000,
"EndTimeLocal": 1689847200,
"AmountRmb": 0,
"ExchangeRate": 1
},
{
"BeginTime": 1689847200,
"EndTime": 1689890400,
"CutType": 1,
"CutValue": 160,
"Amount": 160,
"ShortDesc": "¥160",
"BeginTimeLocal": 1689847200,
"EndTimeLocal": 1689890400,
"AmountRmb": 160,
"ExchangeRate": 1
},
{
"BeginTime": 1689890400,
"EndTime": 4102329600,
"CutType": 1,
"CutValue": 200,
"Amount": 200,
"ShortDesc": "不可取消",
"BeginTimeLocal": 1689890400,
"EndTimeLocal": 4102329600,
"AmountRmb": 200,
"ExchangeRate": 1
}
]
}
case3,入住日24点前免费取消:
"PrepayRuleExtends": [
{
"StartDate": "2023-07-19T00:00:00+08:00",
"EndDate": "2099-01-01T00:00:00+08:00",
"WeekSet": "1,3,4,5,6,7,",
"NoshowPenalty": 0,
"PenaltyRuleList": [
{
"PenaltyType": 0,
"PenaltyValue": 0,
"Deadline": 1439280
}
]
}
]
case3解析结果:
"PrepayResult": {
"CancelDescription": "您可以在2023年7月20日24点之前免费取消或变更订单;在2023年7月21日0:00之后变更或取消,将收取全额房费作为违约费用。若您已办理入住,则订单不可变更或取消。",
"CancelTag": "入住日24点前免费取消",
"CancelType": 3,
"LadderParseList": [
{
"BeginTime": 1603512000,
"EndTime": 1689868800,
"CutType": 0,
"CutValue": 0,
"Amount": 0,
"ShortDesc": "免费取消",
"BeginTimeLocal": 1603512000,
"EndTimeLocal": 1689868800,
"AmountRmb": 0,
"ExchangeRate": 1
},
{
"BeginTime": 1689868800,
"EndTime": 4102329600,
"CutType": 1,
"CutValue": 200,
"Amount": 200,
"ShortDesc": "不可取消",
"BeginTimeLocal": 1689868800,
"EndTimeLocal": 4102329600,
"AmountRmb": 200,
"ExchangeRate": 1
}
]
}
case4,不可取消:
"PrepayRuleExtends": [
{
"StartDate": "2023-07-19T00:00:00+08:00",
"EndDate": "2099-01-01T00:00:00+08:00",
"WeekSet": "1,2,3,4,5,6,7,",
"NoshowPenalty": 0,
"PenaltyRuleList": [
{
"PenaltyType": 0,
"PenaltyValue": 1,
"Deadline": 1439280
}
]
}
]
case4解析结果:
"PrepayResult": {
"CancelDescription": "您的订单一经确认,不可变更或取消;如未能如约入住,将收取全额房费作为违约费用。",
"CancelType": 4,
"LadderParseList": [
{
"BeginTime": -28800,
"EndTime": 4102329600,
"CutType": 1,
"CutValue": 200,
"Amount": 200,
"ShortDesc": "不可取消",
"BeginTimeLocal": -28800,
"EndTimeLocal": 4102329600,
"AmountRmb": 200,
"ExchangeRate": 1
}
]
}
case5,按到店时间担保:
GuaranteeRuleExtends": [
{
"StartDate": "2023-07-18T00:00:00+08:00",
"EndDate": "2023-07-20T00:00:00+08:00",
"WeekSet": "1,2,3,4,5,6,7",
"NoshowPenalty": 0,
"GuaranteeType": 2,
"GrtLatestCheckTime": 600,
"PenaltyRuleList":
[
{
"PenaltyType": 0,
"PenaltyValue": 1.0,
"Deadline": 1439280
}
]
}
]
case5解析结果:
当最晚到店时间为14点之前时,不需要担保,免费取消:
"GuaranteeResult": {
"GuaranteeMoney": 0.0
"NeedGuarantee": false,
"CancelDescription": "办理入住前,您可以随时免费取消或变更订单。",
"CancelType": 1,
"LadderParseList":
[
{
"BeginTime": 1689651032,
"EndTime": 4102329600,
"CutType": 0,
"CutValue": 0.0,
"Amount": 0.0,
"ShortDesc": "免费取消",
"AmountRmb": 0.0,
"ExchangeRate": 1.0
}
]
}
当最晚到店时间为14点或之后时,需要担保,不可取消:
"GuaranteeResult": {
"GuaranteeMoney": 200,
"NeedGuarantee": true,
"CancelDescription": "订单确认后,若您取消或变更订单,将收取全额担保金作为违约费用。",
"CancelType": 4,
"LadderParseList": [
{
"BeginTime": -28800,
"EndTime": -28800,
"CutType": 1,
"CutValue": 200,
"Amount": 200,
"ShortDesc": "不可取消",
"AmountRmb": 200,
"ExchangeRate": 1
}
]
}
D、 促销DRR条件判断优先级说明
1. 判断日期优先级:预订日期→入住日期→在店日期。
2. 判断预订日期的规则:
如果有:
符合预订日期:取出此条规则,并计算优惠价。
不符合预订日期:继续判断下一条预订规则,直到所有预订规则判断结束。
如果没有:
结束预订日期规则的判断
3. 如果没有符合条件的预订日期规则,则需判断入住日期的规则:
如果有:
符合入住日期:取出此条规则,并计算优惠价
不符合:继续判断下一条入住规则,直到所有入住日期规则判断结束 。
如果没有:
结束入住日期规则的判断
4. 如果没有符合条件的预订日期规则或入住日期规则,则需判断在店日期的规则:
只要在店的日期中的任何一天在时间范围内,则表示命中规则可以按规则计算优惠。
礼包套餐(GiftPackage节点)使用说明:
- 在房型产品中取GiftPackage.PkgProducname作为礼包套餐标题展示,在礼包套餐标题前取PkgType字段展示类型(如0,展示为礼包)。在礼包套餐详情页中,按类别(TypeName)分别展示每个类别中X产品(XProduct)具体信息:取该类型中的每个X产品的XProductName+Qunatity进行拼接作为该类别X产品标题,如"X产品A 1份/天+X产品B 1份一天";在X产品标题前可展示X产品类型(TypeName)。在该类别X产品标题分别展示所含X产品信息,取"XProductName使用说明"作为每个X产品的副标题,如"X产品A使用说明",在每个X产品的副标题下展示其具体内容:"预约规则:AppointPolicy 预约时间: ReceptionTimes 适用人数:Capacity 预约电话:BookingPhone"等内容。如果这些字段返回都为空,则无需展示该X产品
- 在X产品展示完之后可取礼包套餐的特别说明(GiftPackage.RuleDescriptionAdditional)进行展示,标题为"特别说明",取图片GiftPackage.Pictures中的ImgUrl字段展示图片,标题为"图文说明",图片按Picture.ImgIndex的大小按顺序展示。
常见错误码
错误码 | 解释 | 解决方法 |
---|---|---|
H000005 | 入住日期不能为空 | 可能是日期格式错误导致的,支持的日期时间格式:"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss" |
H000006 | 离店日期不能为空 | 可能是日期格式错误导致的,支持的日期时间格式:"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss" |
H002004 | 没有搜索预付产品权限 | 权限不够,联系商务解决。 |
H004001 | 无预付产品权限 | 权限不够,联系商务解决。 |