ca- 文档管理信息表
主题: | 京东国际酒店标准接口接入开发指南 |
---|---|
文档版本: | V1.0 |
内容: | 京东国际酒店OpenApi技术接入说明文档 |
提交时间: | 2018-12-25 |
创建人: | 曹进保 |
- 文档修改记录表
修改人 | 版本号 | 修改时间 | 修改内容 | 修改原因 |
---|---|---|---|---|
国际酒店预发环境测试地址:https://m-ihotel-yf.jd.com
一.接口公共协议
采用HTTP协议通信。输入和输出参数都采用UTF-8编码。发送的请求体数据部分(即data参数)需要进行URLEncode处理。
1.1 京东侧接口
接口域名:
测试环境:https://test.jd.com
生产环境:https://xxx.jd.com
下述公共参数和公共返回结果规范主要是针对供应商请求京东的接口,对于京东请求供应商的接口则不需要参照。上线前需要加入调用方IP到京东白名单,测试环境不需要。
1.1.1公共请求参数
名称 | 类型 | 说明 |
---|---|---|
appId | String | 供应商应用id,由京东酒店提供 |
1.1.2公共响应参数
名称 | 类型 | 说明 |
---|---|---|
code | String | 返回状态码 |
msg | String | 结果描述 |
data | String | 各接口具体需要返回业务数据,json格式 |
返回值示例:
{
"code": 200,
"msg": "成功",
"data": {
"hotelCode": 1110,
"roomCode": "001"
}
}
1.2 供应商侧接口
供应商接口域名:
测试环境:https://xxx.xxx.com
生产环境:https://xxx.xxx.com
下述公共参数和公共返回结果规范主要是针对京东请求供应商接口,保证通信过程中数据安全及调用身份安全需增加安全方法校验。
1.2.1公共请求参数
名称 | 类型 | 说明 |
---|---|---|
accountId | String | 供应商定义,上线前需明确此字段 |
timeStamp | String | 时间戳 |
sign | String | 加密的串生成方法:getMD5(参数+timestamp+accountId)参数说明:request.getQueryString(),获取url上的参数IOUtils.toString(request.getInputStream(),"UTF-8"),数据流获取参数request.getHeader("timeStamp"),从请求头上获取时间戳 参考 附录四 4.4节 |
调用示例:
Request Header {
accountId : JD0309650572,
sign:MD5串,
timeStamp:1536129978000
}
加密规则:
1. String signText = request.getQueryString()+ IOUtils.toString(request.getInputStream(),"UTF-8") + request.getHeader("timeStamp")+ secretKey(申请获取)
2. String sign = getMD5(signText,"UTF-8");
3. if(sign.equals(request.getHeader("sign"))) //验证通过
示例:下单 (POST):signText = "method=hotel.occupy" + "data={下单入参JSON}"+ request.getHeader("timeStamp") + secretKey;
取消单(GET):signText = "method=hotel.cancelOccupy&data={取消入参JSON}"+ request.getHeader("timeStamp") + secretKey;
1.2.2公共响应参数
名称 | 类型 | 说明 |
---|---|---|
code | String | 返回状态码 |
msg | String | 结果描述 |
data | String | 各接口具体需要返回业务数据,json格式 |
返回值示例: |
{
"code": 200,
"msg": "成功",
"data": {
}
}
二.接口列表说明
本文档主要涉及酒店静态接口与动态接口共9个接口。
2.1静态接口
接口名称 | 接口描述 |
---|---|
城市信息 | 获取供应商的城市静态信息 |
酒店信息 | 获取供应商的酒店静态信息 |
酒店增量信息 | 供应商推送更新的酒店静态信息 |
房型信息API | 获取酒店的房型静态信息 |
房型增量信息 | 供应商推送更新的酒店房型静态信息 |
2.2动态接口
接口名称 | 接口描述 |
---|---|
价格 | 用于获取供应商实时报价 |
下单 | 用于用户预订酒店时,使用此API去供应商处下单 |
订单查询 | 用户同步供应商订单信息 |
订单取消 | 用于取消预订时,使用此接口向供应商发起取消 |
2.3调用流程
三.接口定义
3.1城市信息API
3.1.1方法名称
geo.city.list
3.1.2 HTTP方法
GET
3.1.3接口描述
通过此API获取供应商城市静态信息。
3.1.4输入参数
3.1.5输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
country | 国家 | Array | Y | 关联 国家信息 |
国家信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
countryCode | 国家编码 | String | Y | |
countryNameCN | 中文 | String | N | |
countryNameEN | 英文 | String | N | |
province | 省份 | Array | Y | 关联 省份信息 |
省份信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
provinceCode | 省份编码 | String | Y | |
provinceNameCN | 中文 | String | N | |
provinceNameEN | 英文 | String | N | |
city | 城市 | Array | Y | 关联 城市信息 |
城市信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
cityCode | 城市编码 | String | Y | |
cityNameCN | 中文 | String | N | |
cityNameEN | 英文 | String | N |
3.1.6输入示例
https://{host}/rest?method=geo.city.list&data=
3.1.7输出示例
{
"code": 200,
"msg": "成功",
"data": [
{
"countryCode": "0086",
"countryNameCN": "中国",
"countryNameEN": "china",
"province": [
{
"provinceCode": "9",
"provinceNameCN": "北京市",
"provinceNameEN": "Beijing District",
"city": [
{
"cityCode": "901",
"cityNameCN": "大兴区",
"cityNameEN": "Daxing District"
}
]
}
]
}
]
}
3.2酒店信息API
3.2.1方法名称
geo.hotel.list
3.2.2 HTTP方法
GET
3.2.3接口描述
通过此API获取供应商酒店静态信息(归属城市、名称、地址、坐标、电话等),京东定期调用该API从供应商处获取更新信息。
3.2.4输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
cityCode | 城市 | String | Y | 城市编码 |
row | 行数 | int | Y | 每次请求返回的条数 |
start | 开始行 | int | Y | 每次请求开始行数 |
3.2.5输出参数
返回值中每个hotel节点对应一个酒店的静态信息,可包含多个hotel节点,根据row返回指定条 数酒店信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
cityCode | 城市编码 | String | Y | |
cityNameCN | 城市名称,中文 | String | N | 国际及港澳台必须提供中文 |
cityNameEN | 城市名称,英文 | String | N | |
hotel | 酒店 | Array | Y | 关联 酒店信息 |
酒店信息
节点 | 父节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|---|
id | Hotel | 酒店ID | String | Y | |
mappingList | Hotel | Mapping关系列表 | Array | N | 关联 Mapping关系列表 说明:Mapping关系列表支持增删改 增:本次返参比前一次返参新增的mapping关系 删:前一次返参的Mapping关系列表,本次返参缺少的mapping关系则会解除上次的关联Mapping关系 改:每次返参都存在的mapping关系 |
hotelNameCN | Hotel | 酒店中文名 | String | Y | 国际及港澳台必须提供中文 |
hotelNameEN | Hotel | 酒店英文名 | String | N | |
address | Hotel | 酒店地址 | String | Y | |
longitude | Hotel | 酒店经度 | String | Y | 腾讯地图 |
latitude | Hotel | 酒店纬度 | String | Y | 腾讯地图 |
tel | Hotel | 酒店电话 | String | Y | |
fax | Hotel | 酒店传真 | String | N | |
webSite | Hotel | 酒店网址 | String | N |
Mapping关系列表
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
mappingType | 与其他mapping关系 | int | Y | 11:道旅 12:携程 13:Expiedia 14:艺龙 |
mappingHotelId | 映射关系的ID | String | Y | |
mappingHotelName | 映射酒店中文名称 | String | N | |
mappingHotelAddress | 映射酒店中文地址 | String | N |
3.2.6输入示例
https://{host}/rest?method=geo.hotel.list&data={"cityCode":"101,102"}
3.2.7输出示例
{
"code": 200,
"msg": "成功",
"data": [
{
"cityCode": "101",
"cityNameCN": "北京市",
"cityNameEN": "beijing",
"hotel": [
{
"id": "0086",
"mappingType": 1,
"mappingHotelId": "china",
"hotelNameCN": "汉庭酒店",
"hotelNameEN": "HTHT US",
"address": "北京通州区科创五街3号汉庭酒店",
"longitude": "116.5461000000",
"latitude": "39.8098300000",
"tel": "010-56351088",
"fax": "",
"webSite": "http: //www.huazhu.com/Hanting",
"mappingList":[
{
"mappingType":11,
"mappingHotelId":"12345",
"mappingHotelName":"京东自营",
"mappingHotelAddress":"京东大厦"
}
]
}
]
}
]
}
3.3酒店增量信息API
3.3.1方法名称
测试地址: https://xxx.jd.com/apiGateway/sip/pushGeoHotelList?appId={appId}
线上地址: 京东提供
3.3.2 HTTP方法
POST
3.3.3接口描述
通过此API获取供应商更新的酒店静态信息(归属城市、名称、地址、坐标、电话等),供应商调用该API推送酒店静态数据。
3.3.4输入参数
返回值中每个hotel节点对应一个酒店的静态信息,可包含多个hotel节点。
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
appId | 供应商应用id | String | Y | |
data | 酒店信息 | Array | Y | 关联 城市信息 |
城市信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
cityCode | 城市编码 | String | Y | |
cityNameCN | 城市名称,中文 | String | N | 国际及港澳台必须提供中文 |
cityNameEN | 城市名称,英文 | String | N | |
hotel | 酒店 | Array | Y | 关联 酒店信息 |
酒店信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
id | 酒店ID | String | Y | |
updateType | 更新类型 | int | Y | 0:修改 1:新增 2:删除 |
mappingType | Mapping对象 | int | N | 1:艺龙 2:携程 3:Expiedia |
mappingHotelId | 映射ID | String | N | |
hotelNameCN | 酒店中文名 | String | N | 国际及港澳台必须提供中文 |
hotelNameEN | 酒店英文名 | String | N | |
address | 酒店地址 | String | Y | |
longitude | 酒店经度(腾讯) | String | N | |
latitude | 酒店纬度(腾讯) | String | N | |
tel | 酒店电话 | String | Y | |
fax | 酒店传真 | String | N | |
webSite | 酒店网址 | String | N | |
mappingList | Mapping关系列表 | Array | N | 关联 Mapping关系列表 说明:Mapping关系列表支持增删改 增:本次返参比前一次返参新增的mapping关系 删:前一次返参的Mapping关系列表,本次返参缺少的mapping关系则会解除上次的关联Mapping关系 改:每次返参都存在的mapping关系 |
Mapping关系列表
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
mappingType | 与其他mapping关系 | int | Y | 11:道旅 12:携程 13:Expiedia 14:艺龙 |
mappingHotelId | 映射关系的ID | String | Y | |
mappingHotelName | 映射酒店中文名称 | String | N | |
mappingHotelAddress | 映射酒店中文地址 | String | N |
3.3.5输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
result | 推送结果 | String | Y | SUCCESS: 处理成功 FAILURE: 处理失败 |
errorMessage | 错误码节点 | Object | N | result = FAILURE 不为空 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | Y | 见附录 状态码枚举表 |
desc | 错误描述 | String | N |
3.3.6输入示例
{
"appId": "2029922",
"data": [
{
"cityCode": "101",
"cityNameCN": "北京市",
"cityNameEN": "beijing",
"hotel": [
{
"id": "0086",
"updateType": 1,
"mappingType": 1,
"mappingHotelId": "china",
"hotelNameCN": "汉庭酒店",
"hotelNameEN": "HTHT US",
"address": "北京通州区科创五街3号汉庭酒店",
"longitude": "116.5461000000",
"latitude": "39.8098300000",
"tel": "010-56351088",
"fax": "",
"webSite": "http: //www.huazhu.com/Hanting",
"mappingList":[
{
"mappingType":11,
"mappingHotelId":"12345",
"mappingHotelName":"京东自营",
"mappingHotelAddress":"京东大厦"
}
]
}
]
}
]
}
3.3.7输出示例
{
"result": "SUCCESS",
"message": "成功"
}
3.4房型信息API
3.4.1方法名称
geo.room.list
3.4.2 HTTP方法
GET
3.4.3接口描述
通过此API获取供应商酒店房型静态信息(名称、床型等),京东定期调用该API从供应商处获取更新信息。
3.4.4输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
hotelIds | 酒店 | String | N | 供应商酒店ID,可包含多个 ,隔开 |
3.4.5输出参数
返回值中每个hotel节点对应一个酒店的物理房型静态信息,包含一个rooms节点,rooms节点可包含多个room节点,返回指定酒店的全部物理房型信息。
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
hotel | 酒店 | Array | Y | 关联 酒店信息 |
酒店信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
id | 酒店ID | String | Y | |
room | 房型 | Array | Y | 关联 房型信息 |
房型信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
id | 房型ID | String | Y | |
name | 房型名 | String | Y | |
maxOccupancy | 最大入住人数 | int | Y | |
standardOccupancy | 标准入住人数 | Int | Y | |
wifi | Wifi | String | N | 关联 收费类型枚举表 |
brand | 宽带 | String | N | 关联 收费类型枚举表 |
smoking | 是否可吸烟 | String | N | "true" 或 "false" |
area | 面积 | String | N | 无需单位 |
floor | 楼层 | int | N | |
window | 是否有窗 | int | N | 0:无窗 1:有窗 2:不确定 |
addBed | 加床 | int | N | 0:不可加床 1:可加床 2:不确定 |
bedInfo | 床型信息 | Object | 关联 床型信息 | |
mappingList | 房型关系列表 | Array | N | 关联 房型Mapping关系列表 说明:Mapping关系列表支持增删改 增:本次返参比前一次返参新增的mapping关系 删:前一次返参的Mapping关系列表,本次返参缺少的mapping关系则会解除上次的关联Mapping关系 改:每次返参都存在的mapping关系 |
收费类型枚举表
收费类型 | 描述 |
---|---|
FREE | 免费 |
CHARGES | 收费 |
PART_CHARGE | 部分收费 |
PART_FREE | 部分有且免费 |
NONE | 无此服务 |
UNKNOWN | 未知,不确定 |
床型信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
relation | 床型之间的关系 | String | N | AND:多种床型共存 OR:多种床型可选 |
beds | Array | N | 关联 床型关系 |
床型关系
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
bedName | 床型名称 | String | N | |
bedCounts | 床数量 | int | Y | |
bedSize | 床型尺寸 | String | N | |
description | 描述信息 | String | N |
房型Mapping关系列表
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
mappingType | 与其他mapping关系 | int | Y | 11:道旅 12:携程 13:Expiedia 14:艺龙 |
mappingHotelId | 映射酒店ID | String | Y | |
mappingRoomId | 映射房型ID | String | Y |
3.4.6输入示例
https://{host}/rest?method=geo.room.list&data={"hotelIds":"100,200,300"}
3.4.7输出示例
{
"code": 200,
"msg": "成功",
"data": [
{
"id": "100",
"room": [
{
"id": "001",
"name": "标准间",
"maxOccupancy": 2,
"standardOccupancy": 2,
"wifi": "FREE",
"brand": "FREE",
"smoking": "true",
"area": "28平方米",
"floor": 2,
"window": 1,
"addBed": 2,
"bedInfo": {
"relation": "AND",
"beds": [
{
"bedName": "",
"bedCounts": 1,
"bedSize": "1.8m",
"description": ""
}
]
},
"mappingList":[
{
"mappingType":11,
"mappingHotelId":"12345",
"mappingRoomId":"7896"
}
]
}
]
}
]
}
3.5房型增量信息API
3.5.1方法名称
测试地址: https://xxx.jd.com/apiGateway/sip/pushGeoRoomList?appId={appId}
线上地址: 京东提供
3.5.2 HTTP方法
POST
3.5.3接口描述
通过此API获供应商酒店房型静态的增量信息(名称、床型等),供应商调用该API推送更新的房型信息。
3.5.4输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
appId | 供应商应用id | String | Y | |
data | 酒店信息 | Array | 关联 酒店信息 |
酒店信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
id | 酒店ID | String | Y | |
room | 房型 | Array | Y | 关联 房型信息 |
房型信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
id | 房型ID | String | Y | |
name | 房型名 | int | Y | |
updateType | 更新类型 | int | ||
maxOccupancy | 最大入住人数 | String | Y | |
standardOccupancy | 标准入住人数 | Int | Y | |
wifi | Wifi | String | N | 关联 收费类型枚举表 |
brand | 宽带 | String | N | 关联 收费类型枚举表 |
smoking | 是否可吸烟 | String | N | true/false |
area | 面积 | String | N | |
floor | 楼层 | int | N | |
window | 是否有窗 | int | N | 0:无窗 1:有窗 2:不确定 |
addBed | 加床 | int | N | 0:不可加床 1:可加床 2:不确定 |
bedInfo | 床型信息 | Object | 关联 床型信息 | |
mappingList | 房型关系列表 | Array | N | 关联 房型Mapping关系列表 说明:Mapping关系列表支持增删改 增:本次返参比前一次返参新增的mapping关系 删:前一次返参的Mapping关系列表,本次返参缺少的mapping关系则会解除上次的关联Mapping关系 改:每次返参都存在的mapping关系 |
收费类型枚举表
收费类型 | 描述 |
---|---|
FREE | 免费 |
CHARGES | 收费 |
PART_CHARGE | 部分收费 |
PART_FREE | 部分有且免费 |
NONE | 无此服务 |
UNKNOWN | 未知,不确定 |
床型信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
relation | 床型之间的关系 | String | N | AND:多种床型共存 OR:多种床型可选 |
beds | Array | N | 关联 床型关系 |
床型关系
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
bedName | 床型名称 | String | N | |
bedCounts | 床数量 | int | Y | |
bedSize | 床型尺寸 | String | N | |
description | 描述信息 | String | N |
房型Mapping关系列表
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
mappingType | 与其他mapping关系 | int | Y | 11:道旅 12:携程 13:Expiedia 14:艺龙 |
mappingHotelId | 映射酒店ID | String | Y | |
mappingRoomId | 映射房型ID | String | Y |
3.5.5输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
result | 推送结果 | String | Y | SUCCESS: 处理成功 FAILURE: 处理失败 |
errorMessage | 错误码节点 | Object | N | result = FAILURE 不为空 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | Y | 见附录 状态码枚举表 |
desc | 错误描述 | String | N |
3.5.6输入示例
{
"appId": "2029922",
"data": [
{
"id": "100",
"room": [
{
"id": "001",
"name": "标准间",
"maxOccupancy": 2,
"standardOccupancy": 2,
"wifi": "FREE",
"brand": "FREE",
"smoking": "true",
"area": "28平方米",
"floor": 2,
"window": 1,
"addBed": 2,
"bedInfo": {
"relation": "AND",
"beds": [
{
"bedName": "",
"bedCounts": 1,
"bedSize": "1.8m",
"description": ""
}
]
},
"mappingList":[
{
"mappingType":12,
"mappingHotelId":"12345",
"mappingRoomId":"7896"
}
]
}
]
}
]
}
3.5.7输出示例
{
"result": "SUCCESS",
"message": "成功"
}
3.6价格API
3.6.1方法名称
hotel.rp
3.6.2 HTTP方法
GET
3.6.3接口描述
通过此API来获取价格计划信息,信息包含房间基本属性、房价、房态、房量等信息。进入预订页和订单提交页时,请求价格校验需提供实时价格。
1.返回值中的hotelId必须与请求值中的hotelId一致,否则价格计划将被过滤。 2.返回值中用"|"分隔的内容必须满足请求中入住间夜数,否则价格计划将被过滤。
调用API的不同场景的模式:
1.列表页、详情页 报价数据 2.特定房型并进入预定页和提交页进行价格校验
3.6.4输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
hotelIds | 酒店ID | String | Y | |
checkin | 入住时间 | Date | Y | 格式:YYYY-MM-DD,如:2017-10-18 |
checkout | 离店时间 | Date | Y | 格式:YYYY-MM-DD,如:2017-10-18 |
ratePlanId | 价格计划ID | String | Y | 预定页 |
roomCounts | 房间数 | int | Y | 默认值:1 |
customerInfo | 住客信息 | Array | N | 关联 住客信息 当请求多间房时,需要分别设置每个房间的成人数、儿童数、儿童年龄 |
channel | 报价售卖渠道 | String | N | 多个以’|’ 分隔,不传默认所有 1: PC 2: APP 3: 商旅 4: 平台 5: 钟点房 |
住客信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 房间序号 | int | N | 住客房间序号 |
numberOfAdults | 成人数 | int | N | 成人数 |
numberOfchildren | 儿童数 | int | N | 儿童数 |
childrenAges | 儿童年龄 | String | N | 可包含多个儿童,用“|” 分隔 例如:如 “1|12” ,含义是两个儿童,一名1岁,一名12岁 |
3.6.5输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
hotelId | 酒店编号 | String | Y | 与入参中的hotelIds中的hotelId对应 |
hotelCityCode | 酒店城市编码 | String | Y | |
hotelName | 酒店名称 | String | Y | |
hotelAddress | 酒店地址 | String | Y | |
hotelTel | 酒店电话 | String | N | |
checkin | 开始时间 | Date | Y | 格式:YYYY-MM-DD, 如:2017-10-18 |
checkout | 结束时间 | Date | Y | 格式:YYYY-MM-DD, 如:2017-10-18 |
currencyCode | 币种 | String | N | 币种 |
timeZone | 时区 | String | N | 默认:GMT+8 |
ratePlans | 价格计划 | Array | N | 关联 价格计划 |
价格计划
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
id | 价格计划编码 | String | Y | |
name | 价格计划名称 | String | Y | |
payType | 支付方式 | int | Y | 0:预付 1:现付 |
isHourRoom | 是否是钟点房 | int | N | 1:是 0:否 |
channels | 报价售卖渠道 | String | N | 多个以’ |
memberLevel | 会员级别 | String | N | 多个以’|’ 分隔。空值表示不限制。见 会员级别(待提供) |
ratePlanType | 报价类型 | int | Y | 0:底价 1:售价 |
receiptType | 发票类型 | int | Y | 0:京东提供 1:酒店提供 2:供应商提供 |
currencyCode | 币种 | String | N | 币种 |
averagePrices | 每间每晚房价(均价) | String | Y | 入住多晚时,每晚价格以“|” 分隔,数量与fromDate/toDate相对应。价格=房费+税费 例如1: fromDate: 2017-10-21 toDate:2017-10-24 若请求两间房时,2017-10-21的房间一价格为100,房间二价格为200,则当晚的每间每晚房价为150;2017-10-22的房间一价格为100,房间二价格为100,则当晚的每间每晚房价为100;2017-10-23的房间一价格为100,房间二价格为300,则当晚的每间每晚房价为200;则averagePrices的值为 “150|100|200” 。若需要10日报价,但只能提供7日报价,其余报价用0补齐 |
averageRoomRates | 每间每晚房费 | String | Y | 入住多晚时,以“|” 分隔,数量与fromDate/toDate对应。若需要10日报价,但只能提供7日报价,其余报价用0补齐 |
averageTaxAndFee | 每间每晚税费 | String | Y | 入住多晚时,以“|” 分隔,数量与fromDate/toDate相对应 |
salesGuideType | 销售指导价类型 | int | N | 0:售价=销售指导价 1:售价<销售指导价 2:售价<=销售指导价 3:售价>销售指导价 4:售价>=销售指导价 |
salesGuidePrice | 销售指导价 | String | N | 销售指导价 入住多晚时,以“ |
salesGuideRoomRates | 销售指导房价 | String | N | 销售指导价 - 房价 入住多晚时,以“ |
salesGuideTaxAndFee | 销售指导税费 | String | N | 销售指导价 - 税费 入住多晚时,以“ |
roomStatus | 每晚房态 | String | Y | Available: 可预订 Disable:不可预订 入住多晚时,以“ |
roomLimits | 每晚房量 | String | Y | 入住多晚时,以“|” 分隔,数量与fromDate/toDate相对应。例如:2 |
reservedRoomLimits | 每晚保留房数量 | String | Y | 入住多晚时,以“|” 分隔,数量与fromDate/toDate相对应。例如:2 |
immediately | 立即确认 | int | Y | 1:可立即确认 0:不可立即确认 |
customerType | 宾客类型 | int | Y | 0:所有宾客 1:中国大陆宾客 2:港澳宾客 3:台湾宾客 4:中国宾客 5:国外宾客 |
maxOccupancy | 最大可入住人数 | int | Y | 默认值:2 |
freeChildrenCounts | 可免费入住儿童数 | int | N | |
areaRange | 物理房型面积范围 | String | N | 格式:数值1[-数值2] 数值2>数值1 |
floorRange | 楼层范围 | String | N | 格式:数值1[-数值2] 数值2>数值1 |
hasWindow | 是否有窗 | int | N | 0:无窗 1:部分有窗 2:有窗 3:不确定 |
hasNonSmokeRoom | 是否有无烟房 | int | N | 1:是 0:否 |
hasSmokeCleanRoom | 是否可无烟处理 | int | N | 1:是 0:否 |
noNonSmokeRoom | 无法安排无烟 | int | N | 1:是 0:否 |
notAllowSmoking | 不可吸烟 | int | N | 1:是 0:否 |
area | 房型面积 | String | N | 物理房型面积 无需单位 |
wifi | Wifi | String | Y | 关联 收费类型枚举表 |
broadband | 宽带类型 | String | Y | 关联 收费类型枚举表 |
checkinTime | 办理入住时间 | String | N | 格式: HH:MM |
arrivalTimeFrom | 起始时间 | String | N | 到店时间范围 格式: YYYY-MM-DD hh:mm:ss |
arrivalTimeEnd | 截止时间 | String | N | 到店时间范围 格式: YYYY-MM-DD hh:mm:ss |
checkoutTime | 办理退房时间 | String | N | 格式: HH:MM |
roomType | 物理房型信息 | Object | N | 关联 物理房型 |
bedInfo | 床型信息 | Object | Y | 关联 床型信息 |
mealInfo | 餐食信息 | Object | Y | 关联 餐食信息 |
guaranteeRules | 担保规则 | Object | N | 关联 担保规则 此担保规则用于现付 |
refund | 取消规则 | Object | Y | 关联 取消规则 1. 若未包含取消规则属性,则默认为该价格计划一旦预订则不可取消。 2. NonRefundableRangs的优先级高于CancellationPolicyRules |
hoursRooms | 钟点房 | Object | N | 关联 钟点房 channel为5时 |
surcharges | 附加费用 | Array | N | 关联 附加费用 信息需要展示在用户的预订提示中 |
remarks | 备注信息 | Array | N | 关联 备注信息 备注信息中的内容会展示在用户的预订提示中,收费项目优先展示 |
optionRules | 可选服务 | Array | N | 关联 可选服务 可选服务一般为酒店提供的附加服务,用户可以选择消费,内容会展示在用户的预订提示中 |
promotionRules | 促销规则 | Array | N | 关联 促销规则 |
extras | 额外信息 | Array | N | 关联 额外信息 预订时必须的且未在接口中提供定义的字段,可保存在extra中 |
收费类型枚举表
收费类型 | 描述 |
---|---|
FREE | 免费 |
CHARGES | 收费 |
PART_CHARGE | 部分收费 |
PART_FREE | 部分有且免费 |
NONE | 无此服务 |
UNKNOWN | 未知,不确定 |
物理房型
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
roomCode | 房型编码 | String | N | |
roomName | 房型名称 | String | N | |
supplierId | 供应商编号 | String | N |
床型信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
relation | 床型之间的关系 | String | N | AND:多种床型共存 OR:多种床型可选 |
beds | Array | N | 关联 床型关系 |
床型关系
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 床型序号 | int | ||
bedCode | 床型编码 | String | Y | 关联 床型编码枚举表 |
counts | 床数量 | int | Y | counts=99时,页面展示时只取的description的内容 counts=0时,页面不展示床数量 |
bedSize | 床型尺寸 | String | N | |
description | 描述信息 | String | Y |
床型编码枚举表
床型编码 | 描述 |
---|---|
SINGLE | 单床 |
TWIN | 双床 |
DOUBLE | 双人床 |
QUEEN | 大床 |
KING | 特大床 |
BABYBED | 婴儿床 |
ROUNDBED | 圆床 |
WATERBED | 水床 |
SOFABED | 沙发床 |
SPLICINGBED | 拼接床 |
FOLDINGBED | 折叠床 |
DORMIROTYDEDS | 床位 |
TATAMI | 榻榻米床位 |
FULL | 大/单/双 |
OTHER | 其他 当类型为其他时,页面展示desription中的内容 |
UNKNOWN | 不确定 |
餐食信息
节点 | 属性 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|---|
breakfast | counts | 早餐 | String | Y | 每日用餐人数 入住多晚时,以 “|” 分隔,数量与fromDate/toDate相对应 “2|0|1” ,第一天双早,第二天不含早,第三天单早 |
breakfast | description | 描述信息 | String | N | |
lunch | counts | 午餐 | String | Y | 每日用餐人数 入住多晚时,以 “|” 分隔,数量与fromDate/toDate相对应“2|0|1” ,第一天双早,第二天不含早,第三天单早取值范围为counts>=0且counts<=99,counts=99时,只展示描述信息 |
lunch | description | 描述信息 | String | N | |
dinner | counts | 晚餐 | String | Y | 每日用餐人数 入住多晚时,以 “|” 分隔,数量与fromDate/toDate相对应 “2|0|1” ,第一天双晚餐,第二天不含晚餐,第三天单人晚餐 |
dinner | description | 描述信息 | String | N |
担保规则
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
mode | 担保模式 | int | Y | 0:用户在酒店频道担保 1:用户在第三方担保 |
guaranteeRule | 担保规则详情 | Array | N | 关联 担保规则详情 |
担保规则详情
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
arriveStartTime | 到店时间担保开始的时间 | String | N | 用户选择最晚到店时间大于该时间需要担保,HH:MM |
arriveEndTime | 到店时间担保结束的时间 | String | N | 用户选择最晚到店时间小于该时间需要担保(超时担保会用到),HH:MM |
count | 需要担保的最小房间数 | int | N | 用户选择房间数大于等于这个该数字需要担保(用于超量担保) |
description | 描述信息 | String | N | |
priority | 优先级 | String | Y | 从1开始 |
rule | Object | N | 关联 担保规则详情信息 |
担保规则详情信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
guaranteeType | 担保类型 | String | Y | 关联 担保类型枚举表 |
value | 担保值 | String | N | 百分比/金额 |
changeType | 担保变更类型 | int | Y | 0:不可变更取消 1:允许变更取消,需在入住当日24点前hours小时变更取消 2:允许变更取消,需在入住当日最晚到店时间前hours小时变更取消 3:允许变更取消,需在date日time之前变更取消 |
hours | 小时数 | int | N | |
time | 时间 | String | N | 格式:HH:MM |
date | 日期 | Date | N | 格式:YYYY-MM-DD |
担保类型枚举表
担保类型 | 描述 |
---|---|
ALL_GUARANTEE | 全额担保 |
FIRST_NIGHT_GUARANTEE | 首晚担保 |
PERCENTAGE_GUARANTEE | 按总价的百分比担保 |
AMOUNT_GUARANTEE | 按固定金额担保 |
取消规则
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
returnable | 是否可以取消 | String | ||
timeZone | 时区 | String | N | |
cancellationPolicyRules | 规则详情 | Array | N | 关联 取消规则详情 |
nonRefundableRanges | 取消范围 | Array | N | 关联 不可取消范围 |
取消规则详情
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
type | 取消规则类型 | String | Y | 关联 取消规则枚举表 |
beforeHours | 取消时间距离入住当日24点的小时数 | int | Y | 例如:fromDate为2017-10-21,beforeHours=32,则时间为2017-10-20 16:00 |
value | 罚金数值 | String | N | 取消所需扣减的数值 |
不可取消范围
节点 | 属性 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
startDate | 不可取消开始日期 | Date | Y | 格式:YYYY-MM-DD 如:2017-10-18 |
endDate | 不可取消截止日期 | Date | Y | 格式:YYYY-MM-DD 如:2017-10-18 |
取消规则枚举表
规则类型 | 描述 |
---|---|
NO_PENALTY | 无罚金 |
PERCENTAGE_PENALTY | 按总价的百分比扣减 |
AMOUNT_PENALTY | 按固定金额扣减 |
FIRST_NIGHT_PENALTY | 扣除首晚 |
钟点房
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
saleTimeBegin | 最早到店时间 | String | N | 格式:HH:MM |
saleTimeEnd | 最晚到店时间 | String | N | 格式:HH:MM |
saleTimeQuantity | 售卖小时数 | int | N |
附加费用
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
payType | 收费类型 | int | Y | 0:预付 1:现付 |
chargeUnit | 收费单元 | String | Y | PerNight每晚 PerRoom_PerNight每间房每晚 PerRoom每间房 PerAdult_PerBooking每单每成人 PerAdult_PerNight每成人每晚 PerChild_PerBooking每单每儿童 PerChild_PerNight每儿童每晚 PerPerson_PerBooking每单每人 PerPerson_PerNight每人每晚 |
price | 价格 | String | Y | |
description | 描述 | String | Y | 附加费用描述 |
备注信息
节点名称 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 序号 | int | Y | |
description | 描述 | String | Y | 描述信息 |
可选服务
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
inRoomRate | 是否包含在房价中 | String | Y | "true"/"false" |
type | 服务类型 | String | Y | AddBed加床 AddBreakfast加早 highSpeedNetwork专享网络 LaundryService洗衣服务 ShuttleService接送机服务 |
chargeUnit | 收费单元 | String | Y | PerItem每次/每件/每个 PerPerson每人次 PerTime每次 PerHour每小时 PerDay每天 |
price | 服务价格 | String | Y | 价格为0时,提示信息需为免费,例如:可免费加床 |
localcurrencyCode | 附加费币种 | String | N | |
description | 描述 | String | Y | 描述信息 |
促销规则(见附录)
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
type | 促销类型 | String | Y | 关联 促销类型枚举表 |
promotionUnit | 单位 | String | N | DAY:提前xx天 HOUR:提前xx小时 默认:DAY |
value | 与code相关的值 | String | N | 与type对应, 例如:若type为返现,则为每天返现金额 10|20 |
promotionPrice | 促销金额 | String | N | 用于记录供应商的每日促销金额,多天以“|” 分隔 |
description | 描述 | String | Y | 描述信息 |
促销规则类型枚举表
促销类型 | 描述 |
---|---|
Last | 关联连住优惠 例如:连住3天优惠 |
Last_EQ | 关联限时优惠 |
Advence | 关联提前预订优惠 |
MaxStay | 关联最多连住天数 |
MinRoomCount | 关联最少预订房间数 |
MaxRoomCount | 关联最多预订房间数 |
CashBack | 关联返现 |
ImmediatelyReduced | 关联立减 |
CheckoutDelay | 关联延时退房 |
FreeUpgrade | 关联免费升级 |
FreeShuttle | 关联免费接送机 |
Gift | 关联大礼包 |
Others | 关联其他 此时以描述信息为准 |
TonightSale | 关联今夜甩卖 |
额外信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
key | 关键字 | String | Y | |
value | 值 | String | Y |
3.6.6输入示例
https://{host}/rest?method=hotel.rp&data={"hotelId":"100,200","checkin":"2017-09-01","checkout":"2017-09-06","channels": "1|2|3|4|5","ratePlanId":"YYY333399","roomCounts":"1"}
3.6.7输出示例
{
"code": 200,
"msg": "成功",
"data": [
{
"hotelId": "100",
"hotelCityCode": "99",
"hotelName": "希尔顿",
"hotelAddress": "北京通州区经济开发区",
"hotelTel": "",
"checkin": "2017-09-01",
"checkout": "2017-09-05",
"timeZone": "GMT+8",
"currencyCode": "CNY",
"ratePlans": [
{
"id": "19291",
"name": "希尔顿豪华(含早)",
"ratePlanType": 1,
"isHourRoom": 1,
"channels": "1|2|3|4|5",
"memberLevel": "1|2",
"receiptType": 0,
"payType": 0,
"averagePrices": "100|120|113|115|111",
"averageRoomRates": "99|100|110|110|100",
"averageTaxAndFee": "1|20|3|5|11",
"roomStatus": "Available|Disable|Available|Available|Available",
"roomLimits": "1|2|3|2|2",
"reservedRoomLimits": "2|3|4|4|5",
"immediately": 0,
"customerType": 0,
"broadband": "FREE",
"wifi": "FREE",
"maxOccupancy": 2,
"freeChildrenCounts": 0,
"areaRange": "30.3-40",
"floorRange": "2-5",
"hasWindow": 0,
"hasNonSmokeRoom": 0,
"hasSmokeCleanRoom": 0,
"noNonSmokeRoom": 1,
"notAllowSmoking": 1,
"area": "20",
"arrivalTimeFrom": "2017-10-01 14:00:00",
"arrivalTimeEnd":"2017-10-01 16:00:00",
"checkinTime": "14:00",
"checkoutTime": "15:00",
"salesGuideType": 0,
"salesGuidePrice": "150",
"salesGuideRoomRates": "150|160|160|160|160",
"salesGuideTaxAndFee": "0|0|0|0|0",
"roomType": {
"roomCode": "110",
"roomName": "大床房",
"supplierId": "JD0309650572"
},
"guaranteeRules": {
"mode": 0,
"guaranteeRule": [
{
"priority": 1,
"arriveStartTime": "",
"arriveEndTime": "",
"count":2,
"rule":
{
"changeType": 1,
"value": "",
"guaranteeType": "ALL_GUARANTEE",
"date": "",
"time": "",
"hours": "25"
},
"description": ""
}
]
},
"bedInfo": {
"relation": "OR",
"beds": [
{
"seq": 1,
"bedCode": "SINGLE",
"counts": 1,
"bedSize": "1.5*2.0",
"description": "1.5*2.0大床"
}
]
},
"mealInfo": {
"breakfast": {
"counts": "0|0|0|0|0",
"description": "含早"
},
"lunch": {
"counts": "0|0|0|0|0",
"description": "午餐"
},
"dinner": {
"counts": "0|0|0|0|0",
"description": ""
}
},
"refund": {
"returnable": "true",
"timeZone": "GMT+8",
"cancellationPolicyRules": [
{
"beforeHours": 32,
"type": "AMOUNT_PENALTY",
"value": "100"
}
],
"nonRefundableRangs": [
{
"startDate": "2017-10-18",
"endDate": "2017-10-18"
}
]
},
"surcharges": [
{
"payType": 1,
"chargeUnit": "PerNight",
"price": "22",
"description": "附加信息描述"
}
],
"remarks": [
{
"seq": 1,
"description": "备注信息描述"
}
],
"optionRules": [
{
"type": "AddBed",
"inRoomRate": "true",
"price": "99",
"chargeUnit": "PerItem",
"description": "可选服务描述"
}
],
"promotionRules": [
{
"type": "MaxStay",
"value": "0|0|0|0|0",
"promotionUnit": "ImmediatelyReduced",
"promotionPrice": "10|10",
"description": "促销信息描述"
}
],
"extras": [
{
"key": "key",
"value": "value"
}
],
"hoursRooms": {
"saleTimeBegin": "17:00",
"saleTimeEnd": "20:00",
"saleTimeQuantity": 5
}
}
]
}
]
}
3.7下单API
3.7.1方法名称
hotel.occupy
3.7.2 HTTP方法
POST</br>
Content-type:application/x-www-form-urlencoded; charset=UTF-8
3.7.3接口描述
用户支付成功后,使用下单接口去供应商侧下单。接口通过POST方式请求。 重单, 请注意此处重单判断基于是否有符合条件的有效订单,严格判断请销售端确保只生成一个订单。
3.7.4输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
data | 下单对象 | Object | Y | 下单对象 |
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
supplierHotelId | 酒店id | String | Y | 供应商酒店ID |
checkin | 入住日期 | Date | Y | 格式:YYYY-MM-DD |
checkout | 离店日期 | Date | Y | 格式:YYYY-MM-DD |
arriveTime | 预计到达时间 | String | Y | 格式:HH:MM |
currencyCode | 币种 | String | N | |
specialRemark | 住客偏好 | String | Y | 1:无要求 2:尽量安排大床 3:尽量安排双床 4:尽量高层 5:尽量安排安静房间 6:尽量安排无烟房 7:尽量安排相邻房间(订多间房时)多个用,连接(String) |
roomCounts | 房间数 | int | Y | |
totalPrice | 总价 | String | Y | |
instantConfirm | 是否立即确认 | int | Y | 1:可立即确认 0:不可立即确认 |
customerInfo | 住客信息 | Array | Y | 关联 住客信息 当请求多间房时,需要分别设置每个房间的成人数、儿童数、儿童年龄 |
cardInfo | 信用卡信息 | Object | N | 可用于担保现付、VCC结算时使用 |
orderInfo | 订单信息 | Object | Y | 关联 订单信息 |
InvoiceInfo | 发票信息 | Object | N | 关联 发票信息 |
extras | 额外信息 | Array | N | 关联 额外信息 |
ratePlans | 价格计划 | Array | Y | 关联 价格计划 |
住客信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 房间序号 | int | N | |
numberOfAdults | 成人数 | int | N | |
numberOfchildren | 儿童数 | int | N | |
childrenAges | 儿童年龄 | String | N | 可包含多个儿童,用“|” 分隔。 例如:如 “1|12” ,含义是两个儿童,一名1岁,一名12岁 |
customer | 住客详情 | Array | Y | 每个房间至少包含一个住客姓名 |
住客详情
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
firstName | 住客名 | String | Y | |
lastName | 住客姓 | String | Y | |
gender | 性别 | String | N | 女:"female" 男:"male" |
nationality | 国籍 | String | N |
信用卡信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
name | 持卡人姓名 | String | N | |
firstName | 持卡人名 | String | N | |
lastName | 持卡人姓 | String | N | |
phone | 预留电话 | String | N | 持卡人银行预留电话 |
certificateType | 证件类型 | Int | N | 持卡人证件类型 0:身份证 1:护照 2:其他 |
certificateNumber | 证件号码 | String | N | |
cardNumber | 信用卡号 | String | N | |
year | 有效期年 | String | N | |
month | 有效期月 | String | N | |
safetyCode | 安全码 | String | N | |
type | 卡类型 | String | N | 参见 卡类型说明表 |
卡类型说明表
TYPE | 名称 | 说明 |
---|---|---|
UnionPay | 银联卡 | 包含如下任意一种既表示支持银联: 牡丹卡(Peony)、 金穗卡(Kins)、 长城卡(Greatwall)、 龙卡(Long)、 太平洋卡(Pacific)、 东方卡(Orient)。 |
VISA | VISA | |
MasterCard | 万事达 | |
AMEX | 运通American Express | |
DinersClub | 大来Diners Club | |
JCB | JCB | |
BCCard | BC Card | |
Discover | Discover | |
CartaSi | Carta Si | |
CarteBleue | Carte Bleue | |
VisaElectron | Visa Electron | |
Maestro | Maestro | |
CITIBANK | 花旗银行 | |
ABC | 农业银行 | |
BOD | 大连银行 | |
NYRCB | 鄞州银行 | |
BOB | 北京银行 | |
BRCB | 北京农商银行 | |
BOC | 中国银行 | |
BANKOFJINZHOU | 锦州银行 | |
BANKOLANGZHOU | 兰州银行 | |
BANKQH | 青海银行 | |
CCB | 中国建设银行 | |
BANKOFCHENGDE | 承德银行 | |
CDRCB | 成都农村商业银行 | |
CEB | 光大银行 | |
CIB | 兴业银行 | |
ChinaCITICBank | 中信银行 | |
CMB | 招商银行 | |
CMBC | 民生银行 | |
BOCOM | 交通银行 | |
BANKOFCHONGQING | 重庆银行 | |
CHONGQINGRURALCOMMERCLALBANK | 重庆农村商业银行 | |
BANKOFCHANGSHA | 长沙银行 | |
CSRCBANK | 常熟农村商业银行 | |
CZCB | 浙江稠州商业银行 | |
DONGYINGBANK | 东营银行 | |
FUDIANBANK | 富滇银行 | |
FUJIANRURALCREDITUNION | 福建省农村信用社 | |
CHINAGUANGFABANK | 广发银行 | |
GUANGZHOURURALCOMMERCIALBANK | 广州农村商业银行 | |
BANKOFGUANGZHOU | 广州银行 | |
BANKOFGANZHOU | 赣州银行 | |
BANKOFHEBEI | 河北银行 | |
BEA | 东亚银行 | |
HUNANRURALCREDITUNION | 湖南省农村信用社联合社 | |
HARBINBANK | 哈尔滨银行 | |
HUISHANGBANK | 徽商银行 | |
HUXIABANK | 华夏银行 | |
HANGZHOUBANK | 杭州银行 | |
ICBC | 工商银行 | |
BANKOFJIUJIANG | 九江银行 | |
BANKOFJINHUA | 金华银行 | |
JIAGSUPROVINCERURALCREDITUNION | 江苏省农村信用社联合社 | |
BANKOFJIANGSU | 江苏银行 | |
JIANGYINRURALCOMMERCIALBANK | 江阴农村商业银行 | |
LONGJINGBANK | 龙江银行 | |
MINTAIBANK | 浙江民泰商业银行 | |
BANKOFNINGBO | 宁波银行 | |
JIANGXIBANK | 南昌银行 | |
BANKOFNANJING | 南京银行 | |
POSTALSAVINGSBANKOFCHINA | 邮政储蓄银行 | |
BANKOFQINGDAO | 青岛银行 | |
QILUBANK | 齐鲁银行 | |
SHENZHENDEVELOPMENTBANK | 深发银行 | |
SHUNDERURALCOMMERCIALBANK | 顺德农村商业银行 | |
BANKOFSHANGHAI | 上海银行 | |
PINGANBANK | 平安银行 | |
SPDB | 浦发银行 | |
SHANGRAOBANK | 上饶银行 | |
SHANGHAIRURALCOMMERCIALBANK | 上海农商银行 | |
BANKOFTAILZHOU | 台州银行 | |
UCCB | 乌鲁木齐市商业银行 | |
BANKOFWEIFANG | 潍坊银行 | |
WEIHAICITYCOMMERCIALBANK | 威海市商业银行 | |
WUJIANGRURALCOMMERCIALBANK | 吴江农商银行 | |
WUXIRURALCOMMERCIALBANK | 无锡农村商业银行 | |
BANKOFWENZHOU | 温州银行 | |
HBC | 湖北银行(宜昌市商业银行) | |
BANKOFNINGXIA | 宁夏银行(银川市商业银行) | |
YRCB | 山西尧都农村商业银行 | |
ZHEJIANGTAILONGCOMMERCIALBANK | 浙江泰隆商业银行 |
订单信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
jdOrderId | 订单编号 | String | Y | 京东提供 |
jdOrderStatus | 订单状态 | String | Y | 京东提供 |
jdHotelId | 京东酒店ID | String | Y | |
orderDate | 下单时间 | Date | Y | 格式: YYYY-MM-DD HH:MM:SS |
contactName | 联系人姓名 | String | Y | |
contactPhone | 联系电话 | String | Y | |
contactEmail | 联系人邮箱 | String | Y |
发票信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
invoiceType | 发票类型 | String | Y | Paper-纸质发票 Electronic-电子发票 Invoice-Invoice发票 |
titleType | title类型 | String | Y | Personally-个人 Enterprise-企业 Government-政府机关行政单位 |
title | 发票Title | String | Y | |
itin | 纳税人识别号/统一社会信用代码 | String | Y | |
itemName | 发票内容 | String | Y | 代订房费 代订住宿费 旅游服务费 会议服务费 住宿费 旅游费 其他 |
address | 邮寄地址 | String | Y | invoiceType= Electronic 可为空 |
postal | 邮编 | String | N | invoiceType= Electronic 可为空 |
addressee | 收件人 | String | Y | invoiceType= Electronic 可为空 |
phone | 收件人电话 | String | Y | invoiceType= Electronic 可为空 |
收件人邮箱 | String | N | invoiceType= Electronic 不可为空 | |
isNeedRelationOrder | 是否包含入住信息 | int | Y | 0:在发票备注栏中添加酒店预订信息(酒店名称、入住日期、离店日期、房间数) 1:不添加,默认值 |
额外信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
key | 关键字 | String | Y | |
value | 值 | String | N |
价格计划
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
id | 价格计划编码 | String | Y | |
name | 价格计划名称 | String | Y | |
payType | 支付方式 | int | Y | 0:预付 1:现付 |
isHourRoom | 是否是钟点房 | int | N | 1:是 0:否 |
channels | 报价售卖渠道 | String | N | 多个以’|’ 分隔。空值表示不限制 |
memberLevel | 会员级别 | String | N | 多个以’|’ 分隔。空值表示不限制。见 会员级别(待提供) |
ratePlanType | 报价类型 | int | Y | 0:底价 1:售价 |
receiptType | 发票类型 | int | Y | 0:京东提供 1:酒店提供 2:供应商提供 |
averagePrices | 每间每晚房价(均价) | String | Y | 入住多晚时,每晚价格以“|” 分隔,数量与fromDate/toDate相对应。价格=房费+税费 例如1: fromDate: 2017-10-21 toDate:2017-10-24 若请求两间房时,2017-10-21的房间一价格为100,房间二价格为200,则当晚的每间每晚房价为150;2017-10-22的房间一价格为100,房间二价格为100,则当晚的每间每晚房价为100;2017-10-23的房间一价格为100,房间二价格为300,则当晚的每间每晚房价为200;则averagePrices的值为 “150|100|200” 。若需要10日报价,但只能提供7日报价,其余报价用0补齐 |
averageRoomRates | 每间每晚房费 | String | Y | 入住多晚时,以“|” 分隔,数量与fromDate/toDate对应。若需要10日报价,但只能提供7日报价,其余报价用0补齐 |
averageTaxAndFee | 每间每晚税费 | String | Y | 入住多晚时,以“|” 分隔,数量与fromDate/toDate相对应 |
salesGuideType | 销售指导价类型 | int | N | 0:售价=销售指导价 1:售价<销售指导价 2:售价<=销售指导价 3:售价>销售指导价 4:售价>=销售指导价 |
salesGuidePrice | 销售指导价 | String | N | 销售指导价 入住多晚时,以“ |
salesGuideRoomRates | 销售指导房价 | String | N | 销售指导价 - 房价 入住多晚时,以“ |
salesGuideTaxAndFee | 销售指导税费 | String | N | 销售指导价 - 税费 入住多晚时,以“ |
roomStatus | 每晚房态 | String | Y | Available: 可预订 Disable:不可预订 入住多晚时,以“ |
roomLimits | 每晚房量 | String | Y | 入住多晚时,以“|” 分隔,数量与fromDate/toDate相对应。例如:2 |
reservedRoomLimits | 每晚保留房数量 | String | Y | 入住多晚时,以“|” 分隔,数量与fromDate/toDate相对应。例如:2 |
immediately | 立即确认 | int | Y | 1:可立即确认 0:不可立即确认 |
customerType | 宾客类型 | int | Y | 0:所有宾客 1:中国大陆宾客 2:港澳宾客 3:台湾宾客 4:中国宾客 5:国外宾客 |
maxOccupancy | 最大可入住人数 | int | Y | 默认值:2 |
freeChildrenCounts | 可免费入住儿童数 | int | N | |
areaRange | 物理房型面积范围 | String | N | 格式:数值1[-数值2] 数值2>数值1 |
floorRange | 楼层范围 | String | N | 格式:数值1[-数值2] 数值2>数值1 |
hasWindow | 是否有窗 | int | N | 0:无窗 1:部分有窗 2:有窗 3:不确定 |
hasNonSmokeRoom | 是否有无烟房 | int | N | 1:是 0:否 |
hasSmokeCleanRoom | 是否可无烟处理 | int | N | 1:是 0:否 |
noNonSmokeRoom 无 | 法安排无烟 | int | N | 1:是 0:否 |
notAllowSmoking | 不可吸烟 | int | N | 1:是 0:否 |
area | 房型面积 | String | N | 物理房型面积 |
wifi | Wifi | String | Y | 关联 收费类型枚举表 |
broadband | 宽带类型 | String | Y | 关联 收费类型枚举表 |
checkinTime | 办理入住时间 | String | N | 格式: HH:MM |
arrivalTimeFrom | 起始时间 | String | N | 到店时间范围 格式: HH:MM |
arrivalTimeEnd | 截止时间 | String | N | 到店时间范围 格式: HH:MM |
checkoutTime | 办理退房时间 | String | N | 格式: HH:MM |
roomType | 物理房型信息 | Object | N | 关联 物理房型 |
bedInfo | 床型信息 | Object | Y | 关联 床型信息 |
mealInfo | 餐食信息 | Object | Y | 关联 餐食信息 |
guaranteeRules | 担保规则 | Object | N | 关联 担保规则 此担保规则用于现付 |
refund | 取消规则 | Object | Y | 关联 取消规则 1. 若未包含取消规则属性,则默认为该价格计划一旦预订则不可取消 2. NonRefundableRangs的优先级高于CancellationPolicyRules |
hoursRooms | 钟点房 | Object | N | 关联 钟点房 channel为5时 |
surcharges | 附加费用 | Array | N | 关联 附加费用 信息需要展示在用户的预订提示中 |
remarks | 备注信息 | Array | N | 关联 备注信息 备注信息中的内容会展示在用户的预订提示中,收费项目优先展示 |
optionRules | 可选服务 | Array | N | 关联 可选服务 可选服务一般为酒店提供的附加服务,用户可以选择消费,内容会展示在用户的预订提示中 |
promotionRules | 促销规则 | Array | N | 关联 促销规则 |
extras | 额外信息 | Array | N | 关联 额外信息 预订时必须的且未在接口中提供定义的字段,可保存在extra中 |
收费类型枚举表
收费类型 | 描述 |
---|---|
FREE | 免费 |
CHARGES | 收费 |
PART_CHARGE | 部分收费 |
PART_FREE | 部分有且免费 |
NONE | 无此服务 |
UNKNOWN | 未知,不确定 |
物理房型
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
roomCode | 房型编码 | String | N | |
roomName | 房型名称 | String | N | |
supplierId | 供应商编号 | String | N |
床型信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
relation | 床型之间的关系 | String | N | AND:多种床型共存 OR:多种床型可选 |
beds | Array | N | 关联 床型关系 |
床型关系
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 床型序号 | int | Y | |
bedCode | 床型编码 | String | Y | 关联 床型编码枚举表 |
counts | 床数量 | int | Y | counts=99时,页面展示时只取的description的内容。 |
bedSize | 床型尺寸 | String | N | |
description | 描述信息 | String | Y |
床型编码枚举表
床型编码 | 描述 |
---|---|
SINGLE | 单床 |
TWIN | 双床 |
DOUBLE | 双人床 |
QUEEN | 大床 |
KING | 特大床 |
BABYBED | 婴儿床 |
ROUNDBED | 圆床 |
WATERBED | 水床 |
SOFABED | 沙发床 |
SPLICINGBED | 拼接床 |
FOLDINGBED | 折叠床 |
DORMIROTYDEDS | 床位 |
TATAMI | 榻榻米床位 |
FULL | 大/单/双 |
OTHER | 其他 当类型为其他时,页面展示desription中的内容 |
UNKNOWN | 不确定 |
餐食信息
节点 | 属性 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|---|
breakfast | counts | 早餐 | String | Y | 每日用餐人数 入住多晚时,以 “|” 分隔,数量与fromDate/toDate相对应。 “2|0|1” ,第一天双早,第二天不含早,第三天单早 |
breakfast | description | 描述信息 | String | N | |
lunch | counts | 午餐 | String | Y | 每日用餐人数 入住多晚时,以 “|” 分隔,数量与fromDate/toDate相对应。“2|0|1” ,第一天双早,第二天不含早,第三天单早。 取值范围为counts>=0且counts<=99,counts=99时,只展示描述信息 |
lunch | description | 描述信息 | String | N | |
dinner | counts | 晚餐 | String | Y | 每日用餐人数 入住多晚时,以 “|” 分隔,数量与fromDate/toDate相对应。 “2|0|1” ,第一天双晚餐,第二天不含晚餐,第三天单人晚餐。 |
dinner | description | 描述信息 | String | N |
担保规则
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
mode | 担保模式 | int | Y | 0:用户在酒店频道担保 1:用户在第三方担保 |
guaranteeRule | 担保规则详情 | Array | N | 关联 担保规则详情 |
担保规则详情
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
arriveStartTime | 到店时间担保开始的时间 | String | N | 用户选择最晚到店时间大于该时间需要担保,HH:MM |
arriveEndTime | 到店时间担保结束的时间 | String | N | 用户选择最晚到店时间小于该时间需要担保(超时担保会用到),HH:MM |
count | 需要担保的最小房间数 | int | N | 用户选择房间数大于等于这个该数字需要担保(用于超量担保) |
description | 描述信息 | String | N | |
priority | 优先级 | String | Y | 从1开始 |
rule | Object | N | 关联 担保规则详情信息 |
担保规则详情信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
guaranteeType | 担保类型 | String | Y | 关联 担保类型枚举表 |
value | 担保值 | String | N | 百分比/金额 |
changeType | 担保变更类型 | int | Y | 0:不可变更取消 1:允许变更取消,需在入住当日24点前hours小时变更取消 2:允许变更取消,需在入住当日最晚到店时间前hours小时变更取消。 3:允许变更取消,需在date日time之前变更取消。 |
hours | 小时数 | int | N | |
time | 时间 | String | N | 格式:HH:MM |
date | 日期 | Date | N | 格式:YYYY-MM-DD |
担保类型枚举表
担保类型 | 描述 |
---|---|
ALL_GUARANTEE | 全额担保 |
FIRST_NIGHT_GUARANTEE | 首晚担保 |
PERCENTAGE_GUARANTEE | 按总价的百分比担保 |
AMOUNT_ GUARANTEE | 按固定金额担保 |
取消规则
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
retunable | 是否可以取消 | String | Y | “true”: 可以取消,且须按如下规则取消 “false”:不可取消 |
timeZone | 时区 | String | N | |
cancellationPolicyRules | 规则详情 | Array | N | 关联 取消规则详情 |
nonRefundableRanges | 取消范围 | Array | N | 关联 不可取消范围 |
取消规则详情
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
type | 取消规则类型 | String | Y | 关联 取消规则枚举表 |
beforeHours | 取消时间距离入住当日24点的小时数 | int | Y | 例如:fromDate为2017-10-21,beforeHours=32,则时间为2017-10-20 |
value | 罚金数值 | String | N | 取消所需扣减的数值 |
不可取消范围
节点 | 属性 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
startDate | 不可取消开始日期 | Date | Y | 格式:YYYY-MM-DD 如:2017-10-18 |
endDate | 不可取消截止日期 | Date | Y | 格式:YYYY-MM-DD 如:2017-10-18 |
取消规则枚举表
规则类型 | 描述 |
---|---|
NO_PENALTY | 无罚金 |
PERCENTAGE_PENALTY | 按总价的百分比扣减 |
AMOUNT_PENALTY | 按固定金额扣减 |
FIRST_NIGHT_PENALTY | 扣除首晚 |
钟点房
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
saleTimeBegin | 最早到店时间 | String | N | 格式:HH:MM |
saleTimeEnd | 最晚到店时间 | String | N | 格式:HH:MM |
saleTimeQuantity | 售卖小时数 | int | N |
附加费用
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
payType | 收费类型 | int | Y | 0:预付 1:现付 |
chargeUnit | 收费单元 | String | Y | PerNight每晚 PerRoom_PerNight每间房每晚 PerRoom每间房 PerAdult_PerBooking每单每成人 PerAdult_PerNight每成人每晚 PerChild_PerBooking每单每儿童 PerChild_PerNight每儿童每晚 PerPerson_PerBooking每单每人 PerPerson_PerNight每人每晚 |
price | 价格 | String | Y | |
description | 描述 | String | Y | 附加费用描述 |
备注信息
节点名称 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 序号 | int | Y | |
description | 描述 | String | Y | 描述信息 |
可选服务
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
inRoomRate | 是否包含在房价中 | String | Y | true/false |
type | 服务类型 | String | Y | AddBed加床 AddBreakfast加早 highSpeedNetwork专享网络 LaundryService洗衣服务 ShuttleService接送机服务 |
chargeUnit | 收费单元 | String | Y | PerItem每次/每件/每个 PerPerson每人次 PerTime每次 PerHour每小时 PerDay每天 |
price | 服务价格 | String | Y | 价格为0时,提示信息需为免费,例如:可免费加床 |
促销规则(见附录)
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
type | 促销类型 | String | Y | 关联 促销类型枚举表 |
promotionUnit | 单位 | String | N | DAY:提前xx天 HOUR:提前xx小时 默认:DAY |
value | 与code相关的值 | String | N | 与type对应, 例如:若type为返现,则为每天返现金额 10|20 |
promotionPrice | 促销金额 | String | N | 用于记录供应商的每日促销金额,多天以“|” 分隔 |
description | 描述 | String | Y | 描述信息 |
促销规则类型枚举表
促销类型 | 描述 |
---|---|
Last | 关联连住优惠 例如:连住3天优惠 |
Last_EQ | 关联限时优惠 |
Advence | 关联提前预订优惠 |
MaxStay | 关联最多连住天数 |
MinRoomCount | 关联最少预订房间数 |
MaxRoomCount | 关联最多预订房间数 |
CashBack | 关联返现 |
ImmediatelyReduced | 关联立减 |
CheckoutDelay | 关联延时退房 |
FreeUpgrade | 关联免费升级 |
FreeShuttle | 关联免费接送机 |
Gift | 关联大礼包 |
Others | 关联其他 此时以描述信息为准 |
TonightSale | 关联今夜甩卖 |
额外信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
key | 关键字 | String | Y | |
value | 值 | String | Y |
3.7.5输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
jdOrderId | 京东订单号 | String | Y | 京东订单ID |
supplierOrderId | 供应商订单号 | String | Y | 供应商订单ID |
bookingResult | 预订结果 | String | Y | SUCCESS: 预订成功 FAILURE: 预订失败 |
confirmationNumber | 确认号 | String | N | 可以作为入住凭证 |
errorMessage | 错误节点 | Object | N | 关联 错误节点 bookingResult= FAILURE时不为空 |
duplicatedOrderId | 供应商已存在订单号 | String | N | 如果错误码是重复订单,需要传此字段(供应商侧订单ID) |
extras | 附加信息 | Array | N | 关联附加信息 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | N | 1:无房 2:价格错误/变价 3:重复订单 4:其他 |
desc | 错误描述 | String | N |
附加信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
key | 关键字 | String | N | |
value | 值 | String | N |
3.7.6输入示例
https://{host}/rest?method=hotel.occupy
request Body:
data={
"supplierHotelId":"1000",
"checkin":"2017-09-10",
"checkout":"2017-09-12",
"totalPrice":"600",
"currencyCode":"CNY",
"specialRemark":"1,2,3",
"arriveTime":"11:30",
"roomCounts":2,
"instantConfirm":0,
"ratePlans":[
{
"id":"19291",
"name":"希尔顿豪华(含早)",
"ratePlanType":1,
"isHourRoom":1,
"channels":"1|2|3|4|5",
"memberLevel":"1|2",
"receiptType":0,
"payType":0,
"averagePrices":"100|120|113|115|111",
"averageRoomRates":"99|100|110|110|100",
"averageTaxAndFee":"1|20|3|5|11",
"roomStatus":"Available|Disable|Available|Available|Available",
"roomLimits":"1|2|3|2|2",
"reservedRoomLimits":"2|3|4|4|5",
"immediately":0,
"customerType":0,
"broadband":"FREE",
"wifi":"FREE",
"maxOccupancy":2,
"freeChildrenCounts":0,
"areaRange":"30.3-40",
"floorRange":"2-5",
"hasWindow":0,
"hasNonSmokeRoom":0,
"hasSmokeCleanRoom":0,
"noNonSmokeRoom":1,
"notAllowSmoking":1,
"area":"20",
"arrivalTimeFrom":"2017-10-01 14:00:00",
"arrivalTimeEnd":"2017-10-01 16:00:00",
"checkinTime":"14:00",
"checkoutTime":"15:00",
"salesGuideType":0,
"salesGuidePrice":"150",
"salesGuideRoomRates":"150|160|160|160|160",
"salesGuideTaxAndFee":"0|0|0|0|0",
"roomType":{
"roomCode":"110",
"roomName":"大床房",
"supplierId":"JD0309650572"
},
"guaranteeRules":{
"mode":0,
"guaranteeRule":[
{
"priority":1,
"arriveStartTime":"",
"arriveEndTime":"",
"count":2,
"rule":{
"changeType":1,
"value":"",
"guaranteeType":"ALL_GUARANTEE",
"date":"",
"time":"",
"hours":"25"
},
"description":""
}
]
},
"bedInfo":{
"relation":"OR",
"beds":[
{
"seq":1,
"bedCode":"SINGLE",
"counts":1,
"bedSize":"1.5*2.0",
"description":"1.5*2.0大床"
}
]
},
"mealInfo":{
"breakfast":{
"counts":"0|0|0|0|0",
"description":"含早"
},
"lunch":{
"counts":"0|0|0|0|0",
"description":"午餐"
},
"dinner":{
"counts":"0|0|0|0|0",
"description":""
}
},
"refund":{
"returnable":"true",
"timeZone":"GMT+8",
"cancellationPolicyRules":[
{
"beforeHours":32,
"type":"AMOUNT_PENALTY",
"value":"100"
}
],
"nonRefundableRangs":[
{
"startDate":"2017-10-18",
"endDate":"2017-10-18"
}
]
},
"surcharges":[
{
"payType":1,
"chargeUnit":"PerNight",
"price":"22",
"description":"附加信息描述"
}
],
"remarks":[
{
"seq":1,
"description":"备注信息描述"
}
],
"optionRules":[
{
"type":"AddBed",
"inRoomRate":"true",
"price":"99",
"chargeUnit":"PerItem",
"description":"可选服务描述"
}
],
"promotionRules":[
{
"type":"MaxStay",
"value":"0|0|0|0|0",
"promotionUnit":"ImmediatelyReduced",
"promotionPrice":"10|10",
"description":"促销信息描述"
}
],
"extras":[
{
"key":"key",
"value":"value"
}
],
"hoursRooms":{
"saleTimeBegin":"17:00",
"saleTimeEnd":"20:00",
"saleTimeQuantity":5
}
}
],
"customerInfo":[
{
"seq":0,
"numberOfAdults":4,
"numberOfchildren":10,
"childrenAges":"1",
"customer":[
{
"firstName":"东",
"lastName":"京",
"nationality":"中国",
"gender":"female"
}
]
}
],
"cardInfo":{
"name":"京东",
"firstName":"东",
"lastName":"京",
"phone":"13800138000",
"certificateType":0,
"certificateNumber":"1001030303020202",
"cardNumber":"6226656799900099",
"year":"2020",
"month":"10",
"safetyCode":"KK00LL",
"type":"VISA"
},
"orderInfo":{
"jdOrderId":"9999999999",
"jdOrderStatus":"已支付",
"jdHotelId":"1000",
"orderDate":"2017-09-0612: 00: 00",
"contactName":"京东",
"contactPhone":"400-606-5500",
"contactEmail":"order@jd.com"
},
"invoiceInfo":{
"invoiceType":"Paper",
"titleType":"Personally",
"title":"京东",
"itin":"22226666",
"itemName":"代订房费",
"amount":"100",
"address":"京东大厦",
"postal":"100020",
"addressee":"京东",
"phone":"4006067733",
"email":"jd@jd.com",
"isNeedRelationOrder":1
},
"extras":[
{
"key":"key",
"value":"value"
}
]
}
3.7.7输出示例
{
"code": 200,
"msg": "成功",
"data": {
"jdOrderId": "9999999999",
"supplierOrderId": "YL-99999",
"bookingResult": "FAILURE",
"confirmationNumber": "",
"duplicatedOrderId": "YL-99999",
"errorMessage": {
"code": 1,
"desc": "无房,请重新预定"
},
"extra": {
"key": "",
"value": ""
}
}
}
3.8订单取消API
3.8.1方法名称
hotel.cancelOccupy
3.8.2 HTTP方法
GET
3.8.3接口描述
当客户取消预订订单时,京东将会调用这个API进行订单取消操作。
3.8.4输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
jdOrderId | 京东订单号 | String | Y | |
supplierOrderId | 供应商订单号 | String | Y | |
reason | 取消原因 | String | N | |
extra | 附加信息 | Object | N |
附加信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
key | 关键字 | String | N | |
value | 值 | String | N |
3.8.5输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
jdOrderId | 京东订单号 | String | Y | 京东订单ID |
supplierOrderId | 供应商订单号 | String | Y | 供应商订单ID |
cancelResult | 取消结果 | String | Y | SUCCESS: 取消成功 FAILURE: 取消失败 |
errorMessage | 错误节点 | Object | N | 关联 错误节点 cancelResult=FAILURE时不为空 |
extra | 附加信息 | Array | N |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | N | 1:无此订单 2:系统忙稍后重试 3:其他 |
desc | 错误描述 | String | N |
附加信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
key | 关键字 | String | N | |
value | 值 | String | N |
3.8.6输入示例
https://{host}/rest?method=hotel.cancelOccupy&data=
{
"jdOrderId": "9999999999",
"supplierOrderId": "YL-99999",
"reason": "取消原因",
"extra":
{
"key": "cancelDebitPrice"(取消时扣款金额),
"value": "985.0"(金额数值)
}
}
3.8.7输出示例
{
"code":200,
"msg":"成功",
"data":{
"jdOrderId":"9999999999",
"supplierOrderId":"YL-99999",
"cancelResult":"FAILURE",
"errorMessage":{
"code":3,
"desc":"超过取消时间"
},
"extra":[
{
"key":"",
"value":""
}
]
}
}
3.9订单查询API
3.9.1方法名称
hotel.queryOrder
3.9.2 HTTP方法
GET
3.9.3接口描述
此接口供应商提供预订细节查询,包括订单状态、房间价格和房间信息等,与此订单相关的所有订单信息。需支持京东订单号或供应商订单号来查询。
3.9.4输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
jdOrderId | 京东订单号 | String | Y | |
supplierOrderId | 供应商订单号 | String | Y | |
supplierHotelId | 供应商酒店ID | String | N | |
bookingDate | 下单时间 | Date | N | 格式:YYYY-MM-DD hh:mm:ss |
checkin | 入店时间 | Date | N | 格式:YYYY-MM-DD |
checkout | 离店时间 | Date | N | 格式:YYYY-MM-DD |
contactInfo | 联系人 | Object | N | 关联 联系人信息 |
extra | 附加信息 | Object | N | 关联 附加信息 |
联系人信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
firstName | 名 | String | N | |
lastName | 姓 | String | N |
附加信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
key | 关键字 | String | N | |
value | 值 | String | N |
3.9.5输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
jdOrderId | 京东订单号 | String | Y | 京东订单ID |
supplierOrderId | 供应商订单号 | String | Y | 供应商订单ID |
supplierOrderStatus | 预订结果 | String | Y | 关联 订单状态枚举表 |
confirmationNumber | 确认号 | String | N | |
supplierHotelId | 供应商酒店ID | String | N | |
bookingDate | 下单时间 | Date | N | 格式:YYYY-MM-DD hh:mm:ss |
checkin | 入店时间 | Date | N | 格式:YYYY-MM-DD |
checkout | 离店时间 | Date | N | 格式:YYYY-MM-DD |
queryResult | 预订结果 | String | Y | SUCCESS: 查询成功 FAILURE: 查询失败 |
errorMessage | 错误节点 | Object | N | 关联 错误节点 cancelResult= FAILURE时不为空 |
customerInfo | 住客信息 | Array | N | 关联 住客信息 |
contactInfo | 联系人 | Object | N | 关联 联系人信息 |
totalPrice | 订单总价 | String | N | |
shopPayInfo | 现付信息 | Array | N | 关联 现付信息 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | N | 1:无此订单 2:其他 |
desc | 错误描述 | String | N |
住客信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 房间序号 | int | N | |
numberOfAdults | 成人数 | int | N | |
numberOfchildren | 儿童数 | int | N | |
childrenAges | 儿童年龄 | String | Y | 可包含多个儿童,用“|” 分隔。 例如:如“1|12” ,含义是两个儿童,一名1岁,一名12岁 |
customer | 住客详情 | Object | Y | 关联 住客详情 每个房间至少包含一个住客姓名 |
住客详情
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
firstName | 住客名 | String | Y | |
lastName | 住客姓 | String | Y | |
gender | 性别 | String | N | 女:"female" 男:"male" |
nationality | 国籍 | String | N |
联系人信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
firstName | 名 | String | N | |
lastName | 姓 | String | N |
现付信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 与customerInfo@seq相对应 | int | Y | |
actualRoomNo | 入住房间号 | String | N | |
confirmationNo | 确认号 | String | Y | |
confirmationStatus | 确认状态 | String | N | 关联 订单状态枚举表 |
actualCheckout | 实际离店日期 | Date | Y |
订单状态枚举表
订单状态 | 说明 |
---|---|
CONFIRM_PENDING | 待确认 |
CONFIRMED_SUCCESS | 确认成功 |
CONFIRMED_FAILURE | 确认失败 |
CANCELED | 取消成功 |
CANCELED_PENDING | 取消中 |
CANCELED_FAILURE | 取消失败 |
NO_SHOW | 未入住 |
CHECKED_IN | 已入住 |
CHECKED_OUT | 已离店 |
EARLY_CHECKED_OUT | 提前离店 |
3.9.6输入示例
https://{host}/rest?method=hotel.queryOrder&data=
{
"jdOrderId": "9999999999",
"supplierOrderId": "YL-99999",
"hotelId": "1000",
"bookingDate": "",
"checkin": "",
"checkout": "",
"contactInfo": {
"firstName": "东",
"lastName": "京"
},
"extra": {
"key": "",
"value": ""
}
}
3.9.7输出示例
{
"code": 200,
"msg": "成功",
"data": {
"jdOrderId": "9999999999",
"supplierOrderId": "YL-99999",
"supplierOrderStatus": "CONFIRM_PENDING",
"confirmationNumber": "",
"totalPrice": "600",
"hotelId": "1000",
"bookingDate": "",
"checkin": "",
"checkout": "",
"customerInfo": [
{
"seq": 0,
"numberOfAdults": 4,
"numberOfchildren": 10,
"childrenAges": "1",
"customer": [
{
"firstName": "东",
"lastName": "京",
"nationality": "中国",
"gender": "female"
}
]
}
],
"contactInfo": {
"firstName": "东",
"lastName": "京"
},
"shopPayInfo": [
{
"seq": 0,
"actualRoomNo": "201",
"confirmationNo": "",
"confirmationStatus": "CONFIRM_PENDDING",
"actualCheckout": "2017-10-01"
}
],
"queryResult": "FAILURE",
"errorMessage": {
"code": 3,
"desc": "超过取消时间"
}
}
}
四.附录
4.1状态码表
状态码枚举表
状态码 | 含义 |
---|---|
200 | 成功 |
500 | 服务器异常 |
1001 | AppId为空 |
1002 | 酒店不存在 |
1003 | 参数错误 |
1004 | 必填项为空 |
1005 | 时间戳为空 |
1006 | 数字签名为空 |
1007 | 数字签名错误 |
1008 | AppId不存在 |
1009 | 预存金额不足 |
4.2币种
代码 | 描述 |
---|---|
CNY | 人民币 |
4.3促销
1.连住优惠
type | 促销类型 | Last |
---|---|---|
promotionUnit | 单位 | DAY:连住xx天 |
value | 与code相关的值 | 需要连住的天数N 例如:3,则连住3天以上享受此优惠 |
promotionPrice | 促销金额 | 供应商每天优惠的金额,与fromDate/toDate相对应,多天用“|” 分隔。 例如: 10|10|10 ,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示 |
2.限时优惠
type | 促销类型 | Last_EQ |
---|---|---|
promotionUnit | 单位 | |
value | 与code相关的值 | |
promotionPrice | 促销金额 | 每天优惠的金额,与fromDate/toDate相对应,多天用“|” 分隔。 例如: 10|10|10 ,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示。 当前时段不符合限时优惠时,供应商需要对报价进行过滤 |
3.提前预定优惠
type | 促销类型 | Advance |
---|---|---|
promotionUnit | 单位 | DAY:提前xx天 HOUR:提前XX小时,以入住日24点为准 例如:DAY |
value | 与code相关的值 | 需要提前的天数或者小时数N 例如:3,则提前3天预定以上享受此优惠 |
promotionPrice | 促销金额 | 预定时间内每天优惠的金额,与fromDate/toDate相对应,多天用“|” 分隔。 例如: 10|10|10 ,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示 |
4.最多连住天数
type | 促销类型 | MaxStay |
---|---|---|
promotionUnit | 单位 | DAY:最多连住xx天 |
value | 与code相关的值 | 最多连住天数N 例如:3,则用户最多可以预定3天 |
promotionPrice | 促销金额 | 预定时间内每天优惠的金额,与fromDate/toDate相对应,多天用“|” 分隔。 例如: 10|10|10 ,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示 |
5.最少预订房间数
type | 促销类型 | MinRoomCount |
---|---|---|
promotionUnit | 单位 | |
value | 与code相关的值 | 最小预定间数N 例如:3,则用户最少预定3间可以享受优惠价格 |
promotionPrice | 促销金额 | 预定日期内每天优惠的金额,与fromDate/toDate相对应,多天用“|” 分隔。 例如: 10|10|10 ,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示 |
6.最多预订房间数
type | 促销类型 | MaxRoomCount |
---|---|---|
promotionUnit | 单位 | |
value | 与code相关的值 | 最大预定间数N 例如:3,则用户最多预定3间 |
promotionPrice | 促销金额 | 预定日期内每天优惠的金额,与fromDate/toDate相对应,多天用“|” 分隔。 例如: 10|10|10 ,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示 |
7.返现
type | 促销类型 | CashBack |
---|---|---|
promotionUnit | 单位 | |
value | 与code相关的值 | |
promotionPrice | 促销金额 | 预定日期内每天返现的金额,与fromDate/toDate相对应,多天用“|” 分隔。例如: 10|10|10 ,则每日返现10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示。 注:当前时间段不在优惠时段时,供应商需要将报价过滤掉 |
8.立减
type | 促销类型 | ImmediatelyReduced |
---|---|---|
promotionUnit | 单位 | |
value | 与code相关的值 | |
promotionPrice | 促销金额 | 预定日期内每天立减的金额,与fromDate/toDate相对应,多天用“|” 分隔。 例如: 10|10|10 ,则每日立减10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示。 注:当前时间段不在优惠时段时,供应商需要将报价过滤掉 |
9.延时退房、免费升级、免费接送机、大礼包、其他
type | 促销类型 | CheckoutDelay FreeUpgrade FreeShuttle Gift Others |
---|---|---|
promotionUnit | 单位 | |
value | 与code相关的值 | |
promotionPrice | 促销金额 |
10.今夜甩卖
type | 促销类型 | TonightSale |
---|---|---|
promotionUnit | 单位 | |
value | 与code相关的值 | |
promotionPrice | 促销金额 | 预定日期内每天优惠的金额,与fromDate/toDate相对应,多天用“|” 分隔。 例如: 10|10|10 ,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示。 注:当前时间段不在优惠时段时,供应商需要将报价过滤掉 |
4.4加密方法
/**
* MD5 哈希运算
*
* @param input
* 待计算MD5哈希值的输入字符串
* @param charset
* 输入字符串的字符集
* @return 输入字符串的MD5哈希值
*/
public static String getMD5(String input, String charset) {
String s = null;
char hexDigits[] = { //用来将字节转换成 16 进制表示的字符
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c',
'd',
'e', 'f'};
try {
java.security.MessageDigest md =java.security.MessageDigest.getInstance("MD5");
md.update(input.getBytes(charset));
byte tmp[] = md.digest(); //MD5 的计算结果是一个 128 位的长整数,用字节表示就是 16 个字节
char str[] = new char[16 * 2]; //每个字节用 16 进制表示的话,使用两个字符,所以表示成 16
// 进制需要 32 个字符
int k = 0; // 表示转换结果中对应的字符位置
for (int i = 0; i < 16; i++) { //从第一个字节开始,对 MD5 的每一个字节转换成 16
// 进制字符的转换
byte byte0 = tmp[i]; //取第 i 个字节
str[k++] = hexDigits[byte0 >>> 4 & 0xf]; //取字节中高 4位的数字转换,
// >>>
// 为逻辑右移,将符号位一起右移
str[k++] = hexDigits[byte0 & 0xf]; //取字节中低 4 位的数字转换
}
s = new String(str); //换后的结果转换为字符串
} catch (Exception e) {
e.printStackTrace();
}
return s;
}