验证价格库存接口(商家封装服务)
第三方系统根据此接口定义实现试单方法,并暴露成服务。去啊系统在用户下单时调用第三方的试单服务来确认产品是否可售。
接收阿里旅行调用接口方式
1. 由第三方提供一个接收阿里请求的服务地址(注意:所有的接口请求均用这个相同的地址),以及用于验证的用户名和密码。
2. 第三方根据请求参数中的xml父节点区分业务请求类型,根据文档要求开发接收请求数据和返回相应的数据
名称 |
类型 |
是否必须 |
最大长度/取值范围 |
描述 |
示例值 |
|
Username |
String |
是 |
100 |
第三方系统接口调用需要校验时的用户名。 |
taobao |
|
Password |
String |
是 |
100 |
第三方系统接口调用需要校验时的密码 |
taobao |
|
CreateToken |
String |
是 |
255 |
单次请求token |
taobao1387784033263-1387784033266 |
|
TaoBaoHotelId |
long |
是 |
|
淘宝酒店id |
123456789 |
|
HotelId |
String |
是 |
64 |
OTA酒店id,即第三方系统中的酒店id |
80 |
|
TaoBaoRoomTypeId |
long |
是 |
|
淘宝房型id |
123456978 |
|
RoomTypeId |
String |
是 |
64 |
OTA房型id,即第三方系统中的房型id |
1205
|
|
TaoBaoRatePlanId |
long |
是 |
|
淘宝价格计划id |
123000123
|
|
RatePlanCode |
String |
是 |
64 |
OTA价格计划id,即第三方系统中的价 格计划id |
VIP
|
|
TaoBaoGid |
long |
是 |
|
淘宝酒店商品id |
123456789 0
|
|
CheckIn |
Date |
是 |
yyyy-MM-dd |
入住时间 |
2013-12-24 |
|
CheckOut |
Date |
是 |
yyyy-MM-dd |
离店日期。
|
2013-12-26 |
|
RoomNum |
int |
是 |
取值:1-9 |
房间数量(最大为9) |
1 |
|
CustomerNumber |
int |
是 |
取值:1-9 |
入住人数 |
3 |
|
Occupancy |
Occupancy |
否 | 不支持儿童价的商家,不显示此字段 支持儿童价的商家,此字段会显示 |
|||
Occupancy.AdultNumber | int | 否 | 取值:1-9 | 成人数量 不支持儿童价的商家,不显示此字段 支持儿童价的商家,此字段会显示 |
2 | |
Occupancy.ChildrenNumber |
int | 否 | 儿童数量 不支持儿童价的商家,不显示此字段 支持儿童价的商家,此字段会显示 |
1 | ||
Occupancy.ChildrenAge |
List<Integer> | 否 | 儿童年龄列表 不支持儿童价的商家,不显示此字段 支持儿童价的商家,此字段会显示 |
|||
Occupancy.ChildrenAge.Age |
int | 否 | 儿童年龄 不支持儿童价的商家,不显示此字段 支持儿童价的商家,此字段会显示 |
|||
PaymentType |
int |
是 |
取值:1、5、6 |
支付方式1预付5面付6信用住 |
5 |
|
Extensions |
String |
否 |
|
扩展字段json,用于处理特殊OTA个 性需求添加的扩展字段 |
{"key":"value"} |
|
Supplier |
String |
否 |
供应商 | taobao | ||
TotalPrice |
Long |
否 |
订单总价,单位分 包含儿童价部分 |
10000 | ||
DailyInfos |
DailyInfos |
否 | 每日价格 | |||
CurrencyCode |
String |
否 | 币种 | CNY |
示例:
<ValidateRQ> <AuthenticationToken> <Username>taobao</Username> <Password>B75!jaJb[eO8</Password> <CreateToken>22251178182015010620150107497867981843210904377</CreateToken> </AuthenticationToken> <TaoBaoHotelId>1357757818</TaoBaoHotelId> <HotelId>3FENY3V11P</HotelId> <TaoBaoRoomTypeId>5501264818</TaoBaoRoomTypeId> <RoomTypeId>3FENY3V11P-RT1241</RoomTypeId> <TaoBaoRatePlanId>4978679818</TaoBaoRatePlanId> <RatePlanCode>3FENY3V11P-RT1241-RP846</RatePlanCode> <TaoBaoGid>3824371818</TaoBaoGid> <CheckIn>2015-01-06</CheckIn> <CheckOut>2015-01-07</CheckOut> <RoomNum>1</RoomNum> <CustomerNumber>4</CustomerNumber> <Occupancy> <AdultNumber>2</AdultNumber> <ChildrenNumber>2></ChildrenNumber> <ChildrenAge> <Age>12</Age> <Age>9</Age> </ChildrenAge> </Occupancy> <PaymentType>1</PaymentType> <Extensions>{"searchid":"22251178182015010620150107497867981843210904377"} </Extensions> <TotalPrice>7949</TotalPrice> </ValidateRQ> |
返回结果(成功)
名称 |
类型 |
是否必须 |
限制范围 |
描述 |
示例值 |
Message |
String |
否 |
300 |
试单可能需要返回的一些描述信息 |
123456 |
CreateOrderValidateKey |
String |
否 |
512 |
该返回值用于接入方需要在下单时传入的试单信息(如试单Key或ID等等,接入方自己定义格式,淘宝会把该返回值原封不动透传到“订单创建”接口参数Extensions字段中,Key为CreateOrderValidateKey) |
abc73772883333 |
ResultCode |
String |
是 |
取值:0 |
处理结果,0成功 |
0 |
InventoryPrice |
String |
是 |
请求期间价格库存日历 |
价格日历 其中Price是总价 price=roomPrice+tax+serviceFee roomPrice是房费(儿童加价应包含在内) tax是税费 taxes:税费明细,是一个数组,每个数组元素是一个包含税费信息的对象。包括:taxId:税费 ID,类型:int,必填:是,具体枚举:taxId=0=其他税(OTHER),taxId=3=住宿税(RENTAL_TAX);type:税费类型,类型:string、必填:是,可选值:Mandatory:预付税费(包含在总价中),Excluded:到店税费(不包含在总价中);valueType:费率类型,类型:string,必填:否,可选值:percentage:百分比、fixed:固定金额;amount:具体金额,类型:string,必填:否,单位:分/百分比。 注意:每个taxes数组里的含税金额相加要与tax的值一致,否则将会报错,当tax字段为空时则不会校验;当某税费不知道金额时则可不传tax字段,仅taxes字段里传对应信息即可;未知税费,请在taxId里选择其他税类,住宿税只能传1个,当传多个时飞猪则以第一个为主,若因传多个导致的问题,需由商家自行负责 serviceFee是服务费 如果没有拆分房费税费服务费只需要传price值,拆分了且需要传的话,必须保证三者都有值,quota是剩余真实库存 如果试单请求中的RatePlanCode属于底价加价的价格计划,价格日历中仅填充price字段 |
[{ "date": "2015-01-01", "price": 21000, "roomPrice":20000, "quota": 4, "tax":1000, "serviceFee":0, "taxes": [{ "taxId": "3", "type": "Mandatory", "valueType": "fixed", "amount": 1000 }] }, { "date": "2015-01-02", "price": 22000, "roomPrice":20000, "quota": 4, "tax":2000 "serviceFee":0, "taxes": [ { "taxId": "0", "type": "Excluded", "value_type": "percentage", "amount": 20 }, { "taxId": "3", "type": "Mandatory", "value_type": "fixed", "amount": 2000 } ] }] |
CurrencyCode |
String | 否 | 如果是外币,此项为必填,如不返回,默认为CNY |
CNY,USD,HKD |
示例:
<?xml version="1.0" encoding="utf-8"?> <Result> <Message></Message> < CreateOrderValidateKey></ CreateOrderValidateKey> <ResultCode>0</ResultCode> <InventoryPrice> [{ "date": "2015-01-01", "price": 21000, "roomPrice":20000, "quota": 4, "tax":1000, "serviceFee":0, "taxes": [{ "taxId": "3", "type": "Mandatory", "valueType": "fixed", "amount": 1000 }] }, { "date": "2015-01-02", "price": 22000, "roomPrice":20000, "quota": 4, "tax":2000 "serviceFee":0, "taxes": [ { "taxId": "0", "type": "Excluded", "value_type": "percentage", "amount": 20 }, { "taxId": "3", "type": "Mandatory", "value_type": "fixed", "amount": 2000 } ] }] </InventoryPrice> <CurrencyCode>CNY</CurrencyCode> </Result> |
返回结果(失败)
名称 |
类型 |
是否必须 |
限制范围 |
描述 |
示例值 |
Message |
String |
是 |
|
错误原因 |
满房 |
ResultCode |
String |
是 |
取值:-1,-2,-3, -4 |
错误码 -1:表示满房(请求日期段库存都为0,不可预定) -2:标识RP失效 -3:房量不足(请求日期端库存不全部为0,部分可售) -4: 其他不可预定(发生异常等) |
-1 |
InventoryPrice |
String |
否 |
请求期间价格库存日历 |
价格日历 |
[{"date":"2015-01-01","price":21000,"quota":4},{"date":"2015-01-02","price":22000,"quota":4},{"date":"2015-01-03","price":25000,"quota":5}] |
示例:
<!--满房--> <?xml version="1.0" encoding="utf-8"?> <Result> <Message>满房</Message> <ResultCode>-1</ResultCode> </Result>
<!--房量不足--> <?xml version="1.0" encoding="utf-8"?> <Result> <Message>房量不足</Message> <ResultCode>-3</ResultCode> <InventoryPrice> [{"date":"2015-01-01","price":21000,"quota":0},{"date":"2015-01-02","price":22000,"quota":4},{"date":"2015-01-03","price":25000,"quota":0}] </InventoryPrice> </Result> |
返回结果定义表
以下是第三方接到支付成功请求后,处理成功或失败时应该返回的结果。此表已定义结果类型不会修改,但可能会根据业务情况进行增补。
ResultCode |
Message |
备注 |
0 |
处理成功 |
|
-1 |
处理失败-满房 |
请求日期段库存都为0,返回满房。系统会清空对应日历的库存报价 |
-2 |
处理失败-价格计划问题 |
失效对应的价格计划 |
-3 |
处理失败-房量不足 |
房量不足(请求日期端库存不全部为0,部分可售) |
-4 |
其他失败 |
例如发生异常等 |
注:1、除了以上4种状态,不允许返回其余错误信息。所有第三方系统原因的错误都由系统商自行消化。返回明确的结果。
2、试单如果需要返回退订政策、担保信息的商家。请与阿里技术联系解决方案。