多主体专用接口列表
“多主体”:一般指该公司的主体实体不止一家,可以是由两个或两个以上的公司或组织共同组成的,这些公司或组织彼此独立,但又通过某种合作关系或股权结构相互联系。这种形式的公司通常有一定的法律和财务关系,但经营活动和财务报表等方面可能会有所不同,在具体情况下,需要通过查看公司的注册信息、授权认证、股权结构等方面的信息。
注意事项:
1、由企业客户向华住商旅商务申请多主体应用功能使用,后续由华住商旅中台运营配置生效后才可使用。
2、目前仅支持API总对总客户,暂不支持TMC客户和API现付客户
下单(多主体客户适用)
注意:
所有使用华住商旅API接口对接的客户,均需要根据以下机制做程序补偿机制
- 调用华住商旅下单接口后,没有收到确定的返回结果(如500错误或系统网络超时等), 调用方需使用原下单请求号RequestNo进行重试下单接口(orderadd)或查询接口(queryByRequestNo), 查询建议,下单后的第3分钟后查询第一次,若返回500错误或系统网络超时等,建议第5分钟查询第二次,若再返回500错误或系统网络超时等,建议第10分钟查询第三次;
- 1)若查询到订单号:
- a、订单号bookStatus状态为P则代表未处理完成,需按照查询建议继续查询订单状态即可;
- b、订单号bookStatus状态为R则代表预订成功;
- c、订单号bookStatus状态为E则代表客户在前台已办理入住;
- d、订单号bookStatus状态为X则代表订单已取消。
- 2)如超过10分钟,仍未收到确定结果或者订单号bookStatus状态仍为P,可发到华住商旅企业对接群找华住相关人员确认订单情况,如未重试或未确认可能会产生差异订单,企业需要结算此笔费用。
- 总对总结算模式的下单请求,若返回"付款失败(code:3028,message:订单支付失败)", 需要重试下单接口(orderadd)或查询接口(queryByRequestNo)获取到已经生成的订单号, 查询建议,下单后的第3分钟后查询第一次,若返回500错误或系统网络超时等,建议第5分钟查询第二次,若再返回500错误或系统网络超时等,建议第10分钟查询第三次;
- 1)订单号中查看bookStatus状态
- a、订单号bookStatus状态为P则代表未处理完成,需按照查询建议继续查询订单状态即可;
- b、订单号bookStatus状态为R则代表预订成功;
- c、订单号bookStatus状态为E则代表客户在前台已办理入住;
- d、订单号bookStatus状态为X则代表订单已取消。(扣款失败会取消订单)。
- 2)如超过10分钟,订单号bookStatus状态仍为P,可发到华住商旅企业对接群找华住相关人员确认订单情况,如未重试或未确认可能会产生差异订单,企业需要结算此笔费用。
接口地址: order/add
请求方式:POST
请求参数说明:
| 参数名 | 参数类型 | 备注 | 是否必填 | 示例值 |
|---|---|---|---|---|
| cardId | String | 公司卡号 | 是 | VCENTCRM0002220001 |
| cardPassWord | String | 公司卡密码 | 是 | TestPassword |
| bookerId | String | 预订人公司卡ID | 是 | |
| isGroup | Bool | 是否总对总 false:现付订单 true:总对总订单,包括预付和信用 | 是 | true |
| guaranteeMode | String | 支持的担保模式 NONE:无 FIRST_NIGHT:首晚担保 FULL_AMOUNT:全额担保 1、到付和预付区别 a、guaranteeMode是NONE,则支持到店付或者预付 b、guaranteeMode是FIRST_NIGHT或者FULL_AMOUNT,则必须预付 2、担保模式使用 a、企业协议价按照企业卡的担保模式(运营开卡时确认的担保模式) b、活动价按照房价码担保模式,判断房量房价接口中的BookDTO中的guaranteeMode(担保模式)(房量房价接口中activityId不为空就是活动房价码;活动价下单时,验价及下单接口必须要传activityId,否则默认为会员价) 3、现付客户不能使用活动价注意事项 由于活动价的担保模式都是需预付,导致因公现付或者因私订单,下单后会在5分钟内自动取消。所以建议因公现付客户或者因私订单不要使用活动价,而是使用企业协议价下单。 | 是 | 1、到付和预付区别 a、guaranteeMode是NONE,则支持到店付或者预付 b、guaranteeMode是FIRST_NIGHT或者FULL_AMOUNT,则必须预付 2、担保模式使用 a、企业协议价按照企业卡的担保模式(运营开卡时确认的担保模式) b、活动价按照房价码担保模式,判断房量房价接口中的BookDTO中的guaranteeMode(担保模式)(房量房价接口中activityId不为空就是活动房价码;活动价下单时,验价及下单接口必须要传activityId,否则默认为会员价) 3、现付客户不能使用活动价注意事项 由于活动价的担保模式都是需预付,导致因公现付或者因私订单,下单后会在5分钟内自动取消。所以建议因公现付客户或者因私订单不要使用活动价,而是使用企业协议价下单。 |
| apiType | String | API 类型 INTERFACE:接口下单 DIRECT:直连H5下单 | 是 | INTERFACE |
| requestNo | String | 下单请求号 | 是 | |
| outerRefId | String | 关联号(OA Id) | 否 | |
| personInfoList | List< PersonInfoDTO> | 下单接口人员信息(包括预订人、联系人、入住人) | 否 | 预订人信息必传 |
| adults | Int | 一间房的入住人数,用于获取多人价(举例:一人价、两人价等); 入住人数:1-5,目前不支持大于5人(不涉及儿童数量,价格只根据成人数量计算,举例:两大一小,数量传2) | 是 | 不传值,默认是2 |
| childs | Int | 儿童数 | 否 | |
| travelLevel | String | 差旅档次和级别 | 否 | |
| travelType | String | 差旅类型 COMPANY:因公 PERSON:因私 (当企业总对总支付订单时,必传企业:COMPANY) | 否 | PERSON |
| hotelId | String | 酒店Id | 是 | 2000505 |
| roomTypeId | String | 房型 | 是 | DR |
| checkInType | String | 入住类型 DAY:天 HOUR:小时 | 是 | DAY |
| checkInDate | DateTime | 入住日期 | 是 | 2020/1/1 |
| checkOutDate | DateTime | 离店日期 | 是 | 2020/1/2 |
| arriveTime | DateTime | 抵达时间 | 否 | |
| roomCount | Int | 房间数量,>=1 | 是 | |
| remark | String | 客人备注 | 否 | |
| dailyPriceList | List<DailyPriceParameter> | 每日房价列表 | 是 | |
| rateCode | String | 房价码 | 是 | |
| activityId | String | 活动Id | 否 | 会员价非必填 活动价必填 |
| isNeed | Bool | 是否需要一次性用品,H5新加字段,接口上还未实现 | ||
| invoiceNo | String | 纳税人识别号 | 否 | 当是总对总订单并且有多组开票信息时,必传 |
| bookerPriceType | String | 预订价格类型 个人:PERSON 企业:COMPANY 当企业总对总支付订单时,必传企业:COMPANY | 否 | PERSON |
| customerDictionary | String | 企业对账单的扩展字段,需提前找运营在后台配置对应扩展字段; 外部客户调用接口时可传递对应的扩展字段,扩展字段将呈现在华住商旅后台下载的企业对账单中,方便用于对账使用等。 扩展字段如下: Department:员工部门 ; ApplicationRemark:申请单备注 ; EmpUniqueId:员工唯一标识 ; OrderType:订单类型 ; ApplicationCostCenter:申请单成本中心 ; ReqUniqueId:下单标识 ; Subsidiary:子公司 ; PayCompanyName:发薪公司 ; | 否 | 传值规则:{ "ReqUniqueId":"DS10001", "OrderType":"CREDIT", "Department":"CK" } OrderType枚举: (CREDIT:信用 ADVANCE:预付 OTHER:其他) |
PersonInfoDTO
| 参数名 | 参数类型 | 备注 | 是否必填 | 示例值 |
|---|---|---|---|---|
| ustomerType | String | 客户类型 | 是 | 预订人传1 ; 联系人传2 ; 入住人传3 |
| employeeNo | String | 员工编号 | 否 但预订人必传此字段; | |
| firstName | String | 国内酒店传值时,此字段表示“联系人姓名”或“联系人的名“ 海外酒店传值时,此字段表示“联系人的名” 海外酒店传值时,请传英文或者拼音 | 否 但预订人必传此字段; | |
| lastName | String | 联系人的姓(海外酒店必传) 海外酒店传值时,请传英文或者拼音; | 否 | |
| phoneNumber | String | 手机号 | 否 但预订人必传此字段; | |
| String | 邮箱 | 否, 但非中国内地酒店(包含港澳台酒店)此字段为必填; | ||
| roomNo | String | 同一个值则表示为同一房间入住人; | 否, 但入住人必传此字段; | |
| multiBodyCode | String | 企业主体code, 若企业主体扩展code为空,则订单中记录此code值; 此企业主体code信息是由客户侧提交申请配置给到华住商旅商务,再由华住商旅中台配置完成生效后才可使用。 | 否 但预订人必传此字段; | |
| multiBodyAssignCode | String | 企业主体扩展code, 若此字段有值则订单中优先使用此code; 此企业主体code信息是由客户侧提交申请配置给到华住商旅商务,再由华住商旅中台配置完成生效后才可使用。 | 否 |
DailyPriceParameter:
| 参数名 | 参数类型 | 备注 | 是否必填 | 示例值 |
|---|---|---|---|---|
| bizDate | DateTime | 营业日 | 是 | |
| afterTaxPrice | Decimal | 房价(税后价) | 是 | |
| afterTaxCNYPrice | Decimal | 人民币房价(税后价) | 非中国内地酒店(包含港澳台酒店)总对总下单必填 | |
| couponNo | String | 优惠券码 | 否 |
请求参数示例:
{
"cardId": "VCENTCRM0002224829",
"cardPassWord": "123321a",
"bookerId": "string",
"isGroup": true,
"guaranteeMode": "NONE",
"apiType": "INTERFACE",
"requestNo": "string",
"outerRefId": "string",
"personInfoList": [
{
"ustomerType": "1",
"employeeNo": "num001",
"firstName": "三",
"lastName": "张",
"phoneNumber": "187827651342",
"email": "zhangsan@xx.com",
"multiBodyCode": "company001",
"multiBodyAssignCode": "company002"
},
{
"ustomerType": "2",
"employeeNo": "num002",
"firstName": "四",
"lastName": "张",
"phoneNumber": "187827651341",
"email": "zhangsi@xx.com"
},
{
"ustomerType": "3",
"employeeNo": "num003",
"firstName": "五",
"lastName": "张",
"phoneNumber": "187827651340",
"email": "zhangwu@xx.com",
"roomNo": "1"
},
{
"ustomerType": "3",
"employeeNo": "num004",
"firstName": "六",
"lastName": "张",
"phoneNumber": "187827651346",
"email": "zhangliu@xx.com",
"roomNo": "1"
}
],
"adults": 0,
"childs": 0,
"travelLevel": "string",
"travelType": "COMPANY",
"hotelId": "string",
"roomTypeId": "string",
"checkInType": "DAY",
"checkInDate": "2020-01-01",
"checkOutDate": "2020-01-02",
"arriveTime": "2020-01-02 14:00:00",
"roomCount": 0,
"remark": "string",
"dailyPriceList": [
{
"bizDate": "2020-01-01",
"afterTaxPrice": 0
}
],
"rateCode": "string",
"activityId": "string",
"invoiceNo": "string"
}
返回参数说明
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| code | code | 状态码 200 成功! 500 应用程序繁忙,请稍后再试! 521 企业V卡号或者验证码错误! |
| message | String | 响应消息 |
| content | OrderInfo | OrderInfo |
OrderInfo:
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| orderId | code | 华住订单号 |
| bookStatus | String | 订单预订状态 P:处理中(中间态) R:预订成功 E:完成 X:取消 |
返回参数示例
{
"code": "200",
"message": "string",
"content": {
"bookStatus": "string",
"orderId": "string"
}
}
企业多主体查询接口
功能描述:查询企业多主体信息
接口地址:/multiBody/queryPage
请求方式:POST
请求参数说明:
| 参数名 | 参数类型 | 备注 | 是否必填 | 示例值 |
|---|---|---|---|---|
| cardId | String | 公司卡号 | 是 | VCENTCRM0002220001 |
| cardPassWord | String | 公司卡密码 | 是 | TestPassword |
| pageIndex | Integer | 分页起始页 | 是 | |
| pageCount | Integer | 分页大小 最大限制20 | 是 | |
| multiBodyCode | String | 多主体编码 | 否 | |
| multiBodyName | String | 多主体名称 | 否 | |
| bodyStatus | String | 多主体状态 主体状态: 0:正常 1:异常-发票未配置 2:异常-禁止下单 3:异常-停用 | 否 | |
| invoiceNo | String | 发票号 | 否 | |
| invoiceName | String | 发票抬头 | 否 |
请求参数示例:
{
"cardId": "VCENTCRM0002224829",
"cardPassWord": "123321a",
"pageIndex": 1,
"pageCount": 20,
"multiBodyCode": "company001",
"multiBodyName": "张江店",
"bodyStatus": "0",
"invoiceNo": "",
"invoiceName": ""
}
返回参数说明
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| code | code | 状态码 200 成功! 500 应用程序繁忙,请稍后再试! 521 企业V卡号或者验证码错误! |
| message | String | 响应消息 |
| content | PagingResult< CompanyMultiBodyDTO> | 多主体分页数据 |
PagingResult:
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| pageIndex | Integer | 当前页 |
| pageCount | Integer | 页行数 |
| totalPages | Integer | 总页数 |
| totalRows | Integer | 总行数 |
| rows | List< CompanyMultiBodyDTO> | 多主体信息 |
CompanyMultiBodyDTO:
| 参数名 | 参数类型 | 备注 |
|---|---|---|
| cardMultiBodyStatus | String | 主体数量: 0未开启 1单主体 1以上多主体 |
| companyBodyCode | String | 企业主体code |
| companyBodyName | String | 企业主体名称 |
| invoiceName | String | 发票抬头 |
| invoiceNo | String | 发票税号 |
| invoiceType | String | 发票类型: P普票 V专票 |
| registerAddress | String | 企业地址 |
| registerTelephone | String | 企业电话 |
| bankDeposit | String | 开户银行 |
| bankCardNo | String | 开户行账号 |
| hasEnabled | String | 是否启用: 1(启用) 0(禁用) |
| isDefaultBody | String | 是否默认主体: 1(是) 0(否) |
| isSupportOrder | String | 是否支持下单: 1(是) 0(否) |
| bodyStatus | String | 主体状态: 0:正常 1:异常-发票未配置 2:异常-禁止下单 3:异常-停用 |
| bodyStatusDesc | String | 主体状态描述 |
返回参数示例
{
"code": "200",
"message": "string",
"content": {
"pageIndex": 1,
"pageCount": 20,
"totalPages": 3,
"totalRows": 60,
"rows": [
{
"cardMultiBodyStatus": "3",
"companyBodyCode": "compnay001",
"companyBodyName": "企业主体名称",
"invoiceName": "XXX企业",
"invoiceNo": "xxxxxxx",
"invoiceType": "P",
"registerAddress": "xx市xx路",
"registerTelephone": "135xxxx9824",
"bankDeposit": "工商银行",
"bankCardNo": "321829374324321",
"hasEnabled": 1,
"isDefaultBody": 1,
"isSupportOrder": 1,
"bodyStatus": 0,
"bodyStatusDesc": "这是一个描述"
}
]
}
}