订单相关接口
预订单状态变更推送(回调接口)
说明:
B2B渠道订单状态发生变化后,实时推送订单状态。回调接口响应时长不能超过1秒。如果逻辑处理耗时较多,建议异步处理。随着接口升级有可能会增加字段,请注意兼容
对接预订单状态变更推送服务,企业需提供通知接口,通知接口标准参数定义见下:
- 请求方式:POST
HttpHeaders增加参数验证:
time:取系统当前时间,格式:yyyy-MM-dd HH:mm:ss
sign:客户的Secret + time,MD5加密
客户接收数据时,自行验签:拿到请求头中的time和自己公司的Secret,MD5加密,生成sign1,比较sign和sign1
sign1 = MD5Utils.encodeMD5(String.format("%s%s", 客户的Secret, time));
注:接口仅用于接收数据,不要做任何逻辑处理,另写一个服务去处理数据,响应时长不能超过3s,随着接口升级有可能会增加字段,需要兼容
sign1 = MD5Utils.encodeMD5(String.format("%s%s", 客户的Secret, time));
- 入参说明:
参数名 | 参数类型 | 备注 |
---|---|---|
orderId | String | 订单号 |
hotelId | String | 酒店ID |
businessType | String | 业务模式 CASH:现付,例如:到门店付 COMPANY_ADVANCE:企业预付,例如:支付宝立即扣、中航结立即扣 CREDIT:信用,例如:担保金月结,担保金离店T+N扣款 |
outerRefId | String | OA关联号 |
bookStatus | String | 订单状态 P:处理中(中间态) R:预订成功 E:完成 X:取消 |
pmsAdapterOrderStatus | String | 实际订单状态 R:预订成功 I:入住 O:离店 N:NoShow E:完成 X:取消 |
cardId | String | 卡号 |
bookerId | String | 预订卡号(如果是tmc客户就是托管卡) |
- 出参说明:
参数名 | 参数类型 | 备注 |
---|---|---|
code | String | 响应码 200 成功,其他为失败 |
message | String | 响应消息 |
{
"pmsAdapterOrderStatus": "X",
"bookStatus": "X",
"bookerId": "VCENTCRM1016431303",
"businessType": "CREDIT",
"cardId": "VCENTCRM1016431303",
"hotelId": "2000014",
"orderId": "R2000014071677475021",
"outerRefId": "0000000"
}
注:若通知接口返回code不是200,B2B会重复推送,重复推送最多10次。
预订单信息推送企业(回调接口)
注意:
- 如果华住推送的订单在客户自有系统中不存在,建议在客户系统中补录订单或发起取消,以免造成差异。有问题请及时联系华住相关人员配合处理。
说明:
B2B渠道客户预订成功后,实时推送预订单信息。回调接口响应时长不能超过1秒。如果逻辑处理耗时较多,建议异步处理。随着接口升级有可能会增加字段,请注意兼容
对接预订单信息,企业需提供通知接口,通知接口标准参数定义见下:
请求方式:POST
HttpHeaders增加参数验证:
time:取系统当前时间,格式:yyyy-MM-dd HH:mm:ss
sign:客户的Secret + time,MD5加密
客户接收数据时,自行验签:拿到请求头中的time和自己公司的Secret,MD5加密,生成sign1,比较sign和sign1
sign1 = MD5Utils.encodeMD5(String.format("%s%s", 客户的Secret, time));
注:接口仅用于接收数据,不要做任何逻辑处理,另写一个服务去处理数据,响应时长不能超过3s,随着接口升级有可能会增加字段,需要兼容
请求参数说明:
参数名 | 参数类型 | 备注 |
---|---|---|
orderId | String | 订单号 |
hotelId | String | 酒店ID |
businessType | String | 业务模式 1:现付,例如:到门店付 2:企业预付,例如:支付宝立即扣、中航结立即扣 4:信用,例如:担保金月结,担保金离店T+N扣款 |
outerRefId | String | OA关联号 |
bookStatus | String | 订单状态 P:处理中(中间态) R:预订成功 E:完成 X:取消 |
pmsOrderAdapterStatus | String | 实际订单状态 R:预订成功 I:入住 O:离店 N:NoShow E:完成 X:取消 |
cardId | String | 卡号 |
bookerId | String | 预订卡号 |
orgName | String | 酒店名称 |
orgCityId | String | 城市ID |
orgCityName | String | 城市名称 |
orgAddress | String | 酒店地址 |
roomTypeIdName | String | 房型名称 |
checkInDate | Date | 入住日期 格式:时间戳 |
checkOutDate | Date | 离店日期 格式:时间戳 |
bookerPriceType | String | 预订价格类型:0 个人,1 企业 |
roomCount | Integer | 房间数 |
bookerPersonId | String | 预订人员工编号 |
totalPrice | BigDecimal | 预订单价格(整单) |
isInternational | Integer | 国内国际类型: 0 国内,1 国际 |
travelType | String | 出行方式:因公 COMPANY,因私 PERSON |
createTime | Date | 创建时间 格式:时间戳 |
personPayDate | Date | 支付时间 格式:时间戳 |
costCenter | List<String> | 成本中心 |
linkName | String | 联系人姓名 |
linkMobile | String | 联系人手机号 |
linkPersonId | String | 联系人员工编号 |
dailyPriceLists | List<DailyPriceDTO> | 每日房价信息 |
DailyPriceDTO:
参数名 | 参数类型 | 备注 |
---|---|---|
roomTypeId | String | 房型 |
bizDate | String | 营业日 格式:时间戳 |
currencyCode | Date | 币种 |
marketPrice | BigDecimal | 门市价 |
marketCnyPrice | BigDecimal | 人民币门市价(含税价) |
beforeTaxPrice | BigDecimal | 税前价(净价) |
beforeTaxCnyPrice | BigDecimal | 人民币税前价(净价) |
afterTaxPrice | BigDecimal | 税后价(含税价) |
afterTaxCnyPrice | BigDecimal | 人民币税后价(含税价) |
companyToGroupPrice | BigDecimal | 公司总对总价(含税价+税点差价) |
companyToGroupCnyPrice | BigDecimal | 人民币公司总对总价(含税价+税点差价) |
请求示例:
{
"bookStatus": "X",
"bookerId": "VCENTCRM1032595964",
"bookerPriceType": "1",
"businessType": 4,
"cardId": "VCENTCRM1032595964",
"checkInDate": 1716307200000,
"checkOutDate": 1716393600000,
"createTime": 1716375653000,
"dailyPriceLists": [
{
"afterTaxCnyPrice": 1838.44,
"afterTaxPrice": 234.00,
"beforeTaxCnyPrice": 1718.16,
"beforeTaxPrice": 218.69,
"bizDate": 1716307200000,
"companyToGroupCnyPrice": 1961.98,
"companyToGroupPrice": 249.72,
"currencyCode": "EUR",
"marketCnyPrice": 1838.44,
"marketPrice": 234.00
}
],
"hotelId": "9007366",
"isInternational": 1,
"linkMobile": "18357319905",
"linkName": "keqi Zhao",
"costCenter": [
"张三",
"李四"
],
"orderId": "900736600401551",
"orgCityId": "BER",
"orgCityName": "柏林",
"orgName": "3.0交叉销售测试酒店",
"outerRefId": "370244477",
"roomCount": 1,
"roomTypeIdName": "SU1",
"totalPrice": 1838.44,
"travelType": "COMPANY"
}
返回参数说明:
参数名 | 参数类型 | 备注 |
---|---|---|
code | String | 响应码 200 成功,其他为失败 |
message | String | 响应消息 |
注:若通知接口返回code不是200,B2B会重复推送,重复推送最多10次
企业接待单推送(回调接口)
- 说明:
B2B渠道订单退房后,预订单离店日+1天推送信接待单息。回调接口响应时长不能超过1秒。如果逻辑处理耗时较多,建议异步处理。随着接口升级有可能会增加字段,请注意兼容
对接订单接待信息推送服务,企业需提供通知接口,通知接口标准参数定义见下:
- 请求方式:POST
HttpHeaders增加参数验证:
time:取系统当前时间,格式:yyyy-MM-dd HH:mm:ss
sign:客户的Secret + time,MD5加密
客户接收数据时,自行验签:拿到请求头中的time和自己公司的Secret,MD5加密,生成sign1,比较sign和sign1
sign1 = MD5Utils.encodeMD5(String.format("%s%s", 客户的Secret, time));
注:接口仅用于接收数据,不要做任何逻辑处理,另写一个服务去处理数据,响应时长不能超过3s,随着接口升级有可能会增加字段,需要兼容
sign1 = MD5Utils.encodeMD5(String.format("%s%s", 客户的Secret, time));
- 入参说明:
参数名 | 参数类型 | 备注 |
---|---|---|
bookRoomId | long | 主键(按订单一个房间1条) |
outerRefId | string | 第三方订单号 |
employeeId | String | 预订人员工编号 |
linkEmployeeId | String | 联系人员工编号(暂只针对部分客户开放) |
linkName | String | 联系人姓名 |
companyName | string | 公司名称 |
cardId | string | 公司卡 |
guaranteeMode | string | 支持的担保模式 NONE:无 FIRST_NIGHT:首晚担保 FULL_AMOUNT:全额担保 1、到付和预付区别 a、guaranteeMode是NONE,则支持到店付或者预付 b、guaranteeMode是FIRST_NIGHT或者FULL_AMOUNT,则必须预付 2、担保模式使用 a、企业协议价按照企业卡的担保模式(运营开卡时确认的担保模式) b、活动价按照房价码担保模式(注:活动价下单时,验价及下单接口必须要传 activityId,否则会视为会员价),判断BookDTO中的guaranteeMode(担保模式)(房量房价接口中activityId不为空就是活动房价码) 3、现付客户不能使用活动价注意事项 由于活动价的担保模式都是需预付,导致因公现付或者因私订单,下单后会在5分钟内自动取消。所以建议因公现付客户或者因私订单不要使用活动价,而是使用企业协议价下单。 |
brandName | string | 品牌名称 |
cityName | string | 城市名称 |
hotelId | string | 酒店ID |
hotelName | string | 酒店名称 |
orderId | string | 订单ID |
checkInDate | Date | 入住日期 格式:yyyy-MM-dd |
checkOutDate | Date | 离店日期 格式:yyyy-MM-dd |
roomCount | int | 房间数 |
days | int | 间夜数(暂不推送) |
bookStatus | string | 订单状态 P:处理中(中间态) R:预订成功 E:完成 X:取消 |
totalPrice | decimal | 预订单价格(整单) |
checkInName | string | 入住人姓名 |
roomTypeId | string | 房型 |
realCheckInDate | date | 实际入住日期 格式:yyyy-MM-dd HH:mm:ss |
realCheckOutDate | date | 实际离店日期 格式:yyyy-MM-dd HH:mm:ss |
realCheckInAmount | decimal | 当前房间的不含税点差的房费(房间) |
realCheckInStatus | string | 实际入住状态 R:预订成功 X:取消 I:入住 O:离店 N:NoShow S:临时挂账 |
realCheckInStatusName | string | 入住状态说明 |
taxpayerType | string | 纳税人性质 NONE:无,未知 GENERAL:一般纳税人 COMMON:小规模纳税人 |
invoiceType | string | 发票性质 SPECIAL:专票 GENERAL:普票 |
taxDiffAmount | decimal | 税点差额(整单) |
settleShiftTaxDiffAmount | decimal | 结算金额不含税点差额(整单) |
settleContainTaxDiffAmount | decimal | 结算金额含税点差额(整单) |
remark | string | 备注 |
{
"bookRoomId": 673067597935149056,
"bookStatus": "R",
"brandId": "0002",
"brandName": "汉庭",
"cardId": "VCENTCRM1016431303",
"checkInDate": "2024-12-16",
"checkOutDate": "2024-12-18",
"cityId": "310100",
"cityName": "上海",
"companyConfirmStatus": "PENDING",
"companyName": "海康",
"confirmAmount": 0.00,
"employeeId": "hz00231",
"guaranteeMode": "NONE",
"hotelId": "2000014",
"hotelName": "汉庭上海人民广场酒店",
"invoiceType": "SPECIAL",
"isConfirm": false,
"linkEmployeeId": "hz00231",
"linkName": "张三",
"orderId": "R2000014071000733001",
"outerRefId": "0000000",
"realCheckInAdapterStatus": "O",
"realCheckInAmount": 247.00,
"realCheckInDate": "2024-12-16 18:20:32",
"realCheckInStatus": "O",
"realCheckOutDate": "2024-12-18 10:20:11",
"refundAmount": 0.00,
"roomCount": 1,
"roomTypeId": "DRX1",
"roomTypeName": "大床房A",
"settleContainTaxDiffAmount": 247.00,
"settleShiftTaxDiffAmount": 247.00,
"taxDiffAmount": 0.00,
"taxpayerType": "GENERAL",
"totalPrice": 247.00
}
- 出参说明:
参数名 | 参数类型 | 备注 |
---|---|---|
code | String | 响应码 200 成功,其他为失败 |
message | String | 响应消息 |
注:若通知接口返回code不是200,B2B会重复推送,重复推送最多10次
个人接待信息推送企业(回调接口)
注意:
- 如果华住推送的订单在客户自有系统中不存在,建议在客户系统中补录订单或发起取消,以免造成差异。有问题请及时联系华住相关人员配合处理。
说明:
B2B渠道订单退房后,预订单离店日+1天推送接待单信息。回调接口响应时长不能超过1秒。如果逻辑处理耗时较多,建议异步处理。随着接口升级有可能会增加字段,请注意兼容
对接订单接待信息推送服务,企业需提供通知接口,通知接口标准参数定义见下:
请求方式:POST
HttpHeaders增加参数验证:
time:取系统当前时间,格式:yyyy-MM-dd HH:mm:ss
注:接口仅用于接收数据,不要做任何逻辑处理,另写一个服务去处理数据,响应时长不能超过3s,随着接口升级有可能会增加字段,需要兼容
请求参数说明:
参数名 | 参数类型 | 备注 |
---|---|---|
bookRoomId | Long | 主键(按订单一个房间1条) |
orderMonth | Date | 账期 |
cardId | String | 企业卡号(ID) |
bookerId | String | 预订公司卡(ID) |
orderId | String | 预订订单号 |
guaranteeMode | String | 支持的担保模式 NONE:无 FIRST_NIGHT:首晚担保 FULL_AMOUNT:全额担保 1、到付和预付区别 a、guaranteeMode是NONE,则支持到店付或者预付 b、guaranteeMode是FIRST_NIGHT或者FULL_AMOUNT,则必须预付 2、担保模式使用 a、企业协议价按照企业卡的担保模式(运营开卡时确认的担保模式) b、活动价按照房价码担保模式(注:活动价下单时,验价及下单接口必须要传 activityId,否则会视为会员价),判断BookDTO中的guaranteeMode(担保模式)(房量房价接口中activityId不为空就是活动房价码) 3、现付客户不能使用活动价注意事项 由于活动价的担保模式都是需预付,导致因公现付或者因私订单,下单后会在5分钟内自动取消。所以建议因公现付客户或者因私订单不要使用活动价,而是使用企业协议价下单。 |
brandId | String | 品牌ID |
brandName | String | 品牌名称 |
hotelId | String | 酒店ID |
hotelName | String | 酒店名称 |
checkInDate | Date | 预订单入住日期 格式:时间戳 |
checkOutDate | Date | 预订单离店日期 格式:时间戳 |
roomCount | Int | 房间数 |
night | Int | 订单间夜 |
bookStatus | String | 预订单状态 P:处理中(中间态) R:预订成功 E:完成 X:取消 |
totalPrice | Decimal | 预订单价格(整单) |
linkName | String | 联系人姓名 |
linkEmployeeId | String | 联系人员工编号 |
roomTypeId | String | 房型 |
taxpayerType | String | 纳税人性质 NONE:无,未知 GENERAL:一般纳税人 |
employeeId | String | 预订人员工编号 |
outerRefId | String | 外部关联ID |
realCheckInDate | Date | 实际入住时间 格式:时间戳 |
realCheckOutDate | Date | 实际离店时间 格式:时间戳 |
realCheckInAmount | Decimal | 当前房间的不含税点差的房费(房间) |
realCheckInTotalAmount | Decimal | 当前房间的不含税点差的房费(整单) |
invoiceType | String | 发票性质 SPECIAL:专票 GENERAL:普票 |
remark | String | 备注 |
请求示例:
{
"bookRoomId": 673067597935149056,
"orderMonth": "2024-06-01",
"cardId": "VCENTCRM1016431303",
"bookerId": "VCENTCRM1016431303",
"orderId": "R2000014071000733001",
"guaranteeMode": "NONE",
"brandId": "0002",
"brandName": "汉庭",
"hotelId": "2000014",
"hotelName": "汉庭上海人民广场酒店",
"checkInDate": 1638201600000,
"checkOutDate": 1638288000000,
"roomCount": 1,
"night": 1,
"employeeId": "hz00231",
"bookStatus": "R",
"totalPrice": 247.00,
"linkEmployeeId": "hz00231",
"linkName": "张三",
"roomTypeId": "DRX1",
"taxpayerType": "GENERAL",
"outerRefId": "TXC0001",
"realCheckInDate": 1638268465000,
"realCheckOutDate": 1638268572000,
"realCheckInAmount": 247.00,
"realCheckInTotalAmount": 247.00,
"invoiceType": "SPECIAL",
"remark": "SPECIAL"
}
返回参数说明:
参数名 | 参数类型 | 备注 |
---|---|---|
code | String | 响应码 200 成功,其他为失败 |
message | String | 响应消息 |
注:若通知接口返回code不是200,B2B会重复推送,重复推送最多10次。
企业查询账单信息
测试接口地址:https://test-hb2b.huazhu.com/bill/searchBillListByCompany
生产接口地址:https://hb2b.huazhu.com/bill/searchBillListByCompany
请求方式:POST
请求参数说明:
参数名 | 参数类型 | 备注 | 是否必填 | 示例值 |
---|---|---|---|---|
cardId | String | 公司卡号 | 是 | VCENTCRM1016431348 |
cardPassWord | String | 公司卡授权码 | 是 | 123321a |
orderMonth | Date | 结算月份 | 是 | 2020-05-01 |
pageIndex | Int | 当前页 | 是 | 1 |
pageCount | Int | 每页数量 | 是 | 10 |
请求示例:
{
"orderMonth": "2020-05-01",
"cardId": "VCENTCRM1016431348",
"cardPassWord": "123321a",
"pageIndex": 1,
"pageCount": 10
}
返回参数说明:
参数名 | 参数类型 | 备注 |
---|---|---|
code | code | 状态码 200 成功! 500 应用程序繁忙,请稍后再试! 521 企业V卡号或者验证码错误! |
message | String | 响应消息 |
content | SearchAccountStatementResponse | 账单信息 |
SearchAccountStatementResponse:
参数名 | 参数类型 | 备注 |
---|---|---|
pageIndex | Int | 当前页 |
pageCount | Int | 每页数量 |
totalPages | Int | 总页数 |
totalRows | Int | 总页数 |
rows | List<BillInfo> | 总页数 |
BillInfo:
参数名 | 参数类型 | 备注 |
---|---|---|
outerRefId | String | OA号 |
cardId | String | 企业卡号(ID) |
companyName | String | 企业名称 |
guaranteeMode | String | 支持的担保模式 NONE:无 FIRST_NIGHT:首晚担保 FULL_AMOUNT:全额担保 1、到付和预付区别 a、guaranteeMode是NONE,则支持到店付或者预付 b、guaranteeMode是FIRST_NIGHT或者FULL_AMOUNT,则必须预付 2、担保模式使用 a、企业协议价按照企业卡的担保模式(运营开卡时确认的担保模式) b、活动价按照房价码担保模式(注:活动价下单时,验价及下单接口必须要传 activityId,否则会视为会员价),判断BookDTO中的guaranteeMode(担保模式)(房量房价接口中activityId不为空就是活动房价码) 3、现付客户不能使用活动价注意事项 由于活动价的担保模式都是需预付,导致因公现付或者因私订单,下单后会在5分钟内自动取消。所以建议因公现付客户或者因私订单不要使用活动价,而是使用企业协议价下单。 |
brandName | String | 品牌名称 |
cityName | String | 城市名称 |
hotelId | String | 酒店ID |
hotelName | String | 酒店名称 |
orderId | String | 预订订单号 |
checkInDate | Date | 预订单入住日期 格式:yyyy-MM-dd HH:mm:ss |
checkOutDate | Date | 预订单离店日期 格式:yyyy-MM-dd HH:mm:ss |
days | Int | 天数 |
bookStatus | String | 预订单状态 P:处理中(中间态) R:预订成功 E:完成 X:取消 |
totalPrice | Decimal | 预订单价格(整单) |
taxpayerType | String | 门店类型 |
invoiceType | String | 发票类型 |
taxDiffAmount | Decimal | 税点差额(整单) |
settleShiftTaxDiffAmount | Decimal | 结算金额不含税点差额(整单) |
settleContainTaxDiffAmount | Decimal | 结算金额含税点差额(整单) |
realCheckInStatus | String | 实际入住状态 R:预订成功 X:取消 I:入住 O:离店 N:NoShow S:临时挂账 |
checkInName | String | 入住人 |
realCheckInDate | Date | 实际入住时间 格式:yyyy-MM-dd HH:mm:ss |
realCheckOutDate | Date | 实际离店时间 格式:yyyy-MM-dd HH:mm:ss |
realCheckInAmount | Decimal | 当前房间的不含税点差的房费(房间) |
isConfirm | Bool | 是否已确认 |
confirmAmount | Decimal | 确认金额 |
remark | String | 备注 |
返回示例:
{
"code": "200",
"message": "成功!",
"content": {
"pageIndex": 1,
"pageCount": 100,
"totalPages": 1,
"totalRows": 4,
"rows": [
{
"outerRefId": "HD2000014019242948001",
"cardId": "VCENTCRM1016431348",
"companyName": "测试公司",
"guaranteeMode": "FIRST_NIGHT",
"brandName": "汉庭",
"cityName": null,
"hotelId": "2000014",
"hotelName": "汉庭上海人民广场酒店",
"orderId": "R2000014019242948001",
"checkInDate": "2020-04-10 00:00:00",
"checkOutDate": "2020-04-12 00:00:00",
"days": null,
"bookStatus": "RESERVE",
"totalPrice": 662.0,
"taxpayerType": "GENERAL",
"invoiceType": "SPECIAL",
"taxDiffAmount": 0.0,
"settleShiftTaxDiffAmount": 662.0,
"settleContainTaxDiffAmount": 662.0,
"realCheckInStatus": "N",
"checkInName": "总对总测试数据",
"realCheckInDate": "2020-04-10 18:00:00",
"realCheckOutDate": "2020-04-12 10:00:00",
"realCheckInAmount": 662.0,
"isConfirm": false,
"confirmAmount": 0.0,
"remark": null
}
]
}
}