Skip to main content

TMC专用接口列表

获取房量房价接口

功能描述:TMC专用获取房量房价接口,兼容单个房价码可能会返回多次,指定托管客户输出活动价

房价房量接口接入方案

  • 1、接入方每天不超过三次拉取全量房价房量,每次间隔建议6小时以上
  • 2、接入方每次拉取全量房价房量,时间范围是1-90天
  • 3、接入方使用验单接口发现房价房量变更,及时拉一次当前酒店的房价房量
  • 4、接入方可以接入房价房量变更通知接口,若有房量房价变更,华住商旅系统会及时通知

限流整改措施

  • 1、若监测到接入方收到整改通知后,依然存在频繁拉取房价房量,会做一定限流甚至关停IP处理

接口地址:/hotel/getTMCRoomPrice

请求方式:POST

请求参数说明
参数名参数类型备注是否必填示例值
cardIdString公司卡号VCENTCRM0002220001
cardPassWordString公司卡密码TestPassword
memberLevelListList<String>会员级别列表
企业会员
K:企业铂金 85含双早
C:企业金卡 88含双早
J: 企业玫瑰金88不含早
U: 92含双早
D: 企业银卡92不含早
O: 95含双早
T: 95不含早
个人会员
I:个人铂金会员85含双早
B:个人金会员88含单早
A:个人银会员92不含早
P:个人星会员98不含早
如果不填则默认以公司卡号的会员等级去获取
注:
(1)TMC客户必填(根据自己实际需要的等级传参)
(2)直连可不传,不传时,默认只返回当前cardId对应等级的企业价格
checkInDateDate入住日期2020-03-06
checkOutDateDate离店日期2020-03-07
hotelIdListList<String>酒店列表 一次最大支持查询1家酒店["2000505"]
roomTypeListList<String>房型列表 不传默认取所有房型["DR"]
adultsPerRoomInteger一间房的入住人数,用于获取多人价(举例:一人价、两人价等);
入住人数:1-5,目前不支持大于5人(不涉及儿童数量,价格只根据成人数量计算,举例:两大一小,数量传2)
不传值,默认是2
请求示例:
{
"cardId": "VCENTCRM0002220001",
"cardPassWord": " TestPassword",
"memberLevelList": ["K","C"],
"checkInDate": "2020-05-20",
"checkOutDate": "2020-05-21",
"hotelIdList": [
"2000505"
]
}
返回参数说明
参数名参数类型备注
codecode状态码
200 成功!
500 应用程序繁忙,请稍后再试!
messageString响应消息
contentList<RoomDTO>
RoomDTO
参数名参数类型备注
rateCodeString房价码ID
注意事项:
1、在每个企业中单个酒店的同一个房价码ID会存在不同房型下面,同一个房型下不会出现重复房价码ID
2、若在酒店中同一个房型下有重复房价码ID,一般性都是固定价(RFPNegotiation),则根据rfpCardIdList中企业卡号划分到不同的企业下面即可。
rateCodeName房价码名称
rateCodeDescription房价码描述
checkInTypeListString入住类型
NONE 不限制
HOUR 按小时
DAY 按天
企业商旅目前只支持按天入住(DAY)
activityId活动ID
注意事项:
1、活动ID不为空即为活动房价码
2、连住活动房价码存在提前离店收取罚金
3、判断连住优惠活动规则:活动ID不为空,预订政策中minCheckInUnit天数大于1。
tagListList<String>1、门市价(RackRate):没有任何折扣的价格,一般性不输出;
2、会员价(Base):基于企业卡等级折扣的价格,比如企业卡等级是K,就是85折价格;
3、固定价(RFPNegotiation):某企业与某酒店的某个或多个房型签订的价格,比如A企业与A酒店大床房签订一段时间200元的价格;
4、活动价(Standard):一般性有两种折扣模式:一种是折上折模式,比如提前1天预订9折,就是在会员价基础上在打9折;一种是固定活动价格,比如固定400元;活动价上线前需要运营配置指定的企业;可判断activityId是否不为空,若不为空就是活动价。
5、单店协议价(Negotiation):某酒店与某企业签订的一种固定协议价格
priceDailyListList<PriceDailyDTO>每日价格
注意事项:
1、每日的总对总结算金额是按照每日税后价格计算的;
2、小规模纳税人每日总对总价格是每日税后价格*1.0523,保留两位小数,四舍五入。
roomCountDailyListList<RoomCountDailyDTO>每日房量
房价码返回为空的情况
1、此酒店已下架此房价码
2、没有匹配房价码的售卖规则(如连住时间、售卖时间等)
注意事项:一般性判断availableCount数量即可;若不可预定或者没房量,此字段都是0。
memberAndBreakFastListList<BreakFastDTO>会员和早餐
memberLevelsList<String>会员等级
bookInfoBookDTO预订政策
注意事项:通过预订政策判断活动房价码可预订时间范围,可入住时间范围以及是否需满足连住要求等。
举例:活连住动(活动ID13135),新春优惠-提前1天连住2晚折上9折
"minBookUnit":1---提前一天预订
"minCheckInUnit":2---连续预订两晚
"beginBookDate":"2024-01-31",--开始预订日期
"endBookDate":"2024-02-28"-----结束预订日期
"firstCheckInDate":"2024-02-01",-----开始入住日期
lastCheckOutDate":"2024-02-29"-----结束入住日期
条件今天是2月27日
场景1:2月27日-03月02日;不满足提前一天预订的条件,不满足3月1日入住条件,不能支持预订
场景2:2月28日-03月02日;3月1日的入住日期不满足在开始入住日期和结束入住日期范围内,不能支持预订
场景3:2月28日-03月01日;满足提前一天预订,2月28日和2月29日均在入住日期范围内,此场景可以支持预订
checkInInfoCheckInDTO入住政策
cancelInfoCancelDTO取消政策
(取消时间是代表酒店的当地时间)(若是海外酒店需要换算成北京时间,可以根据酒店详情中的时区换算)
otherInfoOtherDTO其他政策
rfpCardIdListList<String>当rateCode的taglist是RFPNegotiation时,返回可使用此房价码的企业卡号列表。(此字段供TMC使用,直连客户可忽略)
输出格式:"rfpCardIdList": [ "v111122223333"]
代表这个固定价房价码支持这个TMC下的这些企业托管卡可以使用。
activityControlInfoActivityControl当rateCode的taglist是Standard时,通过黑白名单controlType字段显示活动价的企业卡号列表是WHITE(白名单)或BLACK(黑名单);
1)全量输出,输出格式如下:
I、输出格式:"activityControllnfo":{"activityld":"123456,"controlType":null,"controlList":null};
代表这个活动房价码在这个TMC下的全量托管卡都可以使用。

2)controlType是WHITE(白名单),输出格式如下:
I、输出格式:"activityControllnfo":{"activityld":"123456","controlType":"WHITE","controlList":["v111122223333","V23333344444","V444322221111"]};
代表这个活动房价码支持这个TMC下的这些企业托管卡可以使用。

3)controlType是BLACK(黑名单),输出格式如下:
I、输出格式:"activityControllnfo":{"activityld":"123456","controlType":"BLACK","controlList":["v111122223333","V23333344444","V444322221111"]};
代表这个活动房价码除了这个TMC下的这些企托管卡,TMC下的其他托管卡都可以使用。

II、输出格式:"activityControllnfo":{"activityld":"123456","controlType":"BLACK","controlList":[]};
代表这个活动房价码在这个TMC下的全部托管卡都可以使用。
rateCodeControlRateCodeControl当华住酒店类型是非中国内地酒店(包含港澳台酒店)时,返回可使用此房价码的企业卡号列表。
通过controlType字段显示活动价的企业卡号列表是WHITE(白名单)
1)controlType是WHITE(白名单),输出格式如下:
输出格式:"rateCodeControl":{"controlType":"WHITE",""controlList":["v111122223333","V23333344444","V444322221111"]};
代表这个海外房价码支持这个TMC下的这些企业托管卡可以使用。

使用华住商旅接口"/hotel/getTMCRoomPrice"需要特别注意事项。

  1. 如果"memberLevelList"传入参数是多个等级的方式,出参时返回的房价码基于包含的不同数量早餐包需要做程序处理。 华住商旅目前会返回两种形式的房价码早餐包,字段是 "memberAndBreakFastList",如下:
  • a、返回一个房价码包含一个等级的早餐包 ,字段"memberAndBreakFastList",主要房价码是"企业会员价","企业会员折上折活动价";
  • b、返回一个房价码包含多个等级的早餐包 ,字段"memberAndBreakFastList",主要是房价码是"门市固定折扣价","RFP价格"; 如果遇到房价码中包含多个等级的早餐包,需要按照不同等级匹配一次房价码中的早餐包即可。
  1. 如果"memberLevelList"传入参数是一个等级的方式,出参时返回的房价码仅包含一个等级的早餐包,不需要二次处理。

第一、afterTaxPrice和companyToGroupPrice字段解释

  1. afterTaxPrice为含税价
  2. companyToGroupPrice为含税价+税点差额
    无论对客展示是显示afterTaxPrice还是显示companyToGroupPrice,验价接口和下单接口统一传afterTaxPrice。(见订单相关接口模式)

第二、“税点差额”解释

公司总对总订单情况中,由于存在小规模纳税人的酒店,导致华住总部开票和酒店开票之间存在税点差额,需要补额外税点费用。 税点差额计算方法:afterTaxPrice*0.0523(保留两位小数,第三位小数四舍五入) 因此业务上需判断税点差额由客人承担还是公司承担

  1. 由客人承担时并且订单是总对总订单,则将companyToGroupPrice显示给客人;
  2. 由公司承担时并且订单是总对总订单,则将afterTaxPrice显示给客人;
    特别地,由于现付订单(非总对总订单)从门店直接拿票,无需要补额外税点费用。因此现付订单前端显示afterTaxPrice即可。
PriceDailyDTO:
参数名参数类型备注
roomTypeIdString房型
bizDateDate营业日
currencyCodeString币种
CNY:人民币
EUR:Euro
AED:United Arab Emirates Dirham
AFN:Afghani
AMD:Armenian Dram
ANG:Netherlands Antillean Guilder
AOA:Kwanza
ARS:Argentine Peso
AZN:Azerbaijan Manat
BAM:Convertible Mark
BBD:Barbados Dollar
BDT:Taka
BGN:Bulgarian Lev
BHD:Bahraini Dinar
BIF:Burundi Franc
CHF:Swiss Franc
DKK:Danish Crones
DZD:Algerian Dinar
EGP:Egyptian Pound
HUF:Hungarian Forint
OMR:Omani Rial
QAR:Qatari Riyal
SAR:Saudi Riyal
SEK:Swedish Crones
TND:Tunisian Dinar
USD:United States Dollar
XCD:East Caribbean Dollar
GBP:Pound Sterling
marketPriceBigDecimal门市价
marketCNYPriceBigDecimal人民币门市价(含税价)
beforeTaxPriceBigDecimal税前价(净价)
beforeTaxCNYPriceBigDecimal人民币税前价(净价)
afterTaxPriceBigDecimal税后价(含税价)
afterTaxCNYPriceBigDecimal人民币税后价(含税价)
multiPersonInt一人价、两人价
companyToGroupPriceBigDecimal公司总对总价(含税价+税点差价)
companyToGroupCNYPriceBigDecimal人民币公司总对总价(含税价+税点差价)
isForbiddenBool是否禁用
isBlackBool房型是否黑名单

房价码返回为空的情况

  1. 此酒店已下架此房价码
  2. 没有匹配房价码的售卖规则(如连住时间、售卖时间等)
RoomCountDailyDTO:
参数名参数类型备注
roomTypeIdString房型
bizDateDate营业日
retainCountInt保留房量
shareCountInt共享房量
availableCountInt可售房量
isForbiddenBool是否禁用
isBlackBool房型是否黑名单
BreakFastDTO:
参数名参数类型备注
companySrcString公司来源
HUAZHU 华住
ACCOR 雅高
memberLevelString会员级别
breakfastCountIntbreakfastCount是指入住人的最大早餐份数
举例说明:
1、中国内地酒店(不含港澳台酒店):
a、若返回breakfastCount=1,则入住人只有1份早餐
b、若返回breakfastCount=2,则入住人最多2份早餐
2、非中国内地酒店(包含港澳台酒店):
a、预订1人价格,若返回breakfastCount=1,则入住人只有1份早餐
b、预订1人价格,若返回breakfastCount=2,则入住人只有1份早餐
c、预订2人价格,若返回breakfastCount=1,则入住人只有1份早餐
d、预订2人价格,若返回breakfastCount=2,则入住人最多2份早餐
BookDTO:
参数名参数类型备注
guaranteeModeString支持的担保模式
NONE:无
FIRST_NIGHT:首晚担保
FULL_AMOUNT:全额担保
1、到付和预付区别
a、guaranteeMode是NONE,则支持到店付或者预付
b、guaranteeMode是FIRST_NIGHT或者FULL_AMOUNT,则必须预付
2、担保模式使用
a、企业协议价按照企业卡的担保模式(运营开卡时确认的担保模式)
b、活动价按照房价码担保模式,判断房量房价接口中的BookDTO中的guaranteeMode(担保模式)(房量房价接口中activityId不为空就是活动房价码;活动价下单时,验价及下单接口必须要传activityId,否则默认为会员价)
3、现付客户不能使用活动价注意事项
由于活动价的担保模式都是需预付,导致因公现付或者因私订单,下单后会在5分钟内自动取消。所以建议因公现付客户或者因私订单不要使用活动价,而是使用企业协议价下单。
beginBookDateDate开始预订日期
endBookDateDate结束预订日期
bookUnitString提前预订单位
NONE 不限制
HOUR 按小时
DAY 按天
minBookUnitInt最小提前多久预订,如果bookUnit是小时就是从24点倒推
maxBookUnitInt最大提前多久预订
firstCheckInDateDate开始入住日期
lastCheckOutDateDate结束入住日期
checkInUnitString连续入住单位
NONE 不限制
HOUR 按小时
DAY 按天
minCheckInUnitInt最小连续入住
maxCheckInUnitInt最大连续入住
bookDescString预订说明

注:
仅支持当日预订
minBookUnit(最小提前预订):等于0
maxBookUnit(最大提前预订):等于0

CheckInDTO:
参数名参数类型备注
isOneSelfBool是否必须本人本卡
checkInDescString入住说明
CancelDTO:
参数名参数类型备注
isCanCancelBool是否可取消
lastCancelDayInt最晚取消天
"lastCancelDay": 0,表示当天
"lastCancelDay": 1,入住日前一天
"lastCancelDay": 2,入住日前两天
以此类推(在允许时间范围内可以支持免费取消)
lastCancelTimeString预付最晚取消时间,指当天时间
若是海外酒店则是当地时间,可根据酒店详情中时区timeZone字段换算。
cancelDescString取消说明
OtherDTO:
参数名参数类型备注
isPromotionCodeCanBookBool是否必须使用促销券码才能预订
isCanUseCouponBool是否支持优惠券
otherDesclastCancelTimeString其他说明
ActivityControl
参数名参数类型备注
activityIdcode活动ID
controlTypeControlType管控类型
BLACK 黑名单
WHITE 白名单

黑白名单不会同时返回
controlListList<String>管控列表 存储管控的卡号
RateCodeControl
参数名参数类型备注
controlTypeControlType管控类型
WHITE 白名单
controlListList<String>管控列表 存储管控的卡号
返回示例:
{
"code": "200",
"content":
[
{
"hotelId": "2000014",
"roomRateList":
[
{
"activityId": "373140002",
"bookInfo":
{
"beginBookDate": 1598371200000,
"bookDesc": "预订说明:担保方式:NONE,预订日期范围(开始日期:2020-08-26,结束日期:2021-07-31),提前预订单位:DAY,最小提前预订:0 (0表示无限制),最大提交预订:9999 (9999表示无限制),最早入住日期:2020-08-26,最晚离店日期:2021-07-31,连续入住单位:DAY,最小连续入住1 (0表示无限制),最大连续入住:9999 (9999表示无限制)",
"bookUnit": "DAY",
"checkInUnit": "DAY",
"endBookDate": 1627660800000,
"firstCheckInDate": 1598371200000,
"guaranteeMode": "NONE",
"lastCheckOutDate": 1627660800000,
"maxBookUnit": 9999,
"maxCheckInUnit": 9999,
"minBookUnit": 0,
"minCheckInUnit": 1
},
"cancelInfo":
{
"cancelDesc": "取消说明:是否可取消:否,最晚取消天:999最晚取消时间:23:00:00",
"isCanCancel": false,
"lastCancelDay": 999,
"lastCancelTime": "23:00:00"
},
"checkInInfo":
{
"checkInDesc": "入住说明:是否必须本人本卡:否",
"isOneSelf": false
},
"checkInTypeList":
[
"DAY"
],
"memberAndBreakFastList":
[
{
"breakfastCount": 0,
"companySrc": "HUAZHU",
"memberLevel": "D"
}
],
"memberLevels":
[
"D"
],
"otherInfo":
{
"isCanUseCoupon": false,
"isPromotionCodeCanBook": false,
"otherDesc": "其他说明:是否必须使用促销券码才能预订:否,是否支持优惠券:否,"
},
"activityControlInfo":{
"activityId":"373140002",
"controlType":"BLACK",
"controlList":[
"VCENTCRM0002221024","VCENTCRM0002221025"
]
},
"RateCodeControl":{
"controlType":"WHITE",
"controlList":[
"VCENTCRM0002221024","VCENTCRM0002221025"
]
},
"priceDailyList":
[
{
"afterTaxPrice": 3200,
"beforeTaxPrice": 3200,
"bizDate": 1625673600000,
"companyToGroupPrice": 3200,
"currencyCode": "CNY",
"isBlack": false,
"isForbidden": false,
"marketPrice": 4000,
"roomTypeId": "DR1"
},
{
"afterTaxPrice": 3200,
"beforeTaxPrice": 3200,
"bizDate": 1625760000000,
"companyToGroupPrice": 3200,
"currencyCode": "CNY",
"isBlack": false,
"isForbidden": false,
"marketPrice": 4000,
"roomTypeId": "DR1"
}
],
"rateCode": "P1D080HZU-373140002-D",
"rateCodeDescription": "支付后不可取消,预订说明:担保方式:NONE,预订日期范围(开始日期:2020-08-26,结束日期:2021-07-31),提前预订单位:DAY,最小提前预订:0 (0表示无限制),最大提交预订:9999 (9999表示无限制),最早入住日期:2020-08-26,最晚离店日期:2021-07-31,连续入住单位:DAY,最小连续入住1 (0表示无限制),最大连续入住:9999 (9999表示无限制)",
"rateCodeName": "支付后不可取消",
"roomCountDailyList":
[
{
"availableCount": 5,
"bizDate": 1625673600000,
"isBlack": false,
"isForbidden": false,
"retainCount": 0,
"roomTypeId": "DR1",
"shareCount": 5
},
{
"availableCount": 5,
"bizDate": 1625760000000,
"isBlack": false,
"isForbidden": false,
"retainCount": 0,
"roomTypeId": "DR1",
"shareCount": 5
}
],
"tagList":
[
"Standard"
]
}
]
}
],
"echoToken": "e49fa80e-6284-4fa3-a81b-e002d8f0ba89",
"message": "成功!"
}

获取卡等级信息

获取卡的等级信息,bookerids不传则获取cardid的信息,bookerids传了则只获取bookerids里面卡的信息

接口地址:/member/getCardInfo

请求方式:POST

请求参数说明
参数名参数类型备注是否必填示例值
cardIdString公司卡号VCENTCRM0002220001
cardPassWordString公司卡密码TestPassword
bookerIdsList<String>托管卡列表
请求示例
{
"cardId": "VCENTCRM0002220001",
"cardPassWord": " TestPassword",
"bookerIds": ["VCENTCRM0002220003","VCENTCRM0002220002"]
}
返回参数说明
参数名参数类型备注
codecode状态码
200 成功!
500 应用程序繁忙,请稍后再试!
messageString响应消息
contentList<CardInfo>卡信息

CardInfo

参数名参数类型备注
cardIdString卡号
memberLevelString卡等级
cardCompanyNameString卡名字
返回示例
{
"code": "200",
"content":
[
{
"cardId": "VCENTCRM0002220003",
"memberLevel":"K",
"cardCompanyName":"测试公司1"
},
{
"cardId": "VCENTCRM0002220004",
"memberLevel":"J",
"cardCompanyName":"测试公司2"
}
],
"echoToken": "e49fa80e-6284-4fa3-a81b-e002d8f0ba89",
"message": "成功!"
}

获取托管公司和酒店固定价关系

接口地址:/hotel/getCustomerRFP

请求方式:POST

请求参数说明
参数名参数类型备注是否必填示例值
cardIdString公司卡号VCENTCRM0002220001
cardPassWordString公司卡密码TestPassword
bookerIdsList<String>托管卡列表
hotelIdString酒店id
请求示例
{
"cardId": "VCENTCRM0002220001",
"cardPassWord": " TestPassword",
"bookerIds": ["VCENTCRM0002220003","VCENTCRM0002220002"],
"hotelId":"2000014"
}
返回参数说明
参数名参数类型备注
codecode状态码
200 成功!
500 应用程序繁忙,请稍后再试!
messageString响应消息
contentList<TutelageCustomerRFPDTO>签约关系

TutelageCustomerRFPDTO

参数名参数类型备注
bookerIdString托管卡id
hotelIdString酒店id
rateCodeString房价码
roomTypeString房型 多个房型用“逗号”分隔
rfpPriceDecimal房价码价格
ruleStartDateDate签约开始时间
ruleEndDateDate签约结束时间
disableDaysList<DisableDateDTO>禁用日期列表。没有禁用日期就返回null
DisableDateDTO
参数名参数类型备注
beginDateDate禁用开始时间
endDateDate禁用结束时间
disableDaysString时间段之内每周几禁用,1表示周1,7表示周日

返回示例

{
"code": "200",
"content":
[
{
"bookerId": "VCENTCRM0002220003",
"hotelId":"2000014",
"rateCode":"RFP-300-3-1",
"roomType":"DR1,SQ1",
"rfpPrice":"300",
"ruleStartDate":"2022-11-01",
"ruleEndDate":"2023-11-01"
}
],
"echoToken": "e49fa80e-6284-4fa3-a81b-e002d8f0ba89",
"message": "成功!"
}