官网信用住服务器异步通知接口

更新时间:2017/06/05 访问次数:9096

 

官网信用住异步通知接口

 

 

创建时间

修改时间

描述

版本

作者

审核

2015-12-20

2015-12-20

官网信用住订单信息更新接口定义

V 1.0

先路

先路

 

2015-12-21

增加渠道source、result字段

V 1.1

先路

 

 

 2015-12-31

 增加杂费返回maxOtherFee

 v1.2

 先路

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目录

一 文档说明... 3

1.1 功能描述... 3

1.2 阅读对象... 3

1.3 要求... 3

二、接口参数说明... 3

2.1请求参数... 3

2.2 请求样例... 5

2.4服务器异步通知页面特性... 5

2.5 商家注意事项... 6

三、签名机制... 6

 

 

 

一 文档说明

1.1 功能描述

当订单信息变更时候,信息下传卖家。目前包括(下单成功、付款成功、订单取消、结账、取消结账等)。

1.2 阅读对象

面向具有一定的网站开发能力,了解ASP、PHP、JAVA、ASP.NET等开发语言中的一种及SQL数据库语言的网站开发、维护和管理人员。

1.3 要求

  1. 根据阿里旅行订单号做幂等处理,即同一订单,多次调用返回相同结果
  2. 要求同步返回调用结果,不可异步处理
  3. 处理能力要有合理评估并告知,阿里旅行会根据性能要求投放流量

第三方系统根据此接口定义实现接收订单信息变更的方法,并暴露成服务。阿里旅行系统在订单状态发生变化时候调用此服务进行下传(用户在令牌获取时候提供服务接收地址notify_url)。

特别说明:此接口根据不同卖家的特定情况进行实现。对于部分下传信息可以不予理会。

二、接口参数说明

2.1请求参数

名称

类型

是否必须

最大长度/取值范围

描述

示例值

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

杂费额度,一般在下单成功接口中返回。

 

2.2 请求样例

http://www.xxx.com/official_pay/notify_url.php?alipayAccount=TEST&hotelCode=30hh&notifyId=taobao1387784033263-1387784033266&notifyTime=2015-12-21 11:31:18&notifyType= xhotel_order_official_createSuccess&result=SUCCESS&tid=1387784033263&source=taobao&signType=1&sign=39425ffb4be9966772409cda8eb5e6b6

 

2.4服务器异步通知页面特性

  • 必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
  • 阿里旅行官网信用住是用Get方式发送通知信息,商家根据自己的语言实现参数获取。
  • 阿里旅行官网信用住主动发起通知,该方式才会被调用;
  • 只有在阿里旅行官网信用住交易管理中存在该笔交易,且发生了交易状态的改变,才会通过该方式发起服务器通知(即下单失败、取消失败、结账失败、取消结账失败等是不会通知的);
  • 程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给阿里旅行的字符不是success这7个字符,阿里旅行务器会不断重发通知,直到超时(每2分钟一次,30分钟后超时);
  • 程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,会收不到success字符,会被服务器判定为该页面程序运行出现异常,而重发处理结果通知;

2.5 商家注意事项

用户资质校验时候商户有传递参数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&notifyId=taobao1387784033263-1387784033266&notifyTime=2015-12-21 11:31:18&notifyType= 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。

FAQ

关于此文档暂时还没有FAQ
返回
顶部