- 文档管理信息表
主题: | 京东酒店标准接口接入开发指南 |
---|---|
文档版本: | V2.0 |
内容: | 京东国内酒店OpenApi技术接入说明文档 |
提交时间: | 2017-08-25 |
修改时间: | 2019-11-14 |
创建人: | 曹进保 |
- 文档修改记录表
修改人 | 版本号 | 修改时间 | 修改内容 | 修改原因 |
---|---|---|---|---|
曹进保 | V1.0 | 2017-08-25 | 新建文档,编写公共协议和接口定义 | |
曹进保 | V1.1 | 2017-08-28 | 价格计划、下单、取消、查询 | |
曹进保 | V1.1 | 2017-09-06 | 静态城市、静态酒店、增量城市和酒店 | |
曹进保 | V1.3 | 2017-10-17 | 3.7 章节chenkin、chenkout修改为checkin\checkout并完善输出实例
3.11.4 住客信息numberOfAdult、numberOfchilder类型修改为int 3.7、3.9 deforeHours修改为beforeHours 3.2 增加row 响应条数 |
|
曹进保 | V1.4 | 2017-10-26 | 删除 3.6全量价格API与3.8变价推送API,将实时价格API更名为价格API3.3
data
修改为对象 新增 错误编码3.4 3.5新增 bedInfo对象 3.6、3.7修改 发票类型、宾客类型 新增 物理房型面积范围、楼层范围、是否有窗、是否有无烟房、是否可无烟处理、无法安排无烟、不可吸烟 是否是钟点房 3.7 订单信息删除 支付方式 发票信息 新增 收件人、电话、邮箱 extra修改为extras 3.9 住客信息 删除 currencyCode 价格实时获取,不再采用落地方案 |
|
曹进保 | V1.5 | 2017-11-11 | 3.6、3.7 新增arrivalTimeFrom、arrivalTimeEnd、修改担保规则、HH:MM修改为字符串3.7 cardInfo节点新增 持卡人银行预留电话、持卡人证件类型、 持卡人证件号码修改所有章节输入示例 附录 增加 生成数字签名 | |
曹进保 | V1.6 | 2017-11-20 | 3.6、3.7 担保规则变化 3.7 发票增加邮编、卡类型说明表 增加发票内容 、请求方式改为POST 附录 增加 币种 | |
曹进保 | V1.7 | 2017-12-27 | 删除 增量推送密钥的验证,增加黑白名单 | |
曹进保 | V1.8 | 2018-02-26 | 3.7发票节点,发票内容修改为字符串 | |
曹进保 | V1.8 | 2018-02-26 | 3.2 入参修改为单个城市 | |
曹进保 | V1.9 | 2018-05-25 | 3.6、3.7促销规则类型映射表 MaxRoomConut修改为MaxRoomCount | |
曹进保 | V1.9 | 2018-06-06 | 3.7是否立即确认 immediately修改为 1:可立即确认 0:不可立即确认 hasNonSmokeRoom hasSmokeCleanRoom、noNonSmokeRoom、notAllowSmoking 修改为 1:是 0:否 |
|
曹进保 | V1.9 | 2018-07-03 | 3.7发票节点,邮编可为空 | |
曹进保 | V1.9 | 2018-07-03 | 附录 状态码表 增加 1009: 预存金额不足 | |
曹进保 | V1.9 | 2018-08-20 | 附录 促销 | |
曹进保 | V1.9 | 2018-11-21 | 新增 HTTP方法说明,新增安全校验规则 | |
李斌 | V1.9 | 2018-11-30 | 交易相关(查单返回customer和下单入参)说明和示例修改 | |
王晓成 | V2.0 | 2019-11-14 | 3.4房型信息接口、3.5房型信息增量接口 增加映射字段 | |
曹进保 | V2.0 | 2021-03-19 | 3.7下单API 住客详情3.7.3 新增 identityCard字段 | |
李阳 | V2.0 | 2021-11-26 | 3.6价格API 3.6.5 价格计划输出参数Extra对象 标记是否需要提供身份证信息 |
国内酒店预发环境测试地址:https://hotelm-yf.jd.com
一. 接口公共协议
接口采用HTTP的GET方式请求。输入和输出参数都采用UTF-8编码。发送的请求体数据部分(即data参数)需要进行URLEncode处理。
1.1 京东侧接口
接口域名:
1. 测试环境:`https://test.jd.com`
2. 生产环境:`https://xxx.jd.com`
下述公共参数和公共返回结果规范主要是针对供应商请求京东的接口,对于京东请求供应商的接口则 不需要参照。上线前需要加入调用方IP到京东白名单,测试环境不需要。
1.1.1 公共请求参数
酒店信息API
名称 | 类型 | 说明 |
---|---|---|
appId | String | 供应商应用id,由京东酒店提供 |
调用示例:
https://{host}/xxx?appId={appId}
1.1.2 公共响应参数
名称 | 类型 | 说明 |
---|---|---|
code | int | 返回状态码 |
msg | String | 结果描述 |
data | String | 各接口具体需要返回业务数据,json格式 |
返回值示例:
{
"code": 200,
"msg": "成功",
"data": {
"hotelId": 1110,
"roomCode": "001"
}
}
1.2 供应商侧接口
供应商接口域名:
- 测试环境:
https://xxx.xxx.com
- 生产环境:
https://xxx.xxx.com
下述公共参数和公共返回结果规范主要是针对京东请求供应商接口,保证通信过程中数据安全及调用 身份安全需增加安全方法校验。
1.2.1 公共请求参数
名称 | 类型 | 说明 |
---|---|---|
accountId | String | 供应商定义,上线前需明确此字段,接入时通过申请获取 |
timeStamp | String | 时间戳 |
sign | String | 加密的串 生成方法:getMD5(参数+timestamp+secretKey(申请获取)) 参数说明: 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 | int | 返回状态码 |
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,通过此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获取供应商酒店静态信息(归属城市、名称、地址、坐标、电话等),京东定期调用该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 | 酒店ID | String | Y | |
mappingType | Mapping对象 | int | N | 1:艺龙 2:携程 3:Expiedia |
mappingHotelId | 映射ID | String | N | |
hotelNameCN | 酒店中文名 | String | Y | 国内及港澳台必须提供中文 |
hotelNameEN | 酒店英文名 | String | N | |
address | 酒店地址 | String | Y | |
longitude | 酒店经度 | String | Y | 腾讯地图 |
latitude | 酒店纬度 | String | Y | 腾讯地图 |
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 | 1:道旅 2:携程 3:Expiedia 4:艺龙 |
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": 2,
"mappingHotelId": "china",
"hotelNameCN": "汉庭酒店",
"hotelNameEN": "HTHT US",
"address": "北京通州区科创五街3号汉庭酒店",
"longitude": "116.5461000000",
"latitude": "39.8098300000",
"tel": "010-56351088",
"fax": "",
"webSite": "https://www.huazhu.com/Hanting",
"mappingList":[
{
"mappingType":1,
"mappingHotelId":"12345",
"mappingHotelName":"京东自营",
"mappingHotelAddress":"京东大厦"
}
]
}
]
}
]
}
3.3 酒店增量信息API
3.3.1 方法名称
测试地址: https://testhotel.jd.com/apiGateway/sip/pushGeoHotelList?appId={appId}
线上地址: 京东提供
3.3.2 HTTP 方法
POST
3.3.3 接口描述
京东提供此API,通过此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 | 1:道旅 2:携程 3:Expiedia 4:艺龙 |
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": 2,
"mappingHotelId": "china",
"hotelNameCN": "汉庭酒店",
"hotelNameEN": "HTHT US",
"address": "北京通州区科创五街3号汉庭酒店",
"longitude": "116.5461000000",
"latitude": "39.8098300000",
"tel": "010-56351088",
"fax": "",
"webSite": "https://www.huazhu.com/Hanting",
"mappingList":[
{
"mappingType":1,
"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获取供应商酒店房型静态信息(名称、床型等),京东定期调用该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 | 关联 床型信息 | |
roomMapping | 房型映射关系 | Array | N | 关联 房型映射信息(预计8月30号废弃) |
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 |
房型映射信息(预计8月30号废弃)
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
supplierName | 映射供应商名称 | String | Y | CTRIP:携程 EAN:expedia |
hotelId | 映射供应商酒店Code | String | Y | |
roomCode | 映射供应商房型Code | String | Y |
房型Mapping关系列表
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
mappingType | 与其他mapping关系 | int | Y | 1:道旅 2:携程 3:Expiedia 4:艺龙 |
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": ""
}
]
},
"roomMapping":[
{
"supplierName":"CTRIP",
"hotelId":"123",
"roomCode":"123"
},
{
"supplierName":"EAN",
"hotelId":"456",
"roomCode":"456"
}
],
"mappingList":[
{
"mappingType":1,
"mappingHotelId":"12345",
"mappingRoomId":"7896"
}
]
}
]
}
]
}
3.5 房型增量信息API
3.5.1 方法名称
测试地址:
https://testhotel.jd.com/apiGateway/sip/pushGeoRoomList?appId={appId}
线上地址: 京东提供
3.5.2 HTTP 方法
POST
3.5.3 接口描述
京东提供此API,通过此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 | Y | 0:修改 1:新增 2:删除 |
maxOccupancy | 最大入住人数 | String | Y | |
standardOccupancy | 标准入住人数 | Int | Y | |
wifi | Wifi | String | N | 关联 收费类型枚举表 |
brand | 宽带 | String | N | 关联 收费类型枚举表 |
smoking | 是否可吸烟 | String | N | true/false |
area | 面积 | String | N | |
window | 是否有窗 | int | N | 0:无窗 1:有窗 2:不确定 |
addBed | 加床 | int | N | 0:不可加床 1:可加床 2:不确定 |
bedInfo | 床型信息 | Object | 关联 床型信息 | |
roomMapping | 房型映射关系 | Array | N | 关联 房型映射信息(预计8月30号废弃) |
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 |
房型映射信息(预计8月30号废弃)
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
supplierName | 映射供应商名称 | String | Y | CTRIP:携程 EAN:expedia |
hotelId | 映射供应商酒店Code | String | Y | |
roomCode | 映射供应商房型Code | String | Y |
房型Mapping关系列表
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
mappingType | 与其他mapping关系 | int | Y | 1:道旅 2:携程 3:Expiedia 4:艺龙 |
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":""
}
]
},
"roomMapping":[
{
"supplierName":"CTRIP",
"hotelId":"123",
"roomCode":"123"
},
{
"supplierName":"EAN",
"hotelId":"456",
"roomCode":"456"
}
],
"mappingList":[
{
"mappingType":1,
"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 | 酒店ID列表 格式为:hotelId1,hotelId2,…,hotelIdN 每个hotelId是供应商酒店唯一标识,对应酒店静态信息API中的id,支持多个hotelId同时请求,以","分隔,最多20个 |
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 | 销售指导价 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应 |
salesGuideRoomRates | 销售指导房价 | String | N | 销售指导价 - 房价 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应 |
salesGuideTaxAndFee | 销售指导税费 | String | N | 销售指导价 - 税费 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应 |
roomStatus | 每晚房态 | String | Y | Available:可预订 Disable:不可预订 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。 例如:Available|Disable|Available, 第一天与第三天可以预订,第二天不可预订 |
roomLimits | 每晚房量 | String | Y | 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。 例如:2|1|2, 第一天与第三天可订房量为2间,第二天可订房量为1间。 |
reservedRoomLimits | 每晚保留房数量 | String | Y | 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。例如:2|1|2,第一天与第三天保留房数量为2间,第二天保留房数量为1间 |
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 |
checkoutTime | 办理退房时间 | String | N | 格式: HH:MM |
arrivalTimeFrom | 起始时间 | String | N | 到店时间范围 格式: YYYY-MM-DD hh:mm:ss |
arrivalTimeEnd | 截止时间 | String | N | 到店时间范围 格式: YYYY-MM-DD hh:mm:ss |
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的内容 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”,第一天双早,第二天不含早,第三天单早 |
description | 描述信息 | String | N | ||
lunch | counts | 午餐 | String | Y | 每日用餐人数 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。“2|0|1”,第一天双早,第二天不含早,第三天单早。取值范围为counts>=0且counts<=99,counts=99时,只展示描述信息 |
description | 描述信息 | String | N | ||
dinner | counts | 晚餐 | String | Y | 每日用餐人数 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。“2|0|1”,第一天双晚餐,第二天不含晚餐,第三天单人晚餐。取值范围为counts>=0且counts<=99,counts=99时,只展示描述信息 |
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 | 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 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时,提示信息需为免费, 例如:可免费加床 |
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 | 1) key: customerIdCard(下单时是否需要身份证信息) |
value | 值 | String | Y | 1) value: 0(不需要身份证);1(每个入住人都需要身份证) |
3.6.6 输入示例
https://{host}/rest?method=hotel.rp&data={"hotelIds":"100,200","checkin":"2017-09-01","checkout":"2017-09-06","channels":"1|2|3|4|5","ratePlanId":"JDXXXXXX","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": "customerIdCard",
"value": "1"
}
],
"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 | 下单对象 格式:data={下单入参JSON},详见示例 |
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
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:尽量安排相邻房间(订多间房时)多个用,连接 |
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 | |
identityCard | 身份证 | String | N | 解密方法 (见附录4.5) |
信用卡信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
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 | |
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 纳税人识别号/统一社会信用代码 |
itemName | 发票内容 | String | Y | 代订房费、 代订住宿费、 旅游服务费、 会议服务费、 住宿费、 旅游费、 其他 |
amount | 金额 | 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:供应商提供 |
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 | 销售指导价 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应 |
salesGuideRoomRates | 销售指导房价 | String | N | 销售指导价 - 房价 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应 |
salesGuideTaxAndFee | 销售指导税费 | String | N | 销售指导价 - 税费 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应 |
roomStatus | 每晚房态 | String | Y | Available:可预订 Disable:不可预订 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。 例如:Available|Disable|Available, 第一天与第三天可以预订,第二天不可预订 |
roomLimits | 每晚房量 | String | Y | 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。 例如:2|1|2, 第一天与第三天可订房量为2间,第二天可订房量为1间。 |
reservedRoomLimits | 每晚保留房数量 | String | Y | 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。例如:2|1|2,第一天与第三天保留房数量为2间,第二天保留房数量为1间 |
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 |
checkoutTime | 办理退房时间 | String | N | 格式: HH:MM |
arrivalTimeFrom | 起始时间 | String | N | 到店时间范围 格式: YYYY-MM-DD hh:mm:ss |
arrivalTimeEnd | 截止时间 | String | N | 到店时间范围 格式: YYYY-MM-DD hh:mm:ss |
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的内容 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”,第一天双早,第二天不含早,第三天单早 |
description | 描述信息 | String | N | ||
lunch | counts | 午餐 | String | Y | 每日用餐人数 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。“2|0|1”,第一天双早,第二天不含早,第三天单早。取值范围为counts>=0且counts<=99,counts=99时,只展示描述信息 |
description | 描述信息 | String | N | ||
dinner | counts | 晚餐 | String | Y | 每日用餐人数 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。“2|0|1”,第一天双晚餐,第二天不含晚餐,第三天单人晚餐。取值范围为counts>=0且counts<=99,counts=99时,只展示描述信息 |
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 | 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 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时,提示信息需为免费, 例如:可免费加床 |
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.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:其他 、 5:系统忙稍后重试 |
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",
"identityCard":"身份证"
}
]
}
],
"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":"xxx",
"value":"xxxxx"
}
]
}
3.7.7 输出示例
{
"code":200,
"msg":"成功",
"data":{
"jdOrderId":"9999999999",
"supplierOrderId":"YL-99999",
"bookingResult":"FAILURE",
"confirmationNumber":"",
"duplicatedOrderId":"YL-99999",
"errorMessage":{
"code":1,
"desc":"无房,请重新预定"
},
"extra":{
"key":"key",
"value":"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": "key",
"value": "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": "超过取消时间"
}
}
}
3.10酒店产品基本信息推送API
3.10.1 方法名称
测试地址:
https://hotel-openapi.jd.com/apiGateway/sip/push/ratePlanStaticPush
线上地址: 京东提供
3.10.2 HTTP 方法
POST
3.10.3 接口描述
京东提供此API,通过此API获供应商酒店产品基本信息,供应商调用该API推送更新的产品基本信息。
3.10.4 输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
appId | 供应商应用id | String | Y | 由京东酒店提供 |
data | 酒店产品基本信息 | Array | Y | (单次推送条数需小于等于30) 关联 产品基本信息 |
sessionId | 调用链编号 | String | Y | 单次调用唯一标志(可以设置为时间戳) |
产品基本信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
hotelId | 酒店编码 | string | Y | 酒店编码 |
roomTypeCode | 物理房型编码 | string | Y | 物理房型编码 |
roomTypeName | 物理房型名称 | string | N | 最大支持128个字符串 物理房型名称 |
ratePlanId | 产品房型code | string | Y | 产品房型code |
ratePlanName | 产品房型名称 | string | Y | 最大支持128个字符串 产品房型名称 |
payType | 支付方式 | integer | Y | 默认值 0; 支付方式 0:预付;1:现付; |
currencyCode | 币种 | String | Y | 币种 |
receiptType | 发票类型 | integer | Y | 默认值 2; 发票类型:0:京东提供;1:酒店提供;2:供应商提供 |
immediately | 立即确认 | integer | Y | 默认值 0; 立即确认:0:不可立即确认;1:可立即确认 |
customerType | 宾客类型 | integer | Y | 默认值 1; 宾客类型,1:中国大陆宾客;2:港澳宾客;3:台湾宾客;4:中国宾客;5:国外宾客 |
maxOccupancy | 最大可入住人数 | integer | Y | 默认值 2; 最大可入住人数 |
freeChildrenCounts | 可免费入住儿童数 | integer | N | 可免费入住儿童数 |
areaRange | 物理房型面积范围 | string | N | 物理房型面积范围 |
floorRange | 楼层范围 | string | N | 楼层范围 |
hasWindow | 是否有窗 | integer | N | 是否有窗:0:无窗;1:部分有窗;2:有窗;3:不确定 |
hasNonSmokeRoom | 是否有无烟房 | integer | N | 是否有无烟房1:是;0:否 |
hasSmokeCleanRoom | 是否可无烟处理 | integer | N | 是否可无烟处理1:是;0:否 |
noNonSmokeRoom | 无法安排无烟 | integer | N | 无法安排无烟1:是;0:否 |
notAllowSmoking | 不可吸烟 | integer | N | 不可吸烟1:是;0:否 |
area | 房型面积 | string | N | 房型面积 |
wifi | WiFi | string | Y | 默认值 UNKNOWN ;WiFi 关联 收费类型枚举表 |
broadband | 宽带 | string | Y | 默认值 UNKNOWN ;宽带 关联 收费类型枚举表 |
bedInfo | 床型信息 | Object | Y | Object 转换为JSON字符串,最大支持256个字符 关联 产品床型信息 |
refund | 取消规则 | Object | Y | Object 转换为JSON字符串,最大支持256个字符 关联
取消规则
1.若未包含取消规则属性,则默认为该价格计划一旦预订则不可取消。 |
surcharges | 附加费用 | Array | N | Array 转换为JSON字符串,最大支持512个字符 关联 附加费用 信息需要展示在用户的预订提示中 |
remarks | 备注信息 | Array | N | Array 转换为JSON字符串,最大支持512个字符 关联 备注信息 备注信息中的内容会展示在用户的预订提示中,收费项目优先展示 |
optionRules | 可选服务 | Array | N | Array 转换为JSON字符串,最大支持512个字符 关联 可选服务 可选服务一般为酒店提供的附加服务,用户可以选择消费,内容会展示在用户的预订提示中 |
promotionRules | 促销规则 | Array | N | Array 转换为JSON字符串,最大支持512个字符 关联 促销规则 |
beginBookDate | 开始预订日期 | string | Y | 开始预订日期 format = "yyyy-MM-dd" |
endBookDate | 结束预订日期 | string | Y | 结束预订日期 format = "yyyy-MM-dd" |
minBookHour | 最小提前预订小时数 | integer | Y | 最小提前预订小时数 |
maxBookHour | 最大提前预订小时数 | integer | Y | 最大提前预订小时数 |
minCheckInDay | 最小连续入住天数 | integer | Y | 最小连续入住天数 |
maxCheckInDay | 最大连续入住天数 | integer | Y | 最大连续入住天数 |
bookDesc | 预订策略说明 | string | N | 最大支持256个字符 预订策略说明 |
status | 状态标识 | integer | Y | 默认值 1; 状态标识,1:有效,0:无效 |
timestamp | 时间戳 | integer | Y | 时间戳-作为更新顺序及版本判断使用,需提供可判断数据更新版本数据 |
产品床型信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
relation | 床型之间的关系 | string | N | 床型之间的关系 AND:多种床型共存、OR:多种床型可选 |
beds | 床型信息 | array | N | 关联 床型信息 |
床型信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
seq | 床型序号 | integer | Y | 床型序号 |
bedCode | 床型编码 | string | Y | 床型编码 SINGLE:单人床;DOUBLE:双人床;BUNK:床位;TATAMI:榻榻米;ROUND_BED:圆床;BABY_COT:婴儿床;WATER_BED:水床;FOLDING_BED:折叠床;CONNECTED_BED:拼接床;UNKNOWN:不确定;OTHERS:其他床型 |
counts | 床数量 | integer | Y | 床数量 counts=99时,页面展示时只取的description的内容 |
bedSize | 床型尺寸 | string | Y | 床型尺寸 |
description | 描述信息 | string | N | 描述信息 与bedCode对应Value(OTHERS其他床型:若供应商传的description字段有值,则取供应商的description字段描述 |
取消规则
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
returnable | 是否可以取消 | String | Y | “true”: 可以取消,且须按如下规则取消 “false”:不可取消 |
timeZone | 时区 | String | N | |
cancellationPolicyRules | 规则详情 | Array | N | 关联 取消规则详情 |
3.10.5 输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
result | 推送结果 | String | Y | SUCCESS:处理成功 FAILURE:处理失败 |
errorMessage | 错误码节点 | Object | N | 关联 错误码节点 FAILURE 不为空 |
data | 错误信息描述 | Array | N | 关联 错误信息描述 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | Y | 见附录 状态码枚举表 |
desc | 错误描述 | String | N |
错误信息描述
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
fieldType | 错误类型 | String | Y | 如必填项,条数限制,枚举值不正确,字符串长度限制,数值范围不正确,数据类型错误等 |
location | 错误位置 | String | N | |
message | 错误具体信息 | String | N |
3.10.6 输入示例
{
"appId": "JD0207101658",
"sessionId": "1718333791349",
"data": [
{
"area": "28平方米",
"areaRange": "24",
"bedInfo": {
"beds": [
{
"bedCode": "SINGLE",
"bedSize": "1.8m",
"counts": 2,
"description": "",
"seq": 0
}
],
"relation": "AND"
},
"beginBookDate": "2024-06-15",
"bookDesc": "bookDesc",
"broadband": "FREE",
"currencyCode": "CNY",
"customerType": 1,
"endBookDate": "2024-07-22",
"floorRange": "2-4",
"freeChildrenCounts": 0,
"hasNonSmokeRoom": 0,
"hasSmokeCleanRoom": 0,
"hasWindow": 0,
"hotelId": "374447",
"immediately": 0,
"maxBookHour": 500,
"maxCheckInDay": 30,
"maxOccupancy": 0,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": 0,
"notAllowSmoking": 0,
"optionRules": [
{
"chargeUnit": "PerItem",
"description": "可选服务描述",
"inRoomRate": "true",
"price": "99",
"type": "AddBed"
}
],
"payType": 0,
"promotionRules": [
{
"description": "促销信息描述",
"promotionPrice": "123.4",
"promotionUnit": "ImmediatelyReduced",
"type": "MaxStay",
"value": "0"
}
],
"ratePlanId": "290040403_1",
"ratePlanName": "ratePlanName",
"receiptType": 0,
"refund": {
"cancellationPolicyRules": [
{
"beforeHours": 32,
"type": "AMOUNT_PENALTY",
"value": "100"
}
],
"returnable": "true",
"timeZone": "GMT+8"
},
"remarks": [
{
"description": "备注信息描述",
"seq": 1
}
],
"roomTypeCode": "290040403",
"roomTypeName": "roomTypeName",
"status": 1,
"surcharges": [
{
"chargeUnit": "PerNight",
"description": "附加信息描述",
"payType": 1,
"price": "22"
}
],
"timestamp": 1718334771543,
"wifi": "FREE"
},
{
"area": "28平方米",
"areaRange": "24",
"bedInfo": {
"beds": [
{
"bedCode": "SINGLE",
"bedSize": "1.8m",
"counts": 2,
"description": "",
"seq": 0
}
],
"relation": "AND"
},
"beginBookDate": "2024-06-15",
"bookDesc": "bookDesc",
"broadband": "FREE",
"currencyCode": "CNY",
"customerType": 1,
"endBookDate": "2024-07-22",
"floorRange": "2-4",
"freeChildrenCounts": 0,
"hasNonSmokeRoom": 0,
"hasSmokeCleanRoom": 0,
"hasWindow": 0,
"hotelId": "374447",
"immediately": 0,
"maxBookHour": 500,
"maxCheckInDay": 30,
"maxOccupancy": 0,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": 0,
"notAllowSmoking": 0,
"optionRules": [
{
"chargeUnit": "PerItem",
"description": "可选服务描述",
"inRoomRate": "true",
"price": "99",
"type": "AddBed"
}
],
"payType": 0,
"promotionRules": [
{
"description": "促销信息描述",
"promotionPrice": "10.0",
"promotionUnit": "ImmediatelyReduced",
"type": "MaxStay",
"value": "0"
}
],
"ratePlanId": "290489942_1",
"ratePlanName": "ratePlanName",
"receiptType": 0,
"refund": {
"cancellationPolicyRules": [
{
"beforeHours": 32,
"type": "AMOUNT_PENALTY",
"value": "100"
}
],
"returnable": "true",
"timeZone": "GMT+8"
},
"remarks": [
{
"description": "备注信息描述",
"seq": 1
}
],
"roomTypeCode": "290489942",
"roomTypeName": "roomTypeName",
"status": 1,
"surcharges": [
{
"chargeUnit": "PerNight",
"description": "附加信息描述",
"payType": 1,
"price": "22"
}
],
"timestamp": 1718334771544,
"wifi": "FREE"
},
{
"area": "28平方米",
"areaRange": "24",
"bedInfo": {
"beds": [
{
"bedCode": "SINGLE",
"bedSize": "1.8m",
"counts": 2,
"description": "",
"seq": 0
}
],
"relation": "AND"
},
"beginBookDate": "2024-06-15",
"bookDesc": "bookDesc",
"broadband": "FREE",
"currencyCode": "CNY",
"customerType": 1,
"endBookDate": "2024-07-22",
"floorRange": "2-4",
"freeChildrenCounts": 0,
"hasNonSmokeRoom": 0,
"hasSmokeCleanRoom": 0,
"hasWindow": 0,
"hotelId": "374447",
"immediately": 0,
"maxBookHour": 500,
"maxCheckInDay": 30,
"maxOccupancy": 0,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": 0,
"notAllowSmoking": 0,
"optionRules": [
{
"chargeUnit": "PerItem",
"description": "可选服务描述",
"inRoomRate": "true",
"price": "99",
"type": "AddBed"
}
],
"payType": 0,
"promotionRules": [
{
"description": "促销信息描述",
"promotionPrice": "10.0",
"promotionUnit": "ImmediatelyReduced",
"type": "MaxStay",
"value": "0"
}
],
"ratePlanId": "293538084_1",
"ratePlanName": "ratePlanName",
"receiptType": 0,
"refund": {
"cancellationPolicyRules": [
{
"beforeHours": 32,
"type": "AMOUNT_PENALTY",
"value": "100"
}
],
"returnable": "true",
"timeZone": "GMT+8"
},
"remarks": [
{
"description": "备注信息描述",
"seq": 1
}
],
"roomTypeCode": "293538084",
"roomTypeName": "roomTypeName",
"status": 1,
"surcharges": [
{
"chargeUnit": "PerNight",
"description": "附加信息描述",
"payType": 1,
"price": "22"
}
],
"timestamp": 1718334771545,
"wifi": "FREE"
},
{
"area": "28平方米",
"areaRange": "24",
"bedInfo": {
"beds": [
{
"bedCode": "SINGLE",
"bedSize": "1.8m",
"counts": 2,
"description": "",
"seq": 0
}
],
"relation": "AND"
},
"beginBookDate": "2024-06-15",
"bookDesc": "bookDesc",
"broadband": "FREE",
"currencyCode": "CNY",
"customerType": 1,
"endBookDate": "2024-07-22",
"floorRange": "2-4",
"freeChildrenCounts": 0,
"hasNonSmokeRoom": 0,
"hasSmokeCleanRoom": 0,
"hasWindow": 0,
"hotelId": "374447",
"immediately": 0,
"maxBookHour": 500,
"maxCheckInDay": 30,
"maxOccupancy": 0,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": 0,
"notAllowSmoking": 0,
"optionRules": [
{
"chargeUnit": "PerItem",
"description": "可选服务描述",
"inRoomRate": "true",
"price": "99",
"type": "AddBed"
}
],
"payType": 0,
"promotionRules": [
{
"description": "促销信息描述",
"promotionPrice": "10",
"promotionUnit": "ImmediatelyReduced",
"type": "MaxStay",
"value": "0"
}
],
"ratePlanId": "323381959_1",
"ratePlanName": "ratePlanName",
"receiptType": 0,
"refund": {
"cancellationPolicyRules": [
{
"beforeHours": 32,
"type": "AMOUNT_PENALTY",
"value": "100"
}
],
"returnable": "true",
"timeZone": "GMT+8"
},
"remarks": [
{
"description": "备注信息描述",
"seq": 1
}
],
"roomTypeCode": "323381959",
"roomTypeName": "roomTypeName",
"status": 1,
"surcharges": [
{
"chargeUnit": "PerNight",
"description": "附加信息描述",
"payType": 1,
"price": "22"
}
],
"timestamp": 1718334771545,
"wifi": "FREE"
},
{
"area": "28平方米",
"areaRange": "24",
"bedInfo": {
"beds": [
{
"bedCode": "SINGLE",
"bedSize": "1.8m",
"counts": 2,
"description": "",
"seq": 0
}
],
"relation": "AND"
},
"beginBookDate": "2024-06-15",
"bookDesc": "bookDesc",
"broadband": "FREE",
"currencyCode": "CNY",
"customerType": 1,
"endBookDate": "2024-07-22",
"floorRange": "2-4",
"freeChildrenCounts": 0,
"hasNonSmokeRoom": 0,
"hasSmokeCleanRoom": 0,
"hasWindow": 0,
"hotelId": "374447",
"immediately": 0,
"maxBookHour": 500,
"maxCheckInDay": 30,
"maxOccupancy": 0,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": 0,
"notAllowSmoking": 0,
"optionRules": [
{
"chargeUnit": "PerItem",
"description": "可选服务描述",
"inRoomRate": "true",
"price": "99",
"type": "AddBed"
}
],
"payType": 0,
"promotionRules": [
{
"description": "促销信息描述",
"promotionPrice": "10.0",
"promotionUnit": "ImmediatelyReduced",
"type": "MaxStay",
"value": "0"
}
],
"ratePlanId": "323422891_1",
"ratePlanName": "ratePlanName",
"receiptType": 0,
"refund": {
"cancellationPolicyRules": [
{
"beforeHours": 32,
"type": "AMOUNT_PENALTY",
"value": "100"
}
],
"returnable": "true",
"timeZone": "GMT+8"
},
"remarks": [
{
"description": "备注信息描述",
"seq": 1
}
],
"roomTypeCode": "323422891",
"roomTypeName": "roomTypeName",
"status": 1,
"surcharges": [
{
"chargeUnit": "PerNight",
"description": "附加信息描述",
"payType": 1,
"price": "22"
}
],
"timestamp": 1718334771546,
"wifi": "FREE"
},
{
"area": "28平方米",
"areaRange": "24",
"bedInfo": {
"beds": [
{
"bedCode": "SINGLE",
"bedSize": "1.8m",
"counts": 2,
"description": "",
"seq": 0
}
],
"relation": "AND"
},
"beginBookDate": "2024-06-15",
"bookDesc": "bookDesc",
"broadband": "FREE",
"currencyCode": "CNY",
"customerType": 1,
"endBookDate": "2024-07-22",
"floorRange": "2-4",
"freeChildrenCounts": 0,
"hasNonSmokeRoom": 0,
"hasSmokeCleanRoom": 0,
"hasWindow": 0,
"hotelId": "374447",
"immediately": 0,
"maxBookHour": 500,
"maxCheckInDay": 30,
"maxOccupancy": 0,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": 0,
"notAllowSmoking": 0,
"optionRules": [
{
"chargeUnit": "PerItem",
"description": "可选服务描述",
"inRoomRate": "true",
"price": "99",
"type": "AddBed"
}
],
"payType": 0,
"promotionRules": [
{
"description": "促销信息描述",
"promotionPrice": "10.0",
"promotionUnit": "ImmediatelyReduced",
"type": "MaxStay",
"value": "0"
}
],
"ratePlanId": "323422960_1",
"ratePlanName": "ratePlanName",
"receiptType": 0,
"refund": {
"cancellationPolicyRules": [
{
"beforeHours": 32,
"type": "AMOUNT_PENALTY",
"value": "100"
}
],
"returnable": "true",
"timeZone": "GMT+8"
},
"remarks": [
{
"description": "备注信息描述",
"seq": 1
}
],
"roomTypeCode": "323422960",
"roomTypeName": "roomTypeName",
"status": 1,
"surcharges": [
{
"chargeUnit": "PerNight",
"description": "附加信息描述",
"payType": 1,
"price": "22"
}
],
"timestamp": 1718334771547,
"wifi": "FREE"
}
]
}
3.10.7 输出示例
{
"result": "SUCCESS",
"message": "成功"
}
3.11酒店产品基本信息状态变更推送API
3.11.1 方法名称
测试地址:
https://hotel-openapi.jd.com/apiGateway/sip/push/ratePlanStaticStatusUpdate
线上地址: 京东提供
3.11.2 HTTP 方法
POST
3.11.3 接口描述
京东提供此API,通过此API获取供应商酒店产品基本信息状态变更,供应商调用该API推送更新的产品基本信息状态。
3.11.4 输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
appId | 供应商应用id | String | Y | 由京东酒店提供 |
sessionId | 调用链编号 | String | Y | 单次调用唯一标志(可以设置为时间戳) |
data | 酒店产品基本信息状态 | Array | Y | (单次推送条数需小于等于30)
关联 产品基本信息状态 |
产品基本信息状态
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
hotelId | 酒店编码 | string | Y | 酒店编码 |
roomTypeCode | 物理房型编码 | string | Y | 物理房型编码 |
roomTypeName | 物理房型名称 | string | N | 物理房型名称 |
ratePlanId | 产品房型code | string | Y | 产品房型code |
ratePlanName | 产品房型名称 | string | Y | 产品房型名称 |
status | 状态标识 | integer | Y | 默认值 1; 状态标识,1:有效,0:无效,2:关房(此时可只传hotelId) |
timestamp | 时间戳 | integer | Y | 时间戳-作为更新顺序及版本判断使用,需提供可判断数据更新版本数据 |
3.11.5 输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
result | 推送结果 | String | Y | SUCCESS:处理成功 FAILURE:处理失败 |
errorMessage | 错误码节点 | Object | N | 关联 错误码节点 FAILURE 不为空 |
data | 错误信息描述 | Array | N | 关联 错误信息描述 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | Y | 见附录 状态码枚举表 |
desc | 错误描述 | String | N |
3.11.6 输入示例
{
"appId": "JD0201621523",
"sessionId": "1718333791349",
"data": [
{
"hotelId": "hotel23",
"ratePlanId": "192021",
"ratePlanName": "ratePlanName",
"roomTypeCode": "123",
"roomTypeName": "roomTypeName",
"status": 0,
"timestamp": 1718178601025
},
{
"hotelId": "hotel23",
"ratePlanId": "222324",
"ratePlanName": "ratePlanName",
"roomTypeCode": "123",
"roomTypeName": "roomTypeName",
"status": 0,
"timestamp": 1718178601025
},
{
"hotelId": "hotel23",
"ratePlanId": "252627",
"ratePlanName": "ratePlanName",
"roomTypeCode": "123",
"roomTypeName": "roomTypeName",
"status": 0,
"timestamp": 1718178601025
}
]
}
3.11.7 输出示例
{
"result": "SUCCESS",
"message": "成功"
}
3.12酒店产品日历价态推送API
3.12.1 方法名称
测试地址:
https://hotel-openapi.jd.com/apiGateway/sip/push/ratePlanPricePush
线上地址: 京东提供
3.12.2 HTTP 方法
POST
3.12.3 接口描述
京东提供此API,通过此API获取供应商酒店产品价格日历信息,供应商调用该API推送产品价格日历。
3.12.4 输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
appId | 供应商应用id | String | Y | 由京东酒店提供 |
sessionId | 调用链编号 | String | Y | 单次调用唯一标志(可以设置为时间戳) |
data | 酒店产品日历价态信息 | Array | Y | (单次推送日期条数需小于等于30)
关联 酒店产品日历价态信息 |
酒店产品日历价态信息
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
hotelId | 酒店编码 | string | Y | 酒店编码 |
roomTypeCode | 物理房型编码 | string | Y | 物理房型编码 |
ratePlanId | 产品房型code | string | Y | 产品房型code |
ratePlanDateList | 产品销售日期参数 | Array | Y | 关联 产品销售日期价态 信息需要展示在用户的预订提示中 |
timestamp | 时间戳 | integer | Y | 时间戳-作为更新顺序及版本判断使用,需提供可判断数据更新版本数据 |
产品销售日期价态
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
saleDateRange | 售卖日期区间 | Object | Y | 关联 售卖日期区间 |
price | 房费 | string | Y | 房费 |
taxFee | 税费 | string | Y | 税费 |
guideType | 销售指导价类型 | Integer | N | 0:售价=销售指导价 1:售价<销售指导价 2:售价<=销售指导价 3:售价>销售指导价 4:售价>=销售指导价 |
guidePrice | 销售指导价 | string | N | 销售指导价 |
guideTaxFee | 销售指导税费 | string | N | 销售指导税费 |
roomStatus | 状态标识 | string | Y | Available:可预订 Disable:不可预订 |
mealInfo | 餐食信息 | Object | Y | Object 转换为JSON字符串,最大支持128个字符 关联 餐食信息 |
refundable | Integer | string | N | 0:不可取消 为0时,优先级高于取消规则,1为可取消 |
售卖日期区间
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
saleStartDate | 是否可以取消 | String | Y | 售卖开始日期 format = "yyyy-MM-dd" |
saleEndDate | 售卖结束日期 | String | Y | 售卖结束日期 format = "yyyy-MM-dd" |
3.12.5 输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
result | 推送结果 | String | Y | SUCCESS:处理成功 FAILURE:处理失败 |
errorMessage | 错误码节点 | Object | N | 关联 错误码节点 FAILURE 不为空 |
data | 错误信息描述 | Array | N | 关联 错误信息描述 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | Y | 见附录 状态码枚举表 |
desc | 错误描述 | String | N |
3.12.6 输入示例
{
"appId": "JD0207101658",
"sessionId": "1718333791349",
"data": [
{
"hotelId": "374447",
"ratePlanDateList": [
{
"guidePrice": "356.7",
"guideTaxFee": "7.9",
"guideType": 0,
"mealInfo": {
"breakfast": {
"counts": 2,
"description": "breakfast-description"
}
},
"price": "456.7",
"refundable": 1,
"roomStatus": "Available",
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
},
"taxFee": "8.9"
}
],
"ratePlanId": "290040403",
"roomTypeCode": "290040403",
"timestamp": 1718333791349
},
{
"hotelId": "374447",
"ratePlanDateList": [
{
"guidePrice": "356.7",
"guideTaxFee": "7.9",
"guideType": 0,
"mealInfo": {
"breakfast": {
"counts": 2,
"description": "breakfast-description"
}
},
"price": "456.7",
"refundable": 1,
"roomStatus": "Available",
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
},
"taxFee": "8.9"
}
],
"ratePlanId": "290489942",
"roomTypeCode": "290489942",
"timestamp": 1718333791349
},
{
"hotelId": "374447",
"ratePlanDateList": [
{
"guidePrice": "356.7",
"guideTaxFee": "7.9",
"guideType": 0,
"mealInfo": {
"breakfast": {
"counts": 2,
"description": "breakfast-description"
}
},
"price": "456.7",
"refundable": 1,
"roomStatus": "Available",
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
},
"taxFee": "8.9"
}
],
"ratePlanId": "293538084",
"roomTypeCode": "293538084",
"timestamp": 1718333791349
},
{
"hotelId": "374447",
"ratePlanDateList": [
{
"guidePrice": "356.7",
"guideTaxFee": "7.9",
"guideType": 0,
"mealInfo": {
"breakfast": {
"counts": 2,
"description": "breakfast-description"
}
},
"price": "456.7",
"refundable": 1,
"roomStatus": "Available",
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
},
"taxFee": "8.9"
}
],
"ratePlanId": "323381959",
"roomTypeCode": "323381959",
"timestamp": 1718333791349
},
{
"hotelId": "374447",
"ratePlanDateList": [
{
"guidePrice": "356.7",
"guideTaxFee": "7.9",
"guideType": 0,
"mealInfo": {
"breakfast": {
"counts": 2,
"description": "breakfast-description"
}
},
"price": "456.7",
"refundable": 1,
"roomStatus": "Available",
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
},
"taxFee": "8.9"
}
],
"ratePlanId": "323422891",
"roomTypeCode": "323422891",
"timestamp": 1718333791350
},
{
"hotelId": "374447",
"ratePlanDateList": [
{
"guidePrice": "356.7",
"guideTaxFee": "7.9",
"guideType": 0,
"mealInfo": {
"breakfast": {
"counts": 2,
"description": "breakfast-description"
}
},
"price": "456.7",
"refundable": 1,
"roomStatus": "Available",
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
},
"taxFee": "8.9"
}
],
"ratePlanId": "323422960",
"roomTypeCode": "323422960",
"timestamp": 1718333791350
}
]
}
3.12.7 输出示例
{
"result": "SUCCESS",
"message": "成功"
}
3.13酒店产品日历库存推送API
3.13.1 方法名称
测试地址:
https://hotel-openapi.jd.com/apiGateway/sip/push/ratePlanStockPush
线上地址: 京东提供
3.13.2 HTTP 方法
POST
3.13.3 接口描述
京东提供此API,通过此API获取供应商酒店产品价格日历库存信息,供应商调用该API推送产品价格日历库存。
3.13.4 输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
appId | 供应商应用id | String | Y | 由京东酒店提供 |
sessionId | 调用链编号 | String | Y | 单次调用唯一标志(可以设置为时间戳) |
data | 酒店产品日历库存 | Array | Y | (单次推送日期条数需小于等于30)
关联 酒店产品日历库存 |
酒店产品日历库存
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
hotelId | 酒店编码 | string | Y | 酒店编码 |
ratePlanId | 产品房型code | string | Y | 产品房型code |
roomTypeCode | 物理房型编码 | string | Y | 物理房型编码 |
saleDateList | 售卖日期 | Array | Y | 关联 售卖日期库存 |
timestamp | 时间戳 | integer | Y | 时间戳-作为更新顺序及版本判断使用,需提供可判断数据更新版本数据 |
售卖日期库存
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
saleDateRange | 售卖日期区间 | Object | Y | 关联 售卖日期区间 |
roomLimit | 房量 | integer | Y | 房量 |
reservedRoomLimit | 保留房数量 | integer | Y | 保留房数量 |
isLimited | 是否限量 | integer | Y | 是否限量,0 不限量;1限量 |
3.13.5 输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
result | 推送结果 | String | Y | SUCCESS:处理成功 FAILURE:处理失败 |
errorMessage | 错误码节点 | Object | N | 关联 错误码节点 FAILURE 不为空 |
data | 错误信息描述 | Array | N | 关联 错误信息描述 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | Y | 见附录 状态码枚举表 |
desc | 错误描述 | String | N |
3.13.6 输入示例
{
"appId": "JD0202901685",
"sessionId": "1718333791349",
"data": [
{
"hotelId": "hotel23",
"ratePlanDateList": [
{
"isLimited": 0,
"reservedRoomLimit": 9,
"roomLimit": 50,
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
}
}
],
"ratePlanId": "192021",
"roomTypeCode": "JD0201621523QRST",
"timestamp": 1718179450918
},
{
"hotelId": "hotel23",
"ratePlanDateList": [
{
"isLimited": 0,
"reservedRoomLimit": 9,
"roomLimit": 50,
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
}
}
],
"ratePlanId": "222324",
"roomTypeCode": "JD0201621523QRST",
"timestamp": 1718179450918
},
{
"hotelId": "hotel23",
"ratePlanDateList": [
{
"isLimited": 0,
"reservedRoomLimit": 9,
"roomLimit": 50,
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
}
}
],
"ratePlanId": "252627",
"roomTypeCode": "JD0201621523QRST",
"timestamp": 1718179450918
}
]
}
3.13.7 输出示例
{
"result": "SUCCESS",
"message": "成功"
}
3.14查询酒店可售报价
3.14.1 方法名称
测试地址:
https://hotel-openapi.jd.com/apiGateway/sip/push/queryRatePlan
线上地址: 京东提供
3.14.2 HTTP 方法
POST
3.14.3 接口描述
京东提供此API,提供给供应商查询落地可售报价。
3.14.4 输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
supplierCode | 供应商应用id | String | Y | 由京东酒店提供 |
hotelCode | 酒店ID | Array | Y | (单次推送日期条数需小于等于30) |
checkInDate | 入住时间 | Date | Y | 格式:YYYY-MM-DD,如:2017-10-18 |
checkOutDate | 离店时间 | Date | Y | 格式:YYYY-MM-DD,如:2017-10-18 |
3.14.5 输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
result | 推送结果 | String | Y | SUCCESS:处理成功 FAILURE:处理失败 |
errorMessage | 错误码节点 | Object | N | 关联 错误码节点 FAILURE 不为空 |
data | 错误信息描述 | Array | N | 关联 错误信息描述 |
错误节点
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
code | 错误编码 | int | Y | 见附录 状态码枚举表 |
desc | 错误描述 | String | N |
3.14.6 输入示例
{
"appId": "JD0202901685",
"sessionId": "1718333791349",
"data": [
{
"hotelId": "hotel23",
"ratePlanDateList": [
{
"isLimited": 0,
"reservedRoomLimit": 9,
"roomLimit": 50,
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
}
}
],
"ratePlanId": "192021",
"roomTypeCode": "JD0201621523QRST",
"timestamp": 1718179450918
},
{
"hotelId": "hotel23",
"ratePlanDateList": [
{
"isLimited": 0,
"reservedRoomLimit": 9,
"roomLimit": 50,
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
}
}
],
"ratePlanId": "222324",
"roomTypeCode": "JD0201621523QRST",
"timestamp": 1718179450918
},
{
"hotelId": "hotel23",
"ratePlanDateList": [
{
"isLimited": 0,
"reservedRoomLimit": 9,
"roomLimit": 50,
"saleDateRange": {
"saleEndDate": "2024-07-12",
"saleStartDate": "2024-06-12"
}
}
],
"ratePlanId": "252627",
"roomTypeCode": "JD0201621523QRST",
"timestamp": 1718179450918
}
]
}
3.14.7 输出示例
{
"result": "SUCCESS",
"message": "成功"
}
3.15查询落地酒店基础信息
3.15.1 方法名称
测试地址:
https://hotel-openapi.jd.com/apiGateway/sip/push/getRatePlanBaseInfo
线上地址: 京东提供
3.15.2 HTTP 方法
POST
3.15.3 接口描述
京东提供此API,提供给供应商查询落地的酒店基础数据<。
3.15.4 输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
supplierCode | 供应商应用id | String | Y | 由京东酒店提供 |
hotelCode | 酒店ID | Array | Y | (单次推送日期条数需小于等于30) |
3.15.5 输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
status | 结果 | String | Y | |
message | 错误码节点 | Object | N | |
data | 数据 | Array | N | DB直查数据 |
3.15.6 输入示例
{
"hotelCode": [
"12590862"
],
"supplierCode": "JD0308981443"
}
3.15.7 输出示例
{
"data": [
{
"area": null,
"areaRange": null,
"bedInfo": "{\"beds\":[{\"bedCode\":\"DOUBLE\",\"bedSize\":\"1.5m\",\"counts\":1,\"description\":\"\",\"seq\":1}],\"relation\":\"OR\"}",
"beginBookDate": 1722528000000,
"bookDesc": null,
"broadband": "UNKNOWN",
"createTime": 1722587200000,
"currencyCode": "CNY",
"customerType": 1,
"del": 0,
"endBookDate": 1738080000000,
"floorRange": null,
"freeChildrenCounts": null,
"hasNonSmokeRoom": null,
"hasSmokeCleanRoom": null,
"hasWindow": null,
"hotelId": "12590862",
"id": 2,
"immediately": 0,
"maxBookHour": 120,
"maxCheckInDay": 7,
"maxOccupancy": 2,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": null,
"notAllowSmoking": null,
"optionRules": null,
"payMode": 0,
"promotionRules": null,
"ratePlanId": "73367088",
"ratePlanName": "易致大床房(仅限内宾)",
"receiptType": 1,
"refund": "{\"cancellationPolicyRules\":[{\"beforeHours\":6,\"type\":\"NO_PENALTY\",\"value\":\"0\"}],\"returnable\":\"true\"}",
"remarks": null,
"roomTypeCode": "10460593",
"roomTypeName": null,
"status": 1,
"supplierCode": "JD0308981443",
"surcharges": null,
"timestamp": 305692253,
"uid": "JD0308981443_12590862",
"uidStr": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722587579000,
"wifi": "UNKNOWN"
},
{
"area": null,
"areaRange": null,
"bedInfo": "{\"beds\":[{\"bedCode\":\"DOUBLE\",\"bedSize\":\"1.5m\",\"counts\":1,\"description\":\"\",\"seq\":1}],\"relation\":\"OR\"}",
"beginBookDate": 1722787200000,
"bookDesc": null,
"broadband": "UNKNOWN",
"createTime": 1722842859000,
"currencyCode": "CNY",
"customerType": 1,
"del": 0,
"endBookDate": 1738339200000,
"floorRange": null,
"freeChildrenCounts": null,
"hasNonSmokeRoom": null,
"hasSmokeCleanRoom": null,
"hasWindow": null,
"hotelId": "12590862",
"id": 3,
"immediately": 0,
"maxBookHour": 120,
"maxCheckInDay": 7,
"maxOccupancy": 2,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": null,
"notAllowSmoking": null,
"optionRules": null,
"payMode": 0,
"promotionRules": null,
"ratePlanId": "72669345",
"ratePlanName": "易雅大床房(无窗)",
"receiptType": 1,
"refund": "{\"cancellationPolicyRules\":[{\"beforeHours\":6,\"type\":\"NO_PENALTY\",\"value\":\"0\"}],\"returnable\":\"true\"}",
"remarks": null,
"roomTypeCode": "10690513",
"roomTypeName": null,
"status": 1,
"supplierCode": "JD0308981443",
"surcharges": null,
"timestamp": 560973069,
"uid": "JD0308981443_12590862",
"uidStr": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722842859000,
"wifi": "UNKNOWN"
},
{
"area": null,
"areaRange": null,
"bedInfo": "{\"beds\":[{\"bedCode\":\"SINGLE\",\"bedSize\":\"1.2m\",\"counts\":2,\"description\":\"\",\"seq\":1}],\"relation\":\"OR\"}",
"beginBookDate": 1722700800000,
"bookDesc": null,
"broadband": "UNKNOWN",
"createTime": 1722847039000,
"currencyCode": "CNY",
"customerType": 1,
"del": 0,
"endBookDate": 1723132800000,
"floorRange": null,
"freeChildrenCounts": null,
"hasNonSmokeRoom": null,
"hasSmokeCleanRoom": null,
"hasWindow": null,
"hotelId": "12590862",
"id": 4,
"immediately": 0,
"maxBookHour": 120,
"maxCheckInDay": 7,
"maxOccupancy": 2,
"minBookHour": 0,
"minCheckInDay": 1,
"noNonSmokeRoom": null,
"notAllowSmoking": null,
"optionRules": null,
"payMode": 0,
"promotionRules": null,
"ratePlanId": "72403661",
"ratePlanName": "易尊双床房",
"receiptType": 1,
"refund": "{\"cancellationPolicyRules\":[{\"beforeHours\":6,\"type\":\"NO_PENALTY\",\"value\":\"0\"}],\"returnable\":\"true\"}",
"remarks": null,
"roomTypeCode": "10460581",
"roomTypeName": null,
"status": 1,
"supplierCode": "JD0308981443",
"surcharges": null,
"timestamp": 565129675,
"uid": "JD0308981443_12590862",
"uidStr": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722847039000,
"wifi": "UNKNOWN"
}
],
"message": "[getRatePlanBaseInfo]done!",
"responseInfo": null,
"status": 70998
}
3.16查询落地酒店报价信息
3.16.1 方法名称
测试地址:
https://hotel-openapi.jd.com/apiGateway/sip/push/getRatePlanPrice
线上地址: 京东提供
3.16.2 HTTP 方法
POST
3.16.3 接口描述
京东提供此API,提供给供应商查询落地的酒店报价数据。
3.16.4 输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
supplierCode | 供应商应用id | String | Y | 由京东酒店提供 |
hotelCode | 酒店ID | Array | Y | (单次推送日期条数需小于等于30) |
3.16.5 输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
status | 结果 | String | Y | |
message | 错误码节点 | Object | N | |
data | 数据 | Array | N | DB直查数据 |
3.16.6 输入示例
{
"hotelCode": [
"12590862"
],
"supplierCode": "JD0308981443"
}
3.16.7 输出示例
{
"data": [
{
"createTime": 1722579393000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 9,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 151.65,
"ratePlanId": "48401931",
"refundable": 1,
"roomStatus": "Available",
"roomTypeCode": "13754709",
"saleDate": 1722528000000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 297506339,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722579393000
},
{
"createTime": 1722579393000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 10,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 151.65,
"ratePlanId": "48401931",
"refundable": 1,
"roomStatus": "Available",
"roomTypeCode": "13754709",
"saleDate": 1722614400000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 297506339,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722579393000
},
{
"createTime": 1722579375000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 3,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 179.05,
"ratePlanId": "48401936",
"refundable": 0,
"roomStatus": "Available",
"roomTypeCode": "10460617",
"saleDate": 1722614400000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 299391128,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722581278000
},
{
"createTime": 1722579375000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 4,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 179.05,
"ratePlanId": "48401936",
"refundable": 0,
"roomStatus": "Available",
"roomTypeCode": "10460617",
"saleDate": 1722700800000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 299391128,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722581278000
},
{
"createTime": 1722848591000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 17,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 143.42,
"ratePlanId": "61346639",
"refundable": 1,
"roomStatus": "Available",
"roomTypeCode": "10690513",
"saleDate": 1722873600000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 566704915,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722848591000
},
{
"createTime": 1722588252000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 15,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 159,
"ratePlanId": "73367088",
"refundable": 1,
"roomStatus": "Available",
"roomTypeCode": "10460593",
"saleDate": 1722528000000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 306337057,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722588252000
},
{
"createTime": 1722588252000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 16,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 159,
"ratePlanId": "73367088",
"refundable": 1,
"roomStatus": "Available",
"roomTypeCode": "10460593",
"saleDate": 1722614400000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 306337057,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722588252000
},
{
"createTime": 1722579392000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 7,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 190,
"ratePlanId": "73583808",
"refundable": 0,
"roomStatus": "Available",
"roomTypeCode": "10460617",
"saleDate": 1722614400000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 299404516,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722581291000
},
{
"createTime": 1722579392000,
"del": 0,
"guidePrice": null,
"guideTaxFee": null,
"guideType": null,
"hotelId": "12590862",
"id": 8,
"mealInfo": "{\"breakfast\":{\"counts\":0}}",
"price": 190,
"ratePlanId": "73583808",
"refundable": 0,
"roomStatus": "Available",
"roomTypeCode": "10460617",
"saleDate": 1722700800000,
"supplierCode": "JD0308981443",
"taxFee": 0,
"timestamp": 299404516,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722581291000
}
],
"message": "[getRatePlanPrice]done!",
"responseInfo": null,
"status": 70998
}
3.17查询落地酒店库存信息
3.17.1 方法名称
测试地址:
https://hotel-openapi.jd.com/apiGateway/sip/push/getRatePlanStock
线上地址: 京东提供
3.17.2 HTTP 方法
POST
3.17.3 接口描述
京东提供此API,提供给供应商查询落地的酒店库存数据。
3.17.4 输入参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
supplierCode | 供应商应用id | String | Y | 由京东酒店提供 |
hotelCode | 酒店ID | Array | Y | (单次推送日期条数需小于等于30) |
3.17.5 输出参数
节点 | 名称 | 类型 | 是否必须 | 字段描述 |
---|---|---|---|---|
status | 结果 | String | Y | |
message | 错误码节点 | Object | N | |
data | 数据 | Array | N | DB直查数据 |
3.17.6 输入示例
{
"hotelCode": [
"12590862"
],
"supplierCode": "JD0308981443"
}
3.17.7 输出示例
{
"data": [
{
"createTime": 1722580343000,
"del": 0,
"hotelId": "12590862",
"id": 1,
"isLimited": 0,
"ratePlanId": "48401931",
"reservedRoomLimit": 0,
"roomLimit": 2,
"roomTypeCode": "13754709",
"saleDate": 1722528000000,
"supplierCode": "JD0308981443",
"timestamp": 298456471,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722580343000
},
{
"createTime": 1722580343000,
"del": 0,
"hotelId": "12590862",
"id": 2,
"isLimited": 0,
"ratePlanId": "48401931",
"reservedRoomLimit": 0,
"roomLimit": 2,
"roomTypeCode": "13754709",
"saleDate": 1722614400000,
"supplierCode": "JD0308981443",
"timestamp": 298456471,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722580343000
},
{
"createTime": 1722588858000,
"del": 0,
"hotelId": "12590862",
"id": 3,
"isLimited": 0,
"ratePlanId": "73367088",
"reservedRoomLimit": 0,
"roomLimit": 1,
"roomTypeCode": "10460593",
"saleDate": 1722528000000,
"supplierCode": "JD0308981443",
"timestamp": 306968215,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722588858000
},
{
"createTime": 1722588858000,
"del": 0,
"hotelId": "12590862",
"id": 4,
"isLimited": 0,
"ratePlanId": "73367088",
"reservedRoomLimit": 0,
"roomLimit": 1,
"roomTypeCode": "10460593",
"saleDate": 1722614400000,
"supplierCode": "JD0308981443",
"timestamp": 306968215,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722588858000
},
{
"createTime": 1722846800000,
"del": 0,
"hotelId": "12590862",
"id": 5,
"isLimited": 0,
"ratePlanId": "72403661",
"reservedRoomLimit": 0,
"roomLimit": 1,
"roomTypeCode": "10460581",
"saleDate": 1722787200000,
"supplierCode": "JD0308981443",
"timestamp": 564914407,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722846800000
},
{
"createTime": 1722846800000,
"del": 0,
"hotelId": "12590862",
"id": 6,
"isLimited": 0,
"ratePlanId": "72403661",
"reservedRoomLimit": 0,
"roomLimit": 1,
"roomTypeCode": "10460581",
"saleDate": 1722873600000,
"supplierCode": "JD0308981443",
"timestamp": 564914407,
"uid": "JD0308981443_12590862",
"uniq": null,
"updateTime": 1722846800000
}
],
"message": "[getRatePlanStock]done!",
"responseInfo": null,
"status": 70998
}
四.附录
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;
}
4.5 AES解密方法
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
import java.util.Base64.Decoder;
/**
* AES解密
*
* @param content 加密参数
* @return 输出原值
*/
public class AesUtil {
private static final String IV_STRING = "A-16-Byte-String";
private static final String charset = "UTF-8";
private static final String privateKey="找京东索取";
public static String decryptString(String content) {
try {
Decoder decoder = Base64.getDecoder();
byte[] encryptedBytes = decoder.decode(content);
byte[] keyBytes = key.getBytes(CHARSET);
SecretKeySpec secretKey = new SecretKeySpec(keyBytes, "AES");
byte[] initParam = IV_STRING.getBytes(CHARSET);
IvParameterSpec ivParameterSpec = new IvParameterSpec(initParam);
Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes, CHARSET);
} catch (Exception e) {
log.error("AesUtil,decryptString", e);
}
return null;
}
}