1、概述
在途系统在运行过程中,到达特定业务节点时可触发相关事件,如果您需要对应节点的数据,可注册相关事件,在途将主动推送数据到指定的接口地址上。
目前支持的事件如下:
事件列表 👈
业务回调逻辑开发步骤:
1. 企业向在途系统订阅回调接口(HTTP/HTTPS地址)
2. 企业按在途接口规范进行开发<回调接口程序>,根据不同的事件进行数据解密/转换后作相应处理,比如调用企业内部OA系统发起工作流、调用费控系统接口保存订单数据等
3. 在途商旅系统运行到回调指定的业务节点时,会调用企业订阅的<回调接口程序>
在途系统与企业回调接口的通信使用HTTP/HTTPS协议,JSON格式作为交互数据载体,数据使用AES算法对交互数据进行对称加密,AES加密密钥在订阅业务回调时指定。
一.对接流程
1.流程图
2.订阅业务回调
在途提供针对回调接口参数的增删改查接口,用于向在途订阅回调接口,调用前先获取 token,回调接口参数包括:
- aesKey,用于加解密的密钥
- code,事件编码,对应不同的业务数据和处理方式
- url,回调接口 url
二.开发回调接口
1.准备
通过事件订阅接口向在途提供回调定义相关参数
2.解密回调数据
在途推送给您的是在接口注册时提供的aesKey加密生成的密文,您需要自行解密后获取到对应的业务数据
请求方法: POST
Content-Type: application/json
请求参数说明:
参数 | 说明 |
---|---|
signature | 签名 |
timestamp | 时间戳 |
nonce | 随机字符串 |
bizData | 加密的业务数据 |
partnerCode | 企业编码 |
请求参数示例:
{
"signature":"xpnhmg",
"timestamp":"1584961222199",
"nonce":"5sn5nk",
"bizData":"ht9tyhfaljl7g9542lh52lhg96g94nkyg69a",
"partnerCode":"snjt"
}
业务数据解密:先使用时间戳、随机字符串和加密后的数据验证签名,再用回调注册的 aesKey 使用AES算法解密业务数据,
调用EncryptionUtil.java 类中的 decrypt(CallBackRequest callBackRequest, String aesKey) 解密
具体请参考示例代码 EncryptionUtil.java
3.加密返回相应结果
您接收到在途推送的数据后,需要通过密钥加密接收结果报文后返回给商旅系统。
参数 | 说明 |
---|---|
signature | 签名 |
timestamp | 时间戳 |
nonce | 随机字符串 |
bizData | 加密的业务数据 |
响应参数示例:
{
"signature":"fhh3jd",
"timestamp":"1584961222199",
"nonce":"aamnco",
"bizData":"0mve3m"
}
解密后的响应 bizData 示例,其中 data 字段为 json 字符串:
{
"error": "0", // 0:表示成功,其它表示失败
"error_description": "success",
"data": ""
}
响应数据加密,先用回调注册的 aesKey 使用AES算法加密业务数据,再使用时间戳、随机字符串和加密后的数据生成签名,
调用EncryptionUtil.java 类中的 EncryptCallbackResponse dealSuccessAndEncrypt(String data, String aesKey) 加密返回,
具体请参考示例代码 EncryptionUtil.java
解密后的请求业务数据为 JOSN 字符串,包含 code 和 data两个字段
JSONObject jo = JSON.parseObject(jsonData);
String code = jo.getString("code");
String data = jo.getString("data");