官网信用住异步通知接口
创建时间 |
修改时间 |
描述 |
版本 |
作者 |
审核 |
2015-12-20 |
2015-12-20 |
官网信用住订单信息更新接口定义 |
V 1.0 |
先路 |
先路 |
|
2015-12-21 |
增加渠道source、result字段 |
V 1.1 |
先路 |
|
|
2015-12-31 |
增加杂费返回maxOtherFee |
v1.2 |
先路 |
|
|
|
|
|
|
|
|
|
|
|
|
|
目录
当订单信息变更时候,信息下传卖家。目前包括(下单成功、付款成功、订单取消、结账、取消结账等)。
面向具有一定的网站开发能力,了解ASP、PHP、JAVA、ASP.NET等开发语言中的一种及SQL数据库语言的网站开发、维护和管理人员。
第三方系统根据此接口定义实现接收订单信息变更的方法,并暴露成服务。阿里旅行系统在订单状态发生变化时候调用此服务进行下传(用户在令牌获取时候提供服务接收地址notify_url)。
特别说明:此接口根据不同卖家的特定情况进行实现。对于部分下传信息可以不予理会。
名称 |
类型 |
是否必须 |
最大长度/取值范围 |
描述 |
示例值 |
sign |
String |
否 |
64 |
md5加密指纹,不参与md5计算 |
39425ffb4be9966772409cda8eb5e6b6 |
signType |
String |
否 |
10 |
加密类型,用户进行防串改数据核验。默认参数不加密。提供3个可选值,字母全大写 l MD5 l RSA l DSA 目前仅仅支持md5指纹方式。 Md5指纹规则:(见签名规则章节) |
MD5 |
notifyTime |
Date |
是 |
32 |
通知发送时间(格式yyyy-MM-dd HH:mm:ss) |
2015-12-21 11:31:18 |
source |
String |
是 |
16 |
请求渠道 固定值:taobao |
taobao |
notifyId |
String |
是 |
32 |
单次请求流水号 |
taobao1387784033263-1387784033266 |
tid |
long |
否 |
32 |
淘宝订单id,第三方需根据此id判断订单是否已经存在,以实现幂等和避免重复下单。(创建失败时候无此值) |
1387784033263 |
hotelCode |
String |
是 |
32 |
OTA酒店id,即第三方系统中的酒店id(编码) |
80 |
alipayAccount |
String |
否 |
64 |
用户支付宝唯一识别码 |
用户支付宝唯一识别码 |
result |
String |
是 |
32 |
处理结果。 固定值:SUCCESS |
SUCCESS |
notifyType |
String |
是 |
32 |
通知类型(订单创建成功: xhotel_order_official_createSuccess 扣款成功: xhotel_order_official_paySuccess 结账请求成功: xhotel_order_official_settleSuccess 取消结账成功: xhotel_order_official_cancelSettleSuccess 订单取消成功: xhotel_order_official_cancelOrderSuccess) |
xhotel_order_official_createSuccess |
outOid |
String |
必选的 |
64 |
outOid为外部订单号,用于双方进行问题排查以及系统幂等逻辑 |
|
outUUID |
String |
必须 |
64 |
资质校验接口上次的请求流水号返回 |
一般是32位长度。特殊情况例如没有获取到虚拟网卡地址会超长,不会超过64 |
maxOtherFee |
int |
可选 |
16 |
杂费额度,一般在下单成功接口中返回。 |
|
http://www.xxx.com/official_pay/notify_url.php?alipayAccount=TEST&hotelCode=30hh¬ifyId=taobao1387784033263-1387784033266¬ifyTime=2015-12-21 11:31:18¬ifyType= xhotel_order_official_createSuccess&result=SUCCESS&tid=1387784033263&source=taobao&signType=1&sign=39425ffb4be9966772409cda8eb5e6b6
用户资质校验时候商户有传递参数notify_url(服务器异步通知页面路径)时,商户必须判断商户网站中是否已经对该次的通知结果数据做过同样处理。如果不判断,存在潜在的风险,商户自行承担因此而产生的所有损失。
默认不进行参数签名验证,如果商家需要参数进行签名验证。按以下规则进行签名验证。
首先需要向阿里旅行约定私钥 appSecret.(一般取值开放平台分配给卖家的对应值)
在请求参数列表中,除去sign、sign_type\ appSecret三个参数外,其他需要使用到的参数皆是要签名的参数。
规则:对参数列表中的参数的值按照值从a到z的顺序排序,若遇到相同首字母,则看第二个字母,以此类推。排序完成之后,再把所有数组值以“&”字符连接起来,这便是待签名字符串。
列子:
参数数组
string[] parameters={
"notifyTime=2015-12-21 11:31:18",
"notifyId=taobao1387784033263-1387784033266",
"tid=1387784033263",
"hotelCode=30hh",
"alipayAccount=TEST",
"notifyType= xhotel_order_official_createSuccess "
}
待签名串:alipayAccount=TEST&hotelCode=30hh¬ifyId=taobao1387784033263-1387784033266¬ifyTime=2015-12-21 11:31:18¬ifyType= xhotel_order_official_createSuccess &tid=1387784033263&appkey=123456
签名计算时候将appSecrect附加到带签名串后,计算MD5值。(appSecrect采取直接附加值得方式,不需要&连接)
注意:
没有值(空值或者空字符串)的参数无需传递,也无需包含到待签名数据中;数值类型默认值为0的是需要参与签名的
签名时将字符转化成字节流时指定的字符集统一为UTF-8;
??根据HTTP协议要求,传递参数的值中如果存在特殊字符(如:&、@等),那么该值需要做URL Encoding,这样请求接收方才能接收到正确的参数值。这种情况下,待签名数据应该是原生值而不是encoding之后的值。例如:调用某接口需要对请求参数email进行数字签名,那么待签名数据应该是email=test@msn.com,而不是email=test%40msn.com。