跨产品公共文档

通用规则

本页集中展示原接口文档中的说明、数据安全、接口规范和状态码,内容严格保留原文含义。

1. 说明

1.1 用词说明

  • 报文:指HTTP请求或响应的数据内容
  • 参数内容:指报文中,bizData属性值
  • MD5密钥:由平台给出的参与加签、验签的特殊字符串
  • AES秘钥:由平台提供的AES加密种子字符串

1.2 代码说明

  • JSON.serialize:JSON序列化
  • AES.encrypt:AES加密
  • URLEncoder.encode:URL(UTF-8)编码

2. 数据安全

2.1 基于 AES 对称加密

AES具有应用范围广、隐蔽性好、破解难度高、吞吐量大等优点,为了保证消息的安全性、一致性,本系统使用AES(AES-128-ECB,AES/ECB/PKCS5Padding)对报文进行加密传输,Java版工具类如下:

2.2 数据签名

在发送请求前为避免数据被恶意篡改,渠道方需要使用MD5对参数内容生成数据签名,签名的参数内容字符串必须与报文内容字符串保持一致,否则会导致验签失败。

签名步骤如下:

  1. 将bizData参数内容序列化为JSON字符串
  2. 将序列化后的bizData参数内容字符串结尾追加MD5密钥字符串
  3. 使用MD5对追加后的字符串内容生成数据签名
  4. 将生成的数据签名设置为报文中sign属性值

2.3 数据验签

当接收到报文后,为保证报文的原始一致性,必须严格检验数据签名是否有效。

验签步骤如下:

  1. 将接收到的密文报文使用AES解密
  2. 在明文报文中取得bizData参数内容
  3. 将bizData参数内容结尾追加MD5密钥字符串
  4. 使用MD5对追加后的字符串内容生成数据签名
  5. 对比明文报文中sign属性内容,如果一致表示验签成功,否则失败
  6. 如果验签失败,请拒绝本次请求或响应数据,并及时通知平台

2.4 数据加密

为保证数据安全、隐蔽,需要将签名后的报文进行AES加密处理,并以密文形式进行传输。

加密步骤如下:

  1. 先按照签名步骤,进行数据签名
  2. 将报文序列化为JSON字符串
  3. 使用AES加密序列化后的报文

2.5 数据解密

在接到密文报文后,需要先对密文进行解密,解密后获得明文报文,再进行验签,待验签成功后,执行业务处理。

解密步骤如下:

  1. 使用AES解密接收到的密文报文,并获得明文报文
  2. 在明文报文中取得bizData参数内容

3. 接口规范

3.1 请求和响应报文规范

基础请求参数,是所有请求中都需要传递的参数,主要提供本系统处理请求数据使用,为保证数据的有效性,请严格按照下表说明使用。

本系统只提供了POST支持,为了更好的保证请求有效性,请严格按照如下要求发送请求:

  1. Post请求,请将参数设置于RequestBody中,如果请求头为Content-Type=application/x-www-form-urlencoded时,请求内容需要使用"K-V格式"并以"&"连接(例如:name=ZhangSan&age=20),对于Post请求的服务接口,不接收UrlPath中的数据

3.2 请求和响应报文格式

3.2.1 POST + Form 规范

字段 说明
请求URL 平台提供的API服务地址
请求方法 POST
请求方式 同步请求
请求头 Content-Type: application/x-www-form-urlencoded
请求参数格式 content=AesUtil.encryptAndBase64Encode(JSON.serialize(请求参数), aesKey)
请求参数位置 URLPath
待确认:3.1 要求参数位于 RequestBody,并说明不接收 UrlPath 数据;本表格标注为 URLPath。

请求参数:

同步结果格式: AesUtil.encryptAndBase64Encode(JSON.serialize(同步结果), aesKey),返回值是加密后的字符串。

3.3 异步推送接口规范

推送请求和响应报文均采用JSON数据格式,渠道方在处理异步推送数据时,为避免触发本系统重试机制,重复请求渠道方服务,请确保返回给本系统正确的状态,具体接口规范如下:

字段 说明
请求URL 渠道方提供
请求方法 POST
请求方式 异步请求
请求头 Content-Type: application/x-www-form-urlencoded
请求参数格式 content=AesUtil.encryptAndBase64Encode(JSON.serialize(请求参数), aesKey)
请求参数位置 Body
请求参数 Object(根据具体业务定)

同步结果(返回为明文):

注:大多数回调接口返回明文,6.6 签章结果查询除外(返回密文,见下)。

同步结果(返回为密文,仅 6.6 签章结果查询):

涉及协议信息的回调需对返回内容进行加密,加密规则与接口同步响应相同:先对明文 JSON 进行数据签名,再整体 AES 加密后返回。

其中 bizData 解密后的明文结构为:

3.4 异步推送重试机制

异步推送重试,是为保证异步结果最大努力推送至渠道方系统的一种机制,由于现实环境中各种复杂原因,都可能导致回调请求失败,所以本系统提供了5次重试,重试间隔如下(单位ms):

1000, 120000, 600000, 3600000, 10800000, 21600000

当5次重试均为失败时,将终止重试,需要线下人工处理。


4. 状态码

4.1 BusinessCode 通用状态码

通用状态码适用于全部接口,如果接口没有单独列出businessCode状态码列表的,请以通用代码为参考。

状态码 状态码描述
0000 success
0001 未知错误
0002 验签失败
0003 参数错误
0004 重复提交
0005 获取Token失败
0100 未查到符合条件的数据
3002 订单状态不合法
3005 用户不存在
9001 订单不存在

搜索功能即将开放

目前可以通过左侧目录浏览文档。