ca- 文档管理信息表

主题: 京东国际酒店标准接口接入开发指南
文档版本: V1.0
内容: 京东国际酒店OpenApi技术接入说明文档
提交时间: 2018-12-25
创建人: 曹进保
  • 文档修改记录表
修改人 版本号 修改时间 修改内容 修改原因

国际酒店预发环境测试地址:https://m-ihotel-yf.jd.com

一.接口公共协议

采用HTTP协议通信。输入和输出参数都采用UTF-8编码。发送的请求体数据部分(即data参数)需要进行URLEncode处理。

1.1 京东侧接口

接口域名:

       测试环境:https://test.jd.com
       生产环境:https://xxx.jd.com

下述公共参数和公共返回结果规范主要是针对供应商请求京东的接口,对于京东请求供应商的接口则不需要参照。上线前需要加入调用方IP到京东白名单,测试环境不需要。

1.1.1公共请求参数

名称 类型 说明
appId String 供应商应用id,由京东酒店提供

1.1.2公共响应参数

名称 类型 说明
code String 返回状态码
msg String 结果描述
data String 各接口具体需要返回业务数据,json格式

返回值示例:

{
    "code": 200,
    "msg": "成功",
    "data": {
        "hotelCode": 1110,
        "roomCode": "001"
    }
}

1.2 供应商侧接口

供应商接口域名:

       测试环境:https://xxx.xxx.com
       生产环境:https://xxx.xxx.com

下述公共参数和公共返回结果规范主要是针对京东请求供应商接口,保证通信过程中数据安全及调用身份安全需增加安全方法校验。

1.2.1公共请求参数

名称 类型 说明
accountId String 供应商定义,上线前需明确此字段
timeStamp String 时间戳
sign String 加密的串生成方法:getMD5(参数+timestamp+accountId)参数说明:request.getQueryString(),获取url上的参数IOUtils.toString(request.getInputStream(),"UTF-8"),数据流获取参数request.getHeader("timeStamp"),从请求头上获取时间戳 参考 附录四 4.4节

调用示例:

Request Header {
    accountId : JD0309650572,
    sign:MD5串,
    timeStamp:1536129978000
}

加密规则:

1. String signText = request.getQueryString()+ IOUtils.toString(request.getInputStream(),"UTF-8") + request.getHeader("timeStamp")+ secretKey(申请获取)  
2. String sign = getMD5(signText,"UTF-8"); 
3. if(sign.equals(request.getHeader("sign"))) //验证通过 
示例:下单 (POST):signText = "method=hotel.occupy" + "data={下单入参JSON}"+ request.getHeader("timeStamp") + secretKey;                            
      取消单(GET):signText = "method=hotel.cancelOccupy&data={取消入参JSON}"+ request.getHeader("timeStamp") + secretKey; 

1.2.2公共响应参数

名称 类型 说明
code String 返回状态码
msg String 结果描述
data String 各接口具体需要返回业务数据,json格式
返回值示例:
{
    "code": 200,
    "msg": "成功",
    "data": {
    }
}

二.接口列表说明

本文档主要涉及酒店静态接口与动态接口共9个接口。

2.1静态接口

接口名称 接口描述
城市信息 获取供应商的城市静态信息
酒店信息 获取供应商的酒店静态信息
酒店增量信息 供应商推送更新的酒店静态信息
房型信息API 获取酒店的房型静态信息
房型增量信息 供应商推送更新的酒店房型静态信息

2.2动态接口

接口名称 接口描述
价格 用于获取供应商实时报价
下单 用于用户预订酒店时,使用此API去供应商处下单
订单查询 用户同步供应商订单信息
订单取消 用于取消预订时,使用此接口向供应商发起取消

2.3调用流程

三.接口定义

3.1城市信息API

3.1.1方法名称

geo.city.list

3.1.2 HTTP方法

GET

3.1.3接口描述

通过此API获取供应商城市静态信息。

3.1.4输入参数

3.1.5输出参数

节点 名称 类型 是否必须 字段描述
country 国家 Array Y 关联 国家信息

国家信息

节点 名称 类型 是否必须 字段描述
countryCode 国家编码 String Y
countryNameCN 中文 String N
countryNameEN 英文 String N
province 省份 Array Y 关联 省份信息

省份信息

节点 名称 类型 是否必须 字段描述
provinceCode 省份编码 String Y
provinceNameCN 中文 String N
provinceNameEN 英文 String N
city 城市 Array Y 关联 城市信息

城市信息

节点 名称 类型 是否必须 字段描述
cityCode 城市编码 String Y
cityNameCN 中文 String N
cityNameEN 英文 String N

3.1.6输入示例

https://{host}/rest?method=geo.city.list&data=

3.1.7输出示例

{
    "code": 200,
    "msg": "成功",
    "data": [
        {
            "countryCode": "0086", 
            "countryNameCN": "中国",
            "countryNameEN": "china",
            "province": [
                {
                    "provinceCode": "9",
                    "provinceNameCN": "北京市",
                    "provinceNameEN": "Beijing District",
                    "city": [
                        {
                            "cityCode": "901",
                            "cityNameCN": "大兴区",
                            "cityNameEN": "Daxing District"
                        }
                    ]
                }
            ]
        }
    ]
}

3.2酒店信息API

3.2.1方法名称

geo.hotel.list

3.2.2 HTTP方法

GET

3.2.3接口描述

通过此API获取供应商酒店静态信息(归属城市、名称、地址、坐标、电话等),京东定期调用该API从供应商处获取更新信息。

3.2.4输入参数

节点 名称 类型 是否必须 字段描述
cityCode 城市 String Y 城市编码
row 行数 int Y 每次请求返回的条数
start 开始行 int Y 每次请求开始行数

3.2.5输出参数

返回值中每个hotel节点对应一个酒店的静态信息,可包含多个hotel节点,根据row返回指定条 数酒店信息

节点 名称 类型 是否必须 字段描述
cityCode 城市编码 String Y
cityNameCN 城市名称,中文 String N 国际及港澳台必须提供中文
cityNameEN 城市名称,英文 String N
hotel 酒店 Array Y 关联 酒店信息

酒店信息

节点 父节点 名称 类型 是否必须 字段描述
id Hotel 酒店ID String Y
mappingList Hotel Mapping关系列表 Array N 关联 Mapping关系列表
说明:Mapping关系列表支持增删改
增:本次返参比前一次返参新增的mapping关系
删:前一次返参的Mapping关系列表,本次返参缺少的mapping关系则会解除上次的关联Mapping关系
改:每次返参都存在的mapping关系
hotelNameCN Hotel 酒店中文名 String Y 国际及港澳台必须提供中文
hotelNameEN Hotel 酒店英文名 String N
address Hotel 酒店地址 String Y
longitude Hotel 酒店经度 String Y 腾讯地图
latitude Hotel 酒店纬度 String Y 腾讯地图
tel Hotel 酒店电话 String Y
fax Hotel 酒店传真 String N
webSite Hotel 酒店网址 String N

Mapping关系列表

节点 名称 类型 是否必须 字段描述
mappingType 与其他mapping关系 int Y 11:道旅
12:携程
13:Expiedia
14:艺龙
mappingHotelId 映射关系的ID String Y
mappingHotelName 映射酒店中文名称 String N
mappingHotelAddress 映射酒店中文地址 String N

3.2.6输入示例

https://{host}/rest?method=geo.hotel.list&data={"cityCode":"101,102"}

3.2.7输出示例

{
    "code": 200,
    "msg": "成功",
    "data": [
        {
            "cityCode": "101",
            "cityNameCN": "北京市",
            "cityNameEN": "beijing",
            "hotel": [
                {
                    "id": "0086",
                    "mappingType": 1,
                    "mappingHotelId": "china",
                    "hotelNameCN": "汉庭酒店",
                    "hotelNameEN": "HTHT US",
                    "address": "北京通州区科创五街3号汉庭酒店",
                    "longitude": "116.5461000000",
                    "latitude": "39.8098300000",
                    "tel": "010-56351088",
                    "fax": "",
                    "webSite": "http: //www.huazhu.com/Hanting",
                    "mappingList":[
                         {
                            "mappingType":11,
                            "mappingHotelId":"12345",
                            "mappingHotelName":"京东自营",
                            "mappingHotelAddress":"京东大厦"
                         }
                    ]
                }
            ]
        }
]
}

3.3酒店增量信息API

3.3.1方法名称

测试地址: https://xxx.jd.com/apiGateway/sip/pushGeoHotelList?appId={appId}
线上地址: 京东提供

3.3.2 HTTP方法

POST

3.3.3接口描述

通过此API获取供应商更新的酒店静态信息(归属城市、名称、地址、坐标、电话等),供应商调用该API推送酒店静态数据。

3.3.4输入参数

返回值中每个hotel节点对应一个酒店的静态信息,可包含多个hotel节点。
节点 名称 类型 是否必须 字段描述
appId 供应商应用id String Y
data 酒店信息 Array Y 关联 城市信息

城市信息

节点 名称 类型 是否必须 字段描述
cityCode 城市编码 String Y
cityNameCN 城市名称,中文 String N 国际及港澳台必须提供中文
cityNameEN 城市名称,英文 String N
hotel 酒店 Array Y 关联 酒店信息

酒店信息

节点 名称 类型 是否必须 字段描述
id 酒店ID String Y
updateType 更新类型 int Y 0:修改
1:新增
2:删除
mappingType Mapping对象 int N 1:艺龙
2:携程
3:Expiedia
mappingHotelId 映射ID String N
hotelNameCN 酒店中文名 String N 国际及港澳台必须提供中文
hotelNameEN 酒店英文名 String N
address 酒店地址 String Y
longitude 酒店经度(腾讯) String N
latitude 酒店纬度(腾讯) String N
tel 酒店电话 String Y
fax 酒店传真 String N
webSite 酒店网址 String N
mappingList Mapping关系列表 Array N 关联 Mapping关系列表
说明:Mapping关系列表支持增删改
增:本次返参比前一次返参新增的mapping关系
删:前一次返参的Mapping关系列表,本次返参缺少的mapping关系则会解除上次的关联Mapping关系
改:每次返参都存在的mapping关系

Mapping关系列表

节点 名称 类型 是否必须 字段描述
mappingType 与其他mapping关系 int Y 11:道旅
12:携程
13:Expiedia
14:艺龙
mappingHotelId 映射关系的ID String Y
mappingHotelName 映射酒店中文名称 String N
mappingHotelAddress 映射酒店中文地址 String N

3.3.5输出参数

节点 名称 类型 是否必须 字段描述
result 推送结果 String Y SUCCESS: 处理成功
FAILURE: 处理失败
errorMessage 错误码节点 Object N result = FAILURE 不为空

错误节点

节点 名称 类型 是否必须 字段描述
code 错误编码 int Y 见附录 状态码枚举表
desc 错误描述 String N

3.3.6输入示例

{
    "appId": "2029922",
    "data": [
        {
            "cityCode": "101",
            "cityNameCN": "北京市",
            "cityNameEN": "beijing",
            "hotel": [
                {
                    "id": "0086",
                     "updateType": 1,
                    "mappingType": 1,
                    "mappingHotelId": "china",
                    "hotelNameCN": "汉庭酒店",
                    "hotelNameEN": "HTHT US",
                    "address": "北京通州区科创五街3号汉庭酒店",
                    "longitude": "116.5461000000",
                    "latitude": "39.8098300000",
                    "tel": "010-56351088",
                    "fax": "",
                    "webSite": "http: //www.huazhu.com/Hanting",
                    "mappingList":[
                         {
                            "mappingType":11,
                            "mappingHotelId":"12345",
                            "mappingHotelName":"京东自营",
                            "mappingHotelAddress":"京东大厦"
                         }
                    ]
                }
            ]
        }
    ]
}

3.3.7输出示例

{
    "result": "SUCCESS",
    "message": "成功"
}

3.4房型信息API

3.4.1方法名称

geo.room.list

3.4.2 HTTP方法

GET

3.4.3接口描述

通过此API获取供应商酒店房型静态信息(名称、床型等),京东定期调用该API从供应商处获取更新信息。

3.4.4输入参数

节点 名称 类型 是否必须 字段描述
hotelIds 酒店 String N 供应商酒店ID,可包含多个 ,隔开

3.4.5输出参数

返回值中每个hotel节点对应一个酒店的物理房型静态信息,包含一个rooms节点,rooms节点可包含多个room节点,返回指定酒店的全部物理房型信息。
节点 名称 类型 是否必须 字段描述
hotel 酒店 Array Y 关联 酒店信息

酒店信息

节点 名称 类型 是否必须 字段描述
id 酒店ID String Y
room 房型 Array Y 关联 房型信息

房型信息

节点 名称 类型 是否必须 字段描述
id 房型ID String Y
name 房型名 String Y
maxOccupancy 最大入住人数 int Y
standardOccupancy 标准入住人数 Int Y
wifi Wifi String N 关联 收费类型枚举表
brand 宽带 String N 关联 收费类型枚举表
smoking 是否可吸烟 String N "true" 或 "false"
area 面积 String N 无需单位
floor 楼层 int N
window 是否有窗 int N 0:无窗
1:有窗
2:不确定
addBed 加床 int N 0:不可加床
1:可加床
2:不确定
bedInfo 床型信息 Object 关联 床型信息
mappingList 房型关系列表 Array N 关联 房型Mapping关系列表
说明:Mapping关系列表支持增删改
增:本次返参比前一次返参新增的mapping关系
删:前一次返参的Mapping关系列表,本次返参缺少的mapping关系则会解除上次的关联Mapping关系
改:每次返参都存在的mapping关系

收费类型枚举表

收费类型 描述
FREE 免费
CHARGES 收费
PART_CHARGE 部分收费
PART_FREE 部分有且免费
NONE 无此服务
UNKNOWN 未知,不确定

床型信息

节点 名称 类型 是否必须 字段描述
relation 床型之间的关系 String N AND:多种床型共存
OR:多种床型可选
beds Array N 关联 床型关系

床型关系

节点 名称 类型 是否必须 字段描述
bedName 床型名称 String N
bedCounts 床数量 int Y
bedSize 床型尺寸 String N
description 描述信息 String N

房型Mapping关系列表

节点 名称 类型 是否必须 字段描述
mappingType 与其他mapping关系 int Y 11:道旅
12:携程
13:Expiedia
14:艺龙
mappingHotelId 映射酒店ID String Y
mappingRoomId 映射房型ID String Y

3.4.6输入示例

https://{host}/rest?method=geo.room.list&data={"hotelIds":"100,200,300"}

3.4.7输出示例

{
    "code": 200,
    "msg": "成功",
    "data": [
        {
            "id": "100",
            "room": [
                {
                    "id": "001",
                    "name": "标准间",
                    "maxOccupancy": 2,
                    "standardOccupancy": 2,
                    "wifi": "FREE",
                    "brand": "FREE",
                    "smoking": "true",
                    "area": "28平方米",
                    "floor": 2,
                    "window": 1,
                    "addBed": 2,
                    "bedInfo": {
                        "relation": "AND",
                        "beds": [
                            {
                                "bedName": "",
                                "bedCounts": 1,
                                "bedSize": "1.8m",
                                "description": ""
                            }
                        ]
                    },
                    "mappingList":[
                         {
                            "mappingType":11,
                            "mappingHotelId":"12345",
                            "mappingRoomId":"7896"
                         }
                    ]
                }
            ]
        }
    ]
}

3.5房型增量信息API

3.5.1方法名称

测试地址: https://xxx.jd.com/apiGateway/sip/pushGeoRoomList?appId={appId}
线上地址: 京东提供

3.5.2 HTTP方法

POST

3.5.3接口描述

通过此API获供应商酒店房型静态的增量信息(名称、床型等),供应商调用该API推送更新的房型信息。

3.5.4输入参数

节点 名称 类型 是否必须 字段描述
appId 供应商应用id String Y
data 酒店信息 Array 关联 酒店信息

酒店信息

节点 名称 类型 是否必须 字段描述
id 酒店ID String Y
room 房型 Array Y 关联 房型信息

房型信息

节点 名称 类型 是否必须 字段描述
id 房型ID String Y
name 房型名 int Y
updateType 更新类型 int
maxOccupancy 最大入住人数 String Y
standardOccupancy 标准入住人数 Int Y
wifi Wifi String N 关联 收费类型枚举表
brand 宽带 String N 关联 收费类型枚举表
smoking 是否可吸烟 String N true/false
area 面积 String N
floor 楼层 int N
window 是否有窗 int N 0:无窗
1:有窗
2:不确定
addBed 加床 int N 0:不可加床
1:可加床
2:不确定
bedInfo 床型信息 Object 关联 床型信息
mappingList 房型关系列表 Array N 关联 房型Mapping关系列表
说明:Mapping关系列表支持增删改
增:本次返参比前一次返参新增的mapping关系
删:前一次返参的Mapping关系列表,本次返参缺少的mapping关系则会解除上次的关联Mapping关系
改:每次返参都存在的mapping关系

收费类型枚举表

收费类型 描述
FREE 免费
CHARGES 收费
PART_CHARGE 部分收费
PART_FREE 部分有且免费
NONE 无此服务
UNKNOWN 未知,不确定

床型信息

节点 名称 类型 是否必须 字段描述
relation 床型之间的关系 String N AND:多种床型共存
OR:多种床型可选
beds Array N 关联 床型关系

床型关系

节点 名称 类型 是否必须 字段描述
bedName 床型名称 String N
bedCounts 床数量 int Y
bedSize 床型尺寸 String N
description 描述信息 String N

房型Mapping关系列表

节点 名称 类型 是否必须 字段描述
mappingType 与其他mapping关系 int Y 11:道旅
12:携程
13:Expiedia
14:艺龙
mappingHotelId 映射酒店ID String Y
mappingRoomId 映射房型ID String Y

3.5.5输出参数

节点 名称 类型 是否必须 字段描述
result 推送结果 String Y SUCCESS: 处理成功
FAILURE: 处理失败
errorMessage 错误码节点 Object N result = FAILURE 不为空

错误节点

节点 名称 类型 是否必须 字段描述
code 错误编码 int Y 见附录 状态码枚举表
desc 错误描述 String N

3.5.6输入示例

{
    "appId": "2029922",
    "data": [
        {
            "id": "100",
            "room": [
                {
                    "id": "001",
                    "name": "标准间",
                    "maxOccupancy": 2,
                    "standardOccupancy": 2,
                    "wifi": "FREE",
                    "brand": "FREE",
                    "smoking": "true",
                    "area": "28平方米",
                    "floor": 2,
                    "window": 1,
                    "addBed": 2,
                    "bedInfo": {
                        "relation": "AND",
                        "beds": [
                            {
                                "bedName": "",
                                "bedCounts": 1,
                                "bedSize": "1.8m",
                                "description": ""
                            }
                        ]
                    },
                    "mappingList":[
                        {
                            "mappingType":12,
                            "mappingHotelId":"12345",
                            "mappingRoomId":"7896"
                        }
                    ]
                }
            ]
        }
   ]
}

3.5.7输出示例

{
    "result": "SUCCESS",
    "message": "成功"
}

3.6价格API

3.6.1方法名称

hotel.rp

3.6.2 HTTP方法

GET

3.6.3接口描述

通过此API来获取价格计划信息,信息包含房间基本属性、房价、房态、房量等信息。进入预订页和订单提交页时,请求价格校验需提供实时价格。

1.返回值中的hotelId必须与请求值中的hotelId一致,否则价格计划将被过滤。
2.返回值中用"|"分隔的内容必须满足请求中入住间夜数,否则价格计划将被过滤。

调用API的不同场景的模式:

1.列表页、详情页 报价数据
2.特定房型并进入预定页和提交页进行价格校验

3.6.4输入参数

节点 名称 类型 是否必须 字段描述
hotelIds 酒店ID String Y
checkin 入住时间 Date Y 格式:YYYY-MM-DD,如:2017-10-18
checkout 离店时间 Date Y 格式:YYYY-MM-DD,如:2017-10-18
ratePlanId 价格计划ID String Y 预定页
roomCounts 房间数 int Y 默认值:1
customerInfo 住客信息 Array N 关联 住客信息
当请求多间房时,需要分别设置每个房间的成人数、儿童数、儿童年龄
channel 报价售卖渠道 String N 多个以’|’分隔,不传默认所有
1: PC
2: APP
3: 商旅
4: 平台
5: 钟点房

住客信息

节点 名称 类型 是否必须 字段描述
seq 房间序号 int N 住客房间序号
numberOfAdults 成人数 int N 成人数
numberOfchildren 儿童数 int N 儿童数
childrenAges 儿童年龄 String N 可包含多个儿童,用“|”分隔
例如:如“1|12”,含义是两个儿童,一名1岁,一名12岁

3.6.5输出参数

节点 名称 类型 是否必须 字段描述
hotelId 酒店编号 String Y 与入参中的hotelIds中的hotelId对应
hotelCityCode 酒店城市编码 String Y
hotelName 酒店名称 String Y
hotelAddress 酒店地址 String Y
hotelTel 酒店电话 String N
checkin 开始时间 Date Y 格式:YYYY-MM-DD, 如:2017-10-18
checkout 结束时间 Date Y 格式:YYYY-MM-DD, 如:2017-10-18
currencyCode 币种 String N 币种
timeZone 时区 String N 默认:GMT+8
ratePlans 价格计划 Array N 关联 价格计划

价格计划

节点 名称 类型 是否必须 字段描述
id 价格计划编码 String Y
name 价格计划名称 String Y
payType 支付方式 int Y 0:预付
1:现付
isHourRoom 是否是钟点房 int N 1:是
0:否
channels 报价售卖渠道 String N 多个以’
memberLevel 会员级别 String N 多个以’|’分隔。空值表示不限制。见 会员级别(待提供)
ratePlanType 报价类型 int Y 0:底价
1:售价
receiptType 发票类型 int Y 0:京东提供
1:酒店提供
2:供应商提供
currencyCode 币种 String N 币种
averagePrices 每间每晚房价(均价) String Y 入住多晚时,每晚价格以“|”分隔,数量与fromDate/toDate相对应。
价格=房费+税费
例如1:
fromDate: 2017-10-21
toDate:2017-10-24
若请求两间房时,2017-10-21的房间一价格为100,房间二价格为200,则当晚的每间每晚房价为150;2017-10-22的房间一价格为100,房间二价格为100,则当晚的每间每晚房价为100;2017-10-23的房间一价格为100,房间二价格为300,则当晚的每间每晚房价为200;则averagePrices的值为“150|100|200”
若需要10日报价,但只能提供7日报价,其余报价用0补齐
averageRoomRates 每间每晚房费 String Y 入住多晚时,以“|”分隔,数量与fromDate/toDate对应。
若需要10日报价,但只能提供7日报价,其余报价用0补齐
averageTaxAndFee 每间每晚税费 String Y 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应
salesGuideType 销售指导价类型 int N 0:售价=销售指导价
1:售价<销售指导价
2:售价<=销售指导价
3:售价>销售指导价
4:售价>=销售指导价
salesGuidePrice 销售指导价 String N 销售指导价
入住多晚时,以“
salesGuideRoomRates 销售指导房价 String N 销售指导价 - 房价
入住多晚时,以“
salesGuideTaxAndFee 销售指导税费 String N 销售指导价 - 税费
入住多晚时,以“
roomStatus 每晚房态 String Y Available: 可预订
Disable:不可预订
入住多晚时,以“
roomLimits 每晚房量 String Y 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。
例如:2
reservedRoomLimits 每晚保留房数量 String Y 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。
例如:2
immediately 立即确认 int Y 1:可立即确认
0:不可立即确认
customerType 宾客类型 int Y 0:所有宾客
1:中国大陆宾客
2:港澳宾客
3:台湾宾客
4:中国宾客
5:国外宾客
maxOccupancy 最大可入住人数 int Y 默认值:2
freeChildrenCounts 可免费入住儿童数 int N
areaRange 物理房型面积范围 String N 格式:数值1[-数值2]
数值2>数值1
floorRange 楼层范围 String N 格式:数值1[-数值2]
数值2>数值1
hasWindow 是否有窗 int N 0:无窗
1:部分有窗
2:有窗
3:不确定
hasNonSmokeRoom 是否有无烟房 int N 1:是
0:否
hasSmokeCleanRoom 是否可无烟处理 int N 1:是
0:否
noNonSmokeRoom 无法安排无烟 int N 1:是
0:否
notAllowSmoking 不可吸烟 int N 1:是
0:否
area 房型面积 String N 物理房型面积 无需单位
wifi Wifi String Y 关联 收费类型枚举表
broadband 宽带类型 String Y 关联 收费类型枚举表
checkinTime 办理入住时间 String N 格式: HH:MM
arrivalTimeFrom 起始时间 String N 到店时间范围 格式: YYYY-MM-DD hh:mm:ss
arrivalTimeEnd 截止时间 String N 到店时间范围 格式: YYYY-MM-DD hh:mm:ss
checkoutTime 办理退房时间 String N 格式: HH:MM
roomType 物理房型信息 Object N 关联 物理房型
bedInfo 床型信息 Object Y 关联 床型信息
mealInfo 餐食信息 Object Y 关联 餐食信息
guaranteeRules 担保规则 Object N 关联 担保规则
此担保规则用于现付
refund 取消规则 Object Y 关联 取消规则
1. 若未包含取消规则属性,则默认为该价格计划一旦预订则不可取消。
2. NonRefundableRangs的优先级高于CancellationPolicyRules
hoursRooms 钟点房 Object N 关联 钟点房
channel为5时
surcharges 附加费用 Array N 关联 附加费用
信息需要展示在用户的预订提示中
remarks 备注信息 Array N 关联 备注信息
备注信息中的内容会展示在用户的预订提示中,收费项目优先展示
optionRules 可选服务 Array N 关联 可选服务
可选服务一般为酒店提供的附加服务,用户可以选择消费,内容会展示在用户的预订提示中
promotionRules 促销规则 Array N 关联 促销规则
extras 额外信息 Array N 关联 额外信息
预订时必须的且未在接口中提供定义的字段,可保存在extra中

收费类型枚举表

收费类型 描述
FREE 免费
CHARGES 收费
PART_CHARGE 部分收费
PART_FREE 部分有且免费
NONE 无此服务
UNKNOWN 未知,不确定

物理房型

节点 名称 类型 是否必须 字段描述
roomCode 房型编码 String N
roomName 房型名称 String N
supplierId 供应商编号 String N

床型信息

节点 名称 类型 是否必须 字段描述
relation 床型之间的关系 String N AND:多种床型共存
OR:多种床型可选
beds Array N 关联 床型关系

床型关系

节点 名称 类型 是否必须 字段描述
seq 床型序号 int
bedCode 床型编码 String Y 关联 床型编码枚举表
counts 床数量 int Y counts=99时,页面展示时只取的description的内容
counts=0时,页面不展示床数量
bedSize 床型尺寸 String N
description 描述信息 String Y

床型编码枚举表

床型编码 描述
SINGLE 单床
TWIN 双床
DOUBLE 双人床
QUEEN 大床
KING 特大床
BABYBED 婴儿床
ROUNDBED 圆床
WATERBED 水床
SOFABED 沙发床
SPLICINGBED 拼接床
FOLDINGBED 折叠床
DORMIROTYDEDS 床位
TATAMI 榻榻米床位
FULL 大/单/双
OTHER 其他
当类型为其他时,页面展示desription中的内容
UNKNOWN 不确定

餐食信息

节点 属性 名称 类型 是否必须 字段描述
breakfast counts 早餐 String Y 每日用餐人数
入住多晚时,以“|”分隔,数量与fromDate/toDate相对应
“2|0|1”,第一天双早,第二天不含早,第三天单早
breakfast description 描述信息 String N
lunch counts 午餐 String Y 每日用餐人数
入住多晚时,以“|”分隔,数量与fromDate/toDate相对应
“2|0|1”,第一天双早,第二天不含早,第三天单早
取值范围为counts>=0且counts<=99,counts=99时,只展示描述信息
lunch description 描述信息 String N
dinner counts 晚餐 String Y 每日用餐人数
入住多晚时,以“|”分隔,数量与fromDate/toDate相对应
“2|0|1”,第一天双晚餐,第二天不含晚餐,第三天单人晚餐
dinner description 描述信息 String N

担保规则

节点 名称 类型 是否必须 字段描述
mode 担保模式 int Y 0:用户在酒店频道担保
1:用户在第三方担保
guaranteeRule 担保规则详情 Array N 关联 担保规则详情

担保规则详情

节点 名称 类型 是否必须 字段描述
arriveStartTime 到店时间担保开始的时间 String N 用户选择最晚到店时间大于该时间需要担保,HH:MM
arriveEndTime 到店时间担保结束的时间 String N 用户选择最晚到店时间小于该时间需要担保(超时担保会用到),HH:MM
count 需要担保的最小房间数 int N 用户选择房间数大于等于这个该数字需要担保(用于超量担保)
description 描述信息 String N
priority 优先级 String Y 从1开始
rule Object N 关联 担保规则详情信息

担保规则详情信息

节点 名称 类型 是否必须 字段描述
guaranteeType 担保类型 String Y 关联 担保类型枚举表
value 担保值 String N 百分比/金额
changeType 担保变更类型 int Y 0:不可变更取消
1:允许变更取消,需在入住当日24点前hours小时变更取消
2:允许变更取消,需在入住当日最晚到店时间前hours小时变更取消
3:允许变更取消,需在date日time之前变更取消
hours 小时数 int N
time 时间 String N 格式:HH:MM
date 日期 Date N 格式:YYYY-MM-DD

担保类型枚举表

担保类型 描述
ALL_GUARANTEE 全额担保
FIRST_NIGHT_GUARANTEE 首晚担保
PERCENTAGE_GUARANTEE 按总价的百分比担保
AMOUNT_GUARANTEE 按固定金额担保

取消规则

节点 名称 类型 是否必须 字段描述
returnable 是否可以取消 String
timeZone 时区 String N
cancellationPolicyRules 规则详情 Array N 关联 取消规则详情
nonRefundableRanges 取消范围 Array N 关联 不可取消范围

取消规则详情

节点 名称 类型 是否必须 字段描述
type 取消规则类型 String Y 关联 取消规则枚举表
beforeHours 取消时间距离入住当日24点的小时数 int Y 例如:fromDate为2017-10-21,beforeHours=32,则时间为2017-10-20 16:00
value 罚金数值 String N 取消所需扣减的数值

不可取消范围

节点 属性 类型 是否必须 字段描述
startDate 不可取消开始日期 Date Y 格式:YYYY-MM-DD 如:2017-10-18
endDate 不可取消截止日期 Date Y 格式:YYYY-MM-DD 如:2017-10-18

取消规则枚举表

规则类型 描述
NO_PENALTY 无罚金
PERCENTAGE_PENALTY 按总价的百分比扣减
AMOUNT_PENALTY 按固定金额扣减
FIRST_NIGHT_PENALTY 扣除首晚

钟点房

节点 名称 类型 是否必须 字段描述
saleTimeBegin 最早到店时间 String N 格式:HH:MM
saleTimeEnd 最晚到店时间 String N 格式:HH:MM
saleTimeQuantity 售卖小时数 int N

附加费用

节点 名称 类型 是否必须 字段描述
payType 收费类型 int Y 0:预付
1:现付
chargeUnit 收费单元 String Y PerNight每晚
PerRoom_PerNight每间房每晚
PerRoom每间房
PerAdult_PerBooking每单每成人
PerAdult_PerNight每成人每晚
PerChild_PerBooking每单每儿童
PerChild_PerNight每儿童每晚
PerPerson_PerBooking每单每人
PerPerson_PerNight每人每晚
price 价格 String Y
description 描述 String Y 附加费用描述

备注信息

节点名称 名称 类型 是否必须 字段描述
seq 序号 int Y
description 描述 String Y 描述信息

可选服务

节点 名称 类型 是否必须 字段描述
inRoomRate 是否包含在房价中 String Y "true"/"false"
type 服务类型 String Y AddBed加床
AddBreakfast加早
highSpeedNetwork专享网络
LaundryService洗衣服务
ShuttleService接送机服务
chargeUnit 收费单元 String Y PerItem每次/每件/每个
PerPerson每人次
PerTime每次
PerHour每小时
PerDay每天
price 服务价格 String Y 价格为0时,提示信息需为免费,例如:可免费加床
localcurrencyCode 附加费币种 String N
description 描述 String Y 描述信息

促销规则(见附录)

节点 名称 类型 是否必须 字段描述
type 促销类型 String Y 关联 促销类型枚举表
promotionUnit 单位 String N DAY:提前xx天
HOUR:提前xx小时
默认:DAY
value 与code相关的值 String N 与type对应,
例如:若type为返现,则为每天返现金额 10|20
promotionPrice 促销金额 String N 用于记录供应商的每日促销金额,多天以“|”分隔
description 描述 String Y 描述信息

促销规则类型枚举表

促销类型 描述
Last 关联连住优惠
例如:连住3天优惠
Last_EQ 关联限时优惠
Advence 关联提前预订优惠
MaxStay 关联最多连住天数
MinRoomCount 关联最少预订房间数
MaxRoomCount 关联最多预订房间数
CashBack 关联返现
ImmediatelyReduced 关联立减
CheckoutDelay 关联延时退房
FreeUpgrade 关联免费升级
FreeShuttle 关联免费接送机
Gift 关联大礼包
Others 关联其他
此时以描述信息为准
TonightSale 关联今夜甩卖

额外信息

节点 名称 类型 是否必须 字段描述
key 关键字 String Y
value String Y

3.6.6输入示例

https://{host}/rest?method=hotel.rp&data={"hotelId":"100,200","checkin":"2017-09-01","checkout":"2017-09-06","channels": "1|2|3|4|5","ratePlanId":"YYY333399","roomCounts":"1"}

3.6.7输出示例

{
    "code": 200,
    "msg": "成功",
    "data": [
        {
            "hotelId": "100",
            "hotelCityCode": "99",
            "hotelName": "希尔顿",
            "hotelAddress": "北京通州区经济开发区",
            "hotelTel": "",
            "checkin": "2017-09-01",
            "checkout": "2017-09-05",
            "timeZone": "GMT+8",
            "currencyCode": "CNY",
            "ratePlans": [
                {
                    "id": "19291",
                    "name": "希尔顿豪华(含早)",
                    "ratePlanType": 1,
                    "isHourRoom": 1,
                    "channels": "1|2|3|4|5",
                    "memberLevel": "1|2",
                    "receiptType": 0,
                    "payType": 0,
                    "averagePrices": "100|120|113|115|111",
                    "averageRoomRates": "99|100|110|110|100",
                    "averageTaxAndFee": "1|20|3|5|11",
                    "roomStatus": "Available|Disable|Available|Available|Available",
                    "roomLimits": "1|2|3|2|2",
                    "reservedRoomLimits": "2|3|4|4|5",
                    "immediately": 0,
                    "customerType": 0,
                    "broadband": "FREE",
                    "wifi": "FREE",
                    "maxOccupancy": 2,
                    "freeChildrenCounts": 0,
                    "areaRange": "30.3-40",
                    "floorRange": "2-5",
                    "hasWindow": 0,
                    "hasNonSmokeRoom": 0,
                    "hasSmokeCleanRoom": 0,
                    "noNonSmokeRoom": 1,
                    "notAllowSmoking": 1,
                    "area": "20",
                    "arrivalTimeFrom": "2017-10-01 14:00:00",
                    "arrivalTimeEnd":"2017-10-01 16:00:00",
                    "checkinTime": "14:00",
                    "checkoutTime": "15:00",
                    "salesGuideType": 0,
                    "salesGuidePrice": "150",
                    "salesGuideRoomRates": "150|160|160|160|160",
                    "salesGuideTaxAndFee": "0|0|0|0|0",
                    "roomType": {
                        "roomCode": "110",
                        "roomName": "大床房",
                        "supplierId": "JD0309650572"
                    },
                    "guaranteeRules": {
                        "mode": 0,
                        "guaranteeRule": [
                            {
                                "priority": 1,
                                "arriveStartTime": "",
                                "arriveEndTime": "",
                                "count":2,
                                "rule": 
                                    {
                                        "changeType": 1,
                                        "value": "",
                                        "guaranteeType": "ALL_GUARANTEE",
                                        "date": "",
                                        "time": "",
                                        "hours": "25"
                                    },
                                "description": ""
                            }
                        ]
                    },
                    "bedInfo": {
                        "relation": "OR",
                        "beds": [
                            {
                                "seq": 1,
                                "bedCode": "SINGLE",                                
                                "counts": 1,
                                "bedSize": "1.5*2.0",
                                "description": "1.5*2.0大床"
                            }
                        ]
                    },
                    "mealInfo": {
                        "breakfast": {
                            "counts": "0|0|0|0|0",
                            "description": "含早"
                        },
                        "lunch": {
                            "counts": "0|0|0|0|0",
                            "description": "午餐"
                        },
                        "dinner": {
                            "counts": "0|0|0|0|0",
                            "description": ""
                        }
                    },
                    "refund": {
                        "returnable": "true",
                        "timeZone": "GMT+8",
                        "cancellationPolicyRules": [
                            {
                                "beforeHours": 32,
                                "type": "AMOUNT_PENALTY",
                                "value": "100"
                            }
                        ],
                        "nonRefundableRangs": [
                            {
                                "startDate": "2017-10-18",
                                "endDate": "2017-10-18"
                            }
                        ]
                    },
                    "surcharges": [
                        {
                            "payType": 1,
                            "chargeUnit": "PerNight",
                            "price": "22",
                            "description": "附加信息描述"
                        }
                    ],
                    "remarks": [
                        {
                            "seq": 1,
                            "description": "备注信息描述"
                        }
                    ],
                    "optionRules": [
                        {
                            "type": "AddBed",
                            "inRoomRate": "true",
                            "price": "99",
                            "chargeUnit": "PerItem",
                            "description": "可选服务描述"
                        }
                    ],
                    "promotionRules": [
                        {
                            "type": "MaxStay",
                            "value": "0|0|0|0|0",
                            "promotionUnit": "ImmediatelyReduced",
                            "promotionPrice": "10|10",
                            "description": "促销信息描述"
                        }
                    ],
                    "extras": [
                        {
                            "key": "key",
                            "value": "value"
                        }
                    ],
                    "hoursRooms": {
                        "saleTimeBegin": "17:00",
                        "saleTimeEnd": "20:00",
                        "saleTimeQuantity": 5
                    }
                }
            ]
        }
    ]
}

3.7下单API

3.7.1方法名称

hotel.occupy

3.7.2 HTTP方法

POST</br>
Content-type:application/x-www-form-urlencoded; charset=UTF-8

3.7.3接口描述

用户支付成功后,使用下单接口去供应商侧下单。接口通过POST方式请求。 重单, 请注意此处重单判断基于是否有符合条件的有效订单,严格判断请销售端确保只生成一个订单。

3.7.4输入参数

节点 名称 类型 是否必须 字段描述
data 下单对象 Object Y 下单对象
节点 名称 类型 是否必须 字段描述
supplierHotelId 酒店id String Y 供应商酒店ID
checkin 入住日期 Date Y 格式:YYYY-MM-DD
checkout 离店日期 Date Y 格式:YYYY-MM-DD
arriveTime 预计到达时间 String Y 格式:HH:MM
currencyCode 币种 String N
specialRemark 住客偏好 String Y 1:无要求
2:尽量安排大床
3:尽量安排双床
4:尽量高层
5:尽量安排安静房间
6:尽量安排无烟房
7:尽量安排相邻房间(订多间房时)多个用,连接(String)
roomCounts 房间数 int Y
totalPrice 总价 String Y
instantConfirm 是否立即确认 int Y 1:可立即确认
0:不可立即确认
customerInfo 住客信息 Array Y 关联 住客信息
当请求多间房时,需要分别设置每个房间的成人数、儿童数、儿童年龄
cardInfo 信用卡信息 Object N 可用于担保现付、VCC结算时使用
orderInfo 订单信息 Object Y 关联 订单信息
InvoiceInfo 发票信息 Object N 关联 发票信息
extras 额外信息 Array N 关联 额外信息
ratePlans 价格计划 Array Y 关联 价格计划

住客信息

节点 名称 类型 是否必须 字段描述
seq 房间序号 int N
numberOfAdults 成人数 int N
numberOfchildren 儿童数 int N
childrenAges 儿童年龄 String N 可包含多个儿童,用“|”分隔。
例如:如“1|12”,含义是两个儿童,一名1岁,一名12岁
customer 住客详情 Array Y 每个房间至少包含一个住客姓名

住客详情

节点 名称 类型 是否必须 字段描述
firstName 住客名 String Y
lastName 住客姓 String Y
gender 性别 String N 女:"female"
男:"male"
nationality 国籍 String N

信用卡信息

节点 名称 类型 是否必须 字段描述
name 持卡人姓名 String N
firstName 持卡人名 String N
lastName 持卡人姓 String N
phone 预留电话 String N 持卡人银行预留电话
certificateType 证件类型 Int N 持卡人证件类型
0:身份证
1:护照
2:其他
certificateNumber 证件号码 String N
cardNumber 信用卡号 String N
year 有效期年 String N
month 有效期月 String N
safetyCode 安全码 String N
type 卡类型 String N 参见 卡类型说明表

卡类型说明表

TYPE 名称 说明
UnionPay 银联卡 包含如下任意一种既表示支持银联:
牡丹卡(Peony)、 金穗卡(Kins)、 长城卡(Greatwall)、 龙卡(Long)、 太平洋卡(Pacific)、 东方卡(Orient)。
VISA VISA
MasterCard 万事达
AMEX 运通American Express
DinersClub 大来Diners Club
JCB JCB
BCCard BC Card
Discover Discover
CartaSi Carta Si
CarteBleue Carte Bleue
VisaElectron Visa Electron
Maestro Maestro
CITIBANK 花旗银行
ABC 农业银行
BOD 大连银行
NYRCB 鄞州银行
BOB 北京银行
BRCB 北京农商银行
BOC 中国银行
BANKOFJINZHOU 锦州银行
BANKOLANGZHOU 兰州银行
BANKQH 青海银行
CCB 中国建设银行
BANKOFCHENGDE 承德银行
CDRCB 成都农村商业银行
CEB 光大银行
CIB 兴业银行
ChinaCITICBank 中信银行
CMB 招商银行
CMBC 民生银行
BOCOM 交通银行
BANKOFCHONGQING 重庆银行
CHONGQINGRURALCOMMERCLALBANK 重庆农村商业银行
BANKOFCHANGSHA 长沙银行
CSRCBANK 常熟农村商业银行
CZCB 浙江稠州商业银行
DONGYINGBANK 东营银行
FUDIANBANK 富滇银行
FUJIANRURALCREDITUNION 福建省农村信用社
CHINAGUANGFABANK 广发银行
GUANGZHOURURALCOMMERCIALBANK 广州农村商业银行
BANKOFGUANGZHOU 广州银行
BANKOFGANZHOU 赣州银行
BANKOFHEBEI 河北银行
BEA 东亚银行
HUNANRURALCREDITUNION 湖南省农村信用社联合社
HARBINBANK 哈尔滨银行
HUISHANGBANK 徽商银行
HUXIABANK 华夏银行
HANGZHOUBANK 杭州银行
ICBC 工商银行
BANKOFJIUJIANG 九江银行
BANKOFJINHUA 金华银行
JIAGSUPROVINCERURALCREDITUNION 江苏省农村信用社联合社
BANKOFJIANGSU 江苏银行
JIANGYINRURALCOMMERCIALBANK 江阴农村商业银行
LONGJINGBANK 龙江银行
MINTAIBANK 浙江民泰商业银行
BANKOFNINGBO 宁波银行
JIANGXIBANK 南昌银行
BANKOFNANJING 南京银行
POSTALSAVINGSBANKOFCHINA 邮政储蓄银行
BANKOFQINGDAO 青岛银行
QILUBANK 齐鲁银行
SHENZHENDEVELOPMENTBANK 深发银行
SHUNDERURALCOMMERCIALBANK 顺德农村商业银行
BANKOFSHANGHAI 上海银行
PINGANBANK 平安银行
SPDB 浦发银行
SHANGRAOBANK 上饶银行
SHANGHAIRURALCOMMERCIALBANK 上海农商银行
BANKOFTAILZHOU 台州银行
UCCB 乌鲁木齐市商业银行
BANKOFWEIFANG 潍坊银行
WEIHAICITYCOMMERCIALBANK 威海市商业银行
WUJIANGRURALCOMMERCIALBANK 吴江农商银行
WUXIRURALCOMMERCIALBANK 无锡农村商业银行
BANKOFWENZHOU 温州银行
HBC 湖北银行(宜昌市商业银行)
BANKOFNINGXIA 宁夏银行(银川市商业银行)
YRCB 山西尧都农村商业银行
ZHEJIANGTAILONGCOMMERCIALBANK 浙江泰隆商业银行

订单信息

节点 名称 类型 是否必须 字段描述
jdOrderId 订单编号 String Y 京东提供
jdOrderStatus 订单状态 String Y 京东提供
jdHotelId 京东酒店ID String Y
orderDate 下单时间 Date Y 格式: YYYY-MM-DD HH:MM:SS
contactName 联系人姓名 String Y
contactPhone 联系电话 String Y
contactEmail 联系人邮箱 String Y

发票信息

节点 名称 类型 是否必须 字段描述
invoiceType 发票类型 String Y Paper-纸质发票
Electronic-电子发票
Invoice-Invoice发票
titleType title类型 String Y Personally-个人
Enterprise-企业
Government-政府机关行政单位
title 发票Title String Y
itin 纳税人识别号/统一社会信用代码 String Y
itemName 发票内容 String Y 代订房费
代订住宿费
旅游服务费
会议服务费
住宿费
旅游费
其他
address 邮寄地址 String Y invoiceType= Electronic 可为空
postal 邮编 String N invoiceType= Electronic 可为空
addressee 收件人 String Y invoiceType= Electronic 可为空
phone 收件人电话 String Y invoiceType= Electronic 可为空
email 收件人邮箱 String N invoiceType= Electronic 不可为空
isNeedRelationOrder 是否包含入住信息 int Y 0:在发票备注栏中添加酒店预订信息(酒店名称、入住日期、离店日期、房间数)
1:不添加,默认值

额外信息

节点 名称 类型 是否必须 字段描述
key 关键字 String Y
value String N

价格计划

节点 名称 类型 是否必须 字段描述
id 价格计划编码 String Y
name 价格计划名称 String Y
payType 支付方式 int Y 0:预付
1:现付
isHourRoom 是否是钟点房 int N 1:是
0:否
channels 报价售卖渠道 String N 多个以’|’分隔。空值表示不限制
memberLevel 会员级别 String N 多个以’|’分隔。空值表示不限制。见 会员级别(待提供)
ratePlanType 报价类型 int Y 0:底价
1:售价
receiptType 发票类型 int Y 0:京东提供
1:酒店提供
2:供应商提供
averagePrices 每间每晚房价(均价) String Y 入住多晚时,每晚价格以“|”分隔,数量与fromDate/toDate相对应。价格=房费+税费
例如1:
fromDate: 2017-10-21
toDate:2017-10-24
若请求两间房时,2017-10-21的房间一价格为100,房间二价格为200,则当晚的每间每晚房价为150;2017-10-22的房间一价格为100,房间二价格为100,则当晚的每间每晚房价为100;2017-10-23的房间一价格为100,房间二价格为300,则当晚的每间每晚房价为200;则averagePrices的值为“150|100|200”
若需要10日报价,但只能提供7日报价,其余报价用0补齐
averageRoomRates 每间每晚房费 String Y 入住多晚时,以“|”分隔,数量与fromDate/toDate对应。若需要10日报价,但只能提供7日报价,其余报价用0补齐
averageTaxAndFee 每间每晚税费 String Y 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应
salesGuideType 销售指导价类型 int N 0:售价=销售指导价
1:售价<销售指导价
2:售价<=销售指导价
3:售价>销售指导价
4:售价>=销售指导价
salesGuidePrice 销售指导价 String N 销售指导价
入住多晚时,以“
salesGuideRoomRates 销售指导房价 String N 销售指导价 - 房价
入住多晚时,以“
salesGuideTaxAndFee 销售指导税费 String N 销售指导价 - 税费
入住多晚时,以“
roomStatus 每晚房态 String Y Available: 可预订
Disable:不可预订
入住多晚时,以“
roomLimits 每晚房量 String Y 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。
例如:2
reservedRoomLimits 每晚保留房数量 String Y 入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。
例如:2
immediately 立即确认 int Y 1:可立即确认
0:不可立即确认
customerType 宾客类型 int Y 0:所有宾客
1:中国大陆宾客
2:港澳宾客
3:台湾宾客
4:中国宾客
5:国外宾客
maxOccupancy 最大可入住人数 int Y 默认值:2
freeChildrenCounts 可免费入住儿童数 int N
areaRange 物理房型面积范围 String N 格式:数值1[-数值2]
数值2>数值1
floorRange 楼层范围 String N 格式:数值1[-数值2]
数值2>数值1
hasWindow 是否有窗 int N 0:无窗
1:部分有窗
2:有窗
3:不确定
hasNonSmokeRoom 是否有无烟房 int N 1:是
0:否
hasSmokeCleanRoom 是否可无烟处理 int N 1:是
0:否
noNonSmokeRoom 无 法安排无烟 int N 1:是
0:否
notAllowSmoking 不可吸烟 int N 1:是
0:否
area 房型面积 String N 物理房型面积
wifi Wifi String Y 关联 收费类型枚举表
broadband 宽带类型 String Y 关联 收费类型枚举表
checkinTime 办理入住时间 String N 格式: HH:MM
arrivalTimeFrom 起始时间 String N 到店时间范围 格式: HH:MM
arrivalTimeEnd 截止时间 String N 到店时间范围 格式: HH:MM
checkoutTime 办理退房时间 String N 格式: HH:MM
roomType 物理房型信息 Object N 关联 物理房型
bedInfo 床型信息 Object Y 关联 床型信息
mealInfo 餐食信息 Object Y 关联 餐食信息
guaranteeRules 担保规则 Object N 关联 担保规则
此担保规则用于现付
refund 取消规则 Object Y 关联 取消规则
1. 若未包含取消规则属性,则默认为该价格计划一旦预订则不可取消
2. NonRefundableRangs的优先级高于CancellationPolicyRules
hoursRooms 钟点房 Object N 关联 钟点房
channel为5时
surcharges 附加费用 Array N 关联 附加费用
信息需要展示在用户的预订提示中
remarks 备注信息 Array N 关联 备注信息
备注信息中的内容会展示在用户的预订提示中,收费项目优先展示
optionRules 可选服务 Array N 关联 可选服务
可选服务一般为酒店提供的附加服务,用户可以选择消费,内容会展示在用户的预订提示中
promotionRules 促销规则 Array N 关联 促销规则
extras 额外信息 Array N 关联 额外信息
预订时必须的且未在接口中提供定义的字段,可保存在extra中

收费类型枚举表

收费类型 描述
FREE 免费
CHARGES 收费
PART_CHARGE 部分收费
PART_FREE 部分有且免费
NONE 无此服务
UNKNOWN 未知,不确定

物理房型

节点 名称 类型 是否必须 字段描述
roomCode 房型编码 String N
roomName 房型名称 String N
supplierId 供应商编号 String N

床型信息

节点 名称 类型 是否必须 字段描述
relation 床型之间的关系 String N AND:多种床型共存
OR:多种床型可选
beds Array N 关联 床型关系

床型关系

节点 名称 类型 是否必须 字段描述
seq 床型序号 int Y
bedCode 床型编码 String Y 关联 床型编码枚举表
counts 床数量 int Y counts=99时,页面展示时只取的description的内容。
bedSize 床型尺寸 String N
description 描述信息 String Y

床型编码枚举表

床型编码 描述
SINGLE 单床
TWIN 双床
DOUBLE 双人床
QUEEN 大床
KING 特大床
BABYBED 婴儿床
ROUNDBED 圆床
WATERBED 水床
SOFABED 沙发床
SPLICINGBED 拼接床
FOLDINGBED 折叠床
DORMIROTYDEDS 床位
TATAMI 榻榻米床位
FULL 大/单/双
OTHER 其他
当类型为其他时,页面展示desription中的内容
UNKNOWN 不确定

餐食信息

节点 属性 名称 类型 是否必须 字段描述
breakfast counts 早餐 String Y 每日用餐人数
入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。
“2|0|1”,第一天双早,第二天不含早,第三天单早
breakfast description 描述信息 String N
lunch counts 午餐 String Y 每日用餐人数
入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。
“2|0|1”,第一天双早,第二天不含早,第三天单早。
取值范围为counts>=0且counts<=99,counts=99时,只展示描述信息
lunch description 描述信息 String N
dinner counts 晚餐 String Y 每日用餐人数
入住多晚时,以“|”分隔,数量与fromDate/toDate相对应。
“2|0|1”,第一天双晚餐,第二天不含晚餐,第三天单人晚餐。
dinner description 描述信息 String N

担保规则

节点 名称 类型 是否必须 字段描述
mode 担保模式 int Y 0:用户在酒店频道担保
1:用户在第三方担保
guaranteeRule 担保规则详情 Array N 关联 担保规则详情

担保规则详情

节点 名称 类型 是否必须 字段描述
arriveStartTime 到店时间担保开始的时间 String N 用户选择最晚到店时间大于该时间需要担保,HH:MM
arriveEndTime 到店时间担保结束的时间 String N 用户选择最晚到店时间小于该时间需要担保(超时担保会用到),HH:MM
count 需要担保的最小房间数 int N 用户选择房间数大于等于这个该数字需要担保(用于超量担保)
description 描述信息 String N
priority 优先级 String Y 从1开始
rule Object N 关联 担保规则详情信息

担保规则详情信息

节点 名称 类型 是否必须 字段描述
guaranteeType 担保类型 String Y 关联 担保类型枚举表
value 担保值 String N 百分比/金额
changeType 担保变更类型 int Y 0:不可变更取消
1:允许变更取消,需在入住当日24点前hours小时变更取消
2:允许变更取消,需在入住当日最晚到店时间前hours小时变更取消。
3:允许变更取消,需在date日time之前变更取消。
hours 小时数 int N
time 时间 String N 格式:HH:MM
date 日期 Date N 格式:YYYY-MM-DD

担保类型枚举表

担保类型 描述
ALL_GUARANTEE 全额担保
FIRST_NIGHT_GUARANTEE 首晚担保
PERCENTAGE_GUARANTEE 按总价的百分比担保
AMOUNT_ GUARANTEE 按固定金额担保

取消规则

节点 名称 类型 是否必须 字段描述
retunable 是否可以取消 String Y “true”: 可以取消,且须按如下规则取消
“false”:不可取消
timeZone 时区 String N
cancellationPolicyRules 规则详情 Array N 关联 取消规则详情
nonRefundableRanges 取消范围 Array N 关联 不可取消范围

取消规则详情

节点 名称 类型 是否必须 字段描述
type 取消规则类型 String Y 关联 取消规则枚举表
beforeHours 取消时间距离入住当日24点的小时数 int Y 例如:fromDate为2017-10-21,beforeHours=32,则时间为2017-10-20
value 罚金数值 String N 取消所需扣减的数值

不可取消范围

节点 属性 类型 是否必须 字段描述
startDate 不可取消开始日期 Date Y 格式:YYYY-MM-DD 如:2017-10-18
endDate 不可取消截止日期 Date Y 格式:YYYY-MM-DD 如:2017-10-18

取消规则枚举表

规则类型 描述
NO_PENALTY 无罚金
PERCENTAGE_PENALTY 按总价的百分比扣减
AMOUNT_PENALTY 按固定金额扣减
FIRST_NIGHT_PENALTY 扣除首晚

钟点房

节点 名称 类型 是否必须 字段描述
saleTimeBegin 最早到店时间 String N 格式:HH:MM
saleTimeEnd 最晚到店时间 String N 格式:HH:MM
saleTimeQuantity 售卖小时数 int N

附加费用

节点 名称 类型 是否必须 字段描述
payType 收费类型 int Y 0:预付
1:现付
chargeUnit 收费单元 String Y PerNight每晚
PerRoom_PerNight每间房每晚
PerRoom每间房
PerAdult_PerBooking每单每成人
PerAdult_PerNight每成人每晚
PerChild_PerBooking每单每儿童
PerChild_PerNight每儿童每晚
PerPerson_PerBooking每单每人
PerPerson_PerNight每人每晚
price 价格 String Y
description 描述 String Y 附加费用描述

备注信息

节点名称 名称 类型 是否必须 字段描述
seq 序号 int Y
description 描述 String Y 描述信息

可选服务

节点 名称 类型 是否必须 字段描述
inRoomRate 是否包含在房价中 String Y true/false
type 服务类型 String Y AddBed加床
AddBreakfast加早
highSpeedNetwork专享网络
LaundryService洗衣服务
ShuttleService接送机服务
chargeUnit 收费单元 String Y PerItem每次/每件/每个
PerPerson每人次
PerTime每次
PerHour每小时
PerDay每天
price 服务价格 String Y 价格为0时,提示信息需为免费,例如:可免费加床

促销规则(见附录)

节点 名称 类型 是否必须 字段描述
type 促销类型 String Y 关联 促销类型枚举表
promotionUnit 单位 String N DAY:提前xx天
HOUR:提前xx小时 默认:DAY
value 与code相关的值 String N 与type对应,
例如:若type为返现,则为每天返现金额 10|20
promotionPrice 促销金额 String N 用于记录供应商的每日促销金额,多天以“|”分隔
description 描述 String Y 描述信息

促销规则类型枚举表

促销类型 描述
Last 关联连住优惠
例如:连住3天优惠
Last_EQ 关联限时优惠
Advence 关联提前预订优惠
MaxStay 关联最多连住天数
MinRoomCount 关联最少预订房间数
MaxRoomCount 关联最多预订房间数
CashBack 关联返现
ImmediatelyReduced 关联立减
CheckoutDelay 关联延时退房
FreeUpgrade 关联免费升级
FreeShuttle 关联免费接送机
Gift 关联大礼包
Others 关联其他
此时以描述信息为准
TonightSale 关联今夜甩卖

额外信息

节点 名称 类型 是否必须 字段描述
key 关键字 String Y
value String Y

3.7.5输出参数

节点 名称 类型 是否必须 字段描述
jdOrderId 京东订单号 String Y 京东订单ID
supplierOrderId 供应商订单号 String Y 供应商订单ID
bookingResult 预订结果 String Y SUCCESS: 预订成功
FAILURE: 预订失败
confirmationNumber 确认号 String N 可以作为入住凭证
errorMessage 错误节点 Object N 关联 错误节点 bookingResult= FAILURE时不为空
duplicatedOrderId 供应商已存在订单号 String N 如果错误码是重复订单,需要传此字段(供应商侧订单ID)
extras 附加信息 Array N 关联附加信息

错误节点

节点 名称 类型 是否必须 字段描述
code 错误编码 int N 1:无房
2:价格错误/变价
3:重复订单
4:其他
desc 错误描述 String N

附加信息

节点 名称 类型 是否必须 字段描述
key 关键字 String N
value String N

3.7.6输入示例

https://{host}/rest?method=hotel.occupy

request Body:
data={
    "supplierHotelId":"1000",
    "checkin":"2017-09-10",
    "checkout":"2017-09-12",
    "totalPrice":"600",
    "currencyCode":"CNY",
    "specialRemark":"1,2,3",
    "arriveTime":"11:30",
    "roomCounts":2,
    "instantConfirm":0,
    "ratePlans":[
        {
            "id":"19291",
            "name":"希尔顿豪华(含早)",
            "ratePlanType":1,
            "isHourRoom":1,
            "channels":"1|2|3|4|5",
            "memberLevel":"1|2",
            "receiptType":0,
            "payType":0,
            "averagePrices":"100|120|113|115|111",
            "averageRoomRates":"99|100|110|110|100",
            "averageTaxAndFee":"1|20|3|5|11",
            "roomStatus":"Available|Disable|Available|Available|Available",
            "roomLimits":"1|2|3|2|2",
            "reservedRoomLimits":"2|3|4|4|5",
            "immediately":0,
            "customerType":0,
            "broadband":"FREE",
            "wifi":"FREE",
            "maxOccupancy":2,
            "freeChildrenCounts":0,
            "areaRange":"30.3-40",
            "floorRange":"2-5",
            "hasWindow":0,
            "hasNonSmokeRoom":0,
            "hasSmokeCleanRoom":0,
            "noNonSmokeRoom":1,
            "notAllowSmoking":1,
            "area":"20",
            "arrivalTimeFrom":"2017-10-01 14:00:00",
            "arrivalTimeEnd":"2017-10-01 16:00:00",
            "checkinTime":"14:00",
            "checkoutTime":"15:00",
            "salesGuideType":0,
            "salesGuidePrice":"150",
            "salesGuideRoomRates":"150|160|160|160|160",
            "salesGuideTaxAndFee":"0|0|0|0|0",
            "roomType":{
                "roomCode":"110",
                "roomName":"大床房",
                "supplierId":"JD0309650572"
            },
            "guaranteeRules":{
                "mode":0,
                "guaranteeRule":[
                    {
                        "priority":1,
                        "arriveStartTime":"",
                        "arriveEndTime":"",
                        "count":2,
                        "rule":{
                            "changeType":1,
                            "value":"",
                            "guaranteeType":"ALL_GUARANTEE",
                            "date":"",
                            "time":"",
                            "hours":"25"
                        },
                        "description":""
                    }
                ]
            },
            "bedInfo":{
                "relation":"OR",
                "beds":[
                    {
                        "seq":1,
                        "bedCode":"SINGLE",
                        "counts":1,
                        "bedSize":"1.5*2.0",
                        "description":"1.5*2.0大床"
                    }
                ]
            },
            "mealInfo":{
                "breakfast":{
                    "counts":"0|0|0|0|0",
                    "description":"含早"
                },
                "lunch":{
                    "counts":"0|0|0|0|0",
                    "description":"午餐"
                },
                "dinner":{
                    "counts":"0|0|0|0|0",
                    "description":""
                }
            },
            "refund":{
                "returnable":"true",
                "timeZone":"GMT+8",
                "cancellationPolicyRules":[
                    {
                        "beforeHours":32,
                        "type":"AMOUNT_PENALTY",
                        "value":"100"
                    }
                ],
                "nonRefundableRangs":[
                    {
                        "startDate":"2017-10-18",
                        "endDate":"2017-10-18"
                    }
                ]
            },
            "surcharges":[
                {
                    "payType":1,
                    "chargeUnit":"PerNight",
                    "price":"22",
                    "description":"附加信息描述"
                }
            ],
            "remarks":[
                {
                    "seq":1,
                    "description":"备注信息描述"
                }
            ],
            "optionRules":[
                {
                    "type":"AddBed",
                    "inRoomRate":"true",
                    "price":"99",
                    "chargeUnit":"PerItem",
                    "description":"可选服务描述"
                }
            ],
            "promotionRules":[
                {
                    "type":"MaxStay",
                    "value":"0|0|0|0|0",
                    "promotionUnit":"ImmediatelyReduced",
                    "promotionPrice":"10|10",
                    "description":"促销信息描述"
                }
            ],
            "extras":[
                {
                    "key":"key",
                    "value":"value"
                }
            ],
            "hoursRooms":{
                "saleTimeBegin":"17:00",
                "saleTimeEnd":"20:00",
                "saleTimeQuantity":5
            }
        }
    ],
    "customerInfo":[
        {
            "seq":0,
            "numberOfAdults":4,
            "numberOfchildren":10,
            "childrenAges":"1",
            "customer":[
                {
                    "firstName":"东",
                    "lastName":"京",
                    "nationality":"中国",
                    "gender":"female"
                }
            ]
        }
    ],
    "cardInfo":{
        "name":"京东",
        "firstName":"东",
        "lastName":"京",
        "phone":"13800138000",
        "certificateType":0,
        "certificateNumber":"1001030303020202",
        "cardNumber":"6226656799900099",
        "year":"2020",
        "month":"10",
        "safetyCode":"KK00LL",
        "type":"VISA"
    },
    "orderInfo":{
        "jdOrderId":"9999999999",
        "jdOrderStatus":"已支付",
        "jdHotelId":"1000",
        "orderDate":"2017-09-0612: 00: 00",
        "contactName":"京东",
        "contactPhone":"400-606-5500",
        "contactEmail":"order@jd.com"
    },
    "invoiceInfo":{
        "invoiceType":"Paper",
        "titleType":"Personally",
        "title":"京东",
        "itin":"22226666",
        "itemName":"代订房费",
        "amount":"100",
        "address":"京东大厦",
        "postal":"100020",
        "addressee":"京东",
        "phone":"4006067733",
        "email":"jd@jd.com",
        "isNeedRelationOrder":1
    },
    "extras":[
        {
            "key":"key",
            "value":"value"
        }
    ]
}

3.7.7输出示例

{
    "code": 200,
    "msg": "成功",
    "data": {
        "jdOrderId": "9999999999",
        "supplierOrderId": "YL-99999",
        "bookingResult": "FAILURE",
        "confirmationNumber": "",
        "duplicatedOrderId": "YL-99999",
        "errorMessage": {
            "code": 1,
            "desc": "无房,请重新预定"
        },
        "extra": {
            "key": "",
            "value": ""
        }
    }
}

3.8订单取消API

3.8.1方法名称

hotel.cancelOccupy

3.8.2 HTTP方法

GET

3.8.3接口描述

当客户取消预订订单时,京东将会调用这个API进行订单取消操作。

3.8.4输入参数

节点 名称 类型 是否必须 字段描述
jdOrderId 京东订单号 String Y
supplierOrderId 供应商订单号 String Y
reason 取消原因 String N
extra 附加信息 Object N

附加信息

节点 名称 类型 是否必须 字段描述
key 关键字 String N
value String N

3.8.5输出参数

节点 名称 类型 是否必须 字段描述
jdOrderId 京东订单号 String Y 京东订单ID
supplierOrderId 供应商订单号 String Y 供应商订单ID
cancelResult 取消结果 String Y SUCCESS: 取消成功
FAILURE: 取消失败
errorMessage 错误节点 Object N 关联 错误节点
cancelResult=FAILURE时不为空
extra 附加信息 Array N

错误节点

节点 名称 类型 是否必须 字段描述
code 错误编码 int N 1:无此订单
2:系统忙稍后重试
3:其他
desc 错误描述 String N

附加信息

节点 名称 类型 是否必须 字段描述
key 关键字 String N
value String N

3.8.6输入示例

https://{host}/rest?method=hotel.cancelOccupy&data=
{
    "jdOrderId": "9999999999",
    "supplierOrderId": "YL-99999",
    "reason": "取消原因",
    "extra": 
        {
            "key": "cancelDebitPrice"(取消时扣款金额),
            "value": "985.0"(金额数值)
        } 
}

3.8.7输出示例

{
    "code":200,
    "msg":"成功",
    "data":{
        "jdOrderId":"9999999999",
        "supplierOrderId":"YL-99999",
        "cancelResult":"FAILURE",
        "errorMessage":{
            "code":3,
            "desc":"超过取消时间"
        },
        "extra":[
            {
                "key":"",
                "value":""
            }
        ]
    }
}

3.9订单查询API

3.9.1方法名称

hotel.queryOrder

3.9.2 HTTP方法

GET

3.9.3接口描述

此接口供应商提供预订细节查询,包括订单状态、房间价格和房间信息等,与此订单相关的所有订单信息。需支持京东订单号或供应商订单号来查询。

3.9.4输入参数

节点 名称 类型 是否必须 字段描述
jdOrderId 京东订单号 String Y
supplierOrderId 供应商订单号 String Y
supplierHotelId 供应商酒店ID String N
bookingDate 下单时间 Date N 格式:YYYY-MM-DD hh:mm:ss
checkin 入店时间 Date N 格式:YYYY-MM-DD
checkout 离店时间 Date N 格式:YYYY-MM-DD
contactInfo 联系人 Object N 关联 联系人信息
extra 附加信息 Object N 关联 附加信息

联系人信息

节点 名称 类型 是否必须 字段描述
firstName String N
lastName String N

附加信息

节点 名称 类型 是否必须 字段描述
key 关键字 String N
value String N

3.9.5输出参数

节点 名称 类型 是否必须 字段描述
jdOrderId 京东订单号 String Y 京东订单ID
supplierOrderId 供应商订单号 String Y 供应商订单ID
supplierOrderStatus 预订结果 String Y 关联 订单状态枚举表
confirmationNumber 确认号 String N
supplierHotelId 供应商酒店ID String N
bookingDate 下单时间 Date N 格式:YYYY-MM-DD hh:mm:ss
checkin 入店时间 Date N 格式:YYYY-MM-DD
checkout 离店时间 Date N 格式:YYYY-MM-DD
queryResult 预订结果 String Y SUCCESS: 查询成功
FAILURE: 查询失败
errorMessage 错误节点 Object N 关联 错误节点
cancelResult= FAILURE时不为空
customerInfo 住客信息 Array N 关联 住客信息
contactInfo 联系人 Object N 关联 联系人信息
totalPrice 订单总价 String N
shopPayInfo 现付信息 Array N 关联 现付信息

错误节点

节点 名称 类型 是否必须 字段描述
code 错误编码 int N 1:无此订单
2:其他
desc 错误描述 String N

住客信息

节点 名称 类型 是否必须 字段描述
seq 房间序号 int N
numberOfAdults 成人数 int N
numberOfchildren 儿童数 int N
childrenAges 儿童年龄 String Y 可包含多个儿童,用“|”分隔。 例如:如“1|12”,含义是两个儿童,一名1岁,一名12岁
customer 住客详情 Object Y 关联 住客详情
每个房间至少包含一个住客姓名

住客详情

节点 名称 类型 是否必须 字段描述
firstName 住客名 String Y
lastName 住客姓 String Y
gender 性别 String N 女:"female"
男:"male"
nationality 国籍 String N

联系人信息

节点 名称 类型 是否必须 字段描述
firstName String N
lastName String N

现付信息

节点 名称 类型 是否必须 字段描述
seq 与customerInfo@seq相对应 int Y
actualRoomNo 入住房间号 String N
confirmationNo 确认号 String Y
confirmationStatus 确认状态 String N 关联 订单状态枚举表
actualCheckout 实际离店日期 Date Y

订单状态枚举表

订单状态 说明
CONFIRM_PENDING 待确认
CONFIRMED_SUCCESS 确认成功
CONFIRMED_FAILURE 确认失败
CANCELED 取消成功
CANCELED_PENDING 取消中
CANCELED_FAILURE 取消失败
NO_SHOW 未入住
CHECKED_IN 已入住
CHECKED_OUT 已离店
EARLY_CHECKED_OUT 提前离店

3.9.6输入示例

https://{host}/rest?method=hotel.queryOrder&data=
{
    "jdOrderId": "9999999999",
    "supplierOrderId": "YL-99999",
    "hotelId": "1000",
    "bookingDate": "",
    "checkin": "",
    "checkout": "",
    "contactInfo": {
        "firstName": "东",
        "lastName": "京"
    },
    "extra": {
        "key": "",
        "value": ""
    }
}

3.9.7输出示例

{
    "code": 200,
    "msg": "成功",
    "data": {
        "jdOrderId": "9999999999",
        "supplierOrderId": "YL-99999",
        "supplierOrderStatus": "CONFIRM_PENDING",
        "confirmationNumber": "",
        "totalPrice": "600",
        "hotelId": "1000",
        "bookingDate": "",
        "checkin": "",
        "checkout": "",
        "customerInfo": [
            {
                "seq": 0,
                "numberOfAdults": 4,
                "numberOfchildren": 10,
                "childrenAges": "1",
                "customer": [
                    {
                        "firstName": "东",
                        "lastName": "京",
                        "nationality": "中国",
                        "gender": "female"
                    }
                ]
            }
        ],
        "contactInfo": {
            "firstName": "东",
            "lastName": "京"
        },
        "shopPayInfo": [
            {
                "seq": 0,
                "actualRoomNo": "201",
                "confirmationNo": "",
                "confirmationStatus": "CONFIRM_PENDDING",
                "actualCheckout": "2017-10-01"
            }
        ],
        "queryResult": "FAILURE",
        "errorMessage": {
            "code": 3,
            "desc": "超过取消时间"
        } 
    }
}

四.附录

4.1状态码表

状态码枚举表

状态码 含义
200 成功
500 服务器异常
1001 AppId为空
1002 酒店不存在
1003 参数错误
1004 必填项为空
1005 时间戳为空
1006 数字签名为空
1007 数字签名错误
1008 AppId不存在
1009 预存金额不足

4.2币种

代码 描述
CNY 人民币

4.3促销

1.连住优惠

type 促销类型 Last
promotionUnit 单位 DAY:连住xx天
value 与code相关的值 需要连住的天数N
例如:3,则连住3天以上享受此优惠
promotionPrice 促销金额 供应商每天优惠的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示

2.限时优惠

type 促销类型 Last_EQ
promotionUnit 单位
value 与code相关的值
promotionPrice 促销金额 每天优惠的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示。
当前时段不符合限时优惠时,供应商需要对报价进行过滤

3.提前预定优惠

type 促销类型 Advance
promotionUnit 单位 DAY:提前xx天
HOUR:提前XX小时,以入住日24点为准
例如:DAY
value 与code相关的值 需要提前的天数或者小时数N
例如:3,则提前3天预定以上享受此优惠
promotionPrice 促销金额 预定时间内每天优惠的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示

4.最多连住天数

type 促销类型 MaxStay
promotionUnit 单位 DAY:最多连住xx天
value 与code相关的值 最多连住天数N
例如:3,则用户最多可以预定3天
promotionPrice 促销金额 预定时间内每天优惠的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示

5.最少预订房间数

type 促销类型 MinRoomCount
promotionUnit 单位
value 与code相关的值 最小预定间数N
例如:3,则用户最少预定3间可以享受优惠价格
promotionPrice 促销金额 预定日期内每天优惠的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示

6.最多预订房间数

type 促销类型 MaxRoomCount
promotionUnit 单位
value 与code相关的值 最大预定间数N
例如:3,则用户最多预定3间
promotionPrice 促销金额 预定日期内每天优惠的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示

7.返现

type 促销类型 CashBack
promotionUnit 单位
value 与code相关的值
promotionPrice 促销金额 预定日期内每天返现的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日返现10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示。
注:当前时间段不在优惠时段时,供应商需要将报价过滤掉

8.立减

type 促销类型 ImmediatelyReduced
promotionUnit 单位
value 与code相关的值
promotionPrice 促销金额 预定日期内每天立减的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日立减10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示。
注:当前时间段不在优惠时段时,供应商需要将报价过滤掉

9.延时退房、免费升级、免费接送机、大礼包、其他

type 促销类型 CheckoutDelay
FreeUpgrade
FreeShuttle
Gift
Others
promotionUnit 单位
value 与code相关的值
promotionPrice 促销金额

10.今夜甩卖

type 促销类型 TonightSale
promotionUnit 单位
value 与code相关的值
promotionPrice 促销金额 预定日期内每天优惠的金额,与fromDate/toDate相对应,多天用“|”分隔。
例如:10|10|10,则每日优惠10元,此优惠金额只用于记录保存展示,不会在报价中再次扣减。如果没有具体优惠金额,可以用0表示。
注:当前时间段不在优惠时段时,供应商需要将报价过滤掉

4.4加密方法

/**
     * MD5 哈希运算
     *
     * @param input
     * 待计算MD5哈希值的输入字符串
     * @param charset
     * 输入字符串的字符集
     * @return 输入字符串的MD5哈希值
     */
    public static String getMD5(String input, String charset) {
        String s = null;
        char hexDigits[] = { //用来将字节转换成 16 进制表示的字符
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c',
                'd',
                'e', 'f'};
        try {
            java.security.MessageDigest md =java.security.MessageDigest.getInstance("MD5");
            md.update(input.getBytes(charset));
            byte tmp[] = md.digest(); //MD5 的计算结果是一个 128 位的长整数,用字节表示就是 16 个字节
            char str[] = new char[16 * 2]; //每个字节用 16 进制表示的话,使用两个字符,所以表示成 16
            // 进制需要 32 个字符
            int k = 0; // 表示转换结果中对应的字符位置
            for (int i = 0; i < 16; i++) { //从第一个字节开始,对 MD5 的每一个字节转换成 16
                // 进制字符的转换
                byte byte0 = tmp[i]; //取第 i 个字节
                str[k++] = hexDigits[byte0 >>> 4 & 0xf]; //取字节中高 4位的数字转换,
                // >>>
                // 为逻辑右移,将符号位一起右移
                str[k++] = hexDigits[byte0 & 0xf]; //取字节中低 4 位的数字转换
            }
            s = new String(str); //换后的结果转换为字符串
        } catch (Exception e) {
            e.printStackTrace();
        }
        return s;
    }