# 1. 接口说明
# 1.1 接口URL
调用渠道方的服务 URL 地址,需提供以下 2 个环境:
调用环境 | 服务URL |
---|---|
测试环境(双方人员联调使用) | 线下沟通 |
正式环境 | 线下沟通 |
# 1.2 数据交互规范
使用 HTTPS 协议进行安全数据通信
使用 POST 方式发送请求;支持 application/json
参数值和返回的数据均使用 UTF-8 编码,返回数据使用 JSON 格式
所有请求响应参数均进行加密签名,加密签名参考加解密加验签demo
接口保持幂等性:重复请求请返回相同的结果
# 1.3 公共请求参数
参数名称 | 类型 | 是否必传 | 说明 | 备注 |
---|---|---|---|---|
channelId | string | 是 | 渠道方ID | 公共参数。1. 宜享花调用渠道方时,渠道方指定该参数 2.渠道方调用宜享花时,宜享花指定该参数(即appId) |
t | long | 是 | 系统时间 | 公共参数。单位:毫秒(System.currentTimeMillis()),长度:13 |
method | string | 是 | 方法名称 | 方法名称。决定具体调用的接口。 |
key | string | 是 | AES秘钥 | RSA公钥加密后的AES秘钥,每次请求随机生成,具体参考加解密加验签demo |
sign | string | 是 | RAS签名 | RAS签名,对公共请求参数中除sign字段的所有参数签名的结果。具体参考加解密加验签demo |
params | string | 是 | 密文业务数据 | 密文业务数据,为AES加密后的业务参数。具体参考加解密加验签demo |
# 1.4 公共响应参数
参数名称 | 值类型 | 是否必传 | 说明 | 备注 |
---|---|---|---|---|
code | int | 是 | 操作返回码 | 参考1.5 公共错误码 |
msg | string | 是 | 操作信息 | 参考1.5 公共错误码 |
data | string | 否 | 密文业务数据 | AES加密后的业务数据,具体参考加解密加验签demo |
key | string | 否 | AES秘钥密文 | RSA公钥加密后的AES秘钥,每次响应随机生成,具体参考加解密加验签demo |
sign | string | 是 | RSA签名 | RSA签名,对公共响应参数中除sign字段的所有参数签名的结果。具体参考加解密加验签demo |
# 1.5 公共错误码
code=0,代表业务成功;code<0,代表公共异常;code>0,代表公共的业务异常。
code | Msg | 含义说明 |
---|---|---|
0 | success | 成功,只有为0才能进行业务结果的解析,后续接口文档不再说明code值 |
-1 | 参数错误 | 参数错误(例如必传参数未传) |
-2 | channelId不存在 | channelId不存在 |
-3 | 业务参数解密失败 | 业务参数解密失败 |
-4 | 参数签名验证失败 | 参数签名验证失败 |
-5 | 接口请求时间过期 | 接口请求时间过期 |
-6 | 业务参数格式错误 | 业务参数格式错误 |
-99 | 系统异常 | 系统异常(例如空指针异常) |
# 1.6 加解密验签工具
宜享花会提供统一 java 加解密加验签工具包:【通用加解密工具类】
- RSA公私钥说明:双方各生成一对RSA公私钥,将公钥提供给对方,私钥己方妥善保存。
- 使用对方公钥加密验签,己方私钥解密加签
# 1.6.1 宜信调用第三方请求流程
- 生成AES key
- 用第三方公钥加密AES key
- 加密业务参数 用第一步生成的AES key加密业务参数
- 签名 用宜信的私钥进行签名
- 发送http请求给第三方
封装请求第三方HTTP报文示例
{
"channelId": "测试渠道",
"t": "1670401416257",
"method": "user.access",
"key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
"sign": "n8PnETfmmMmz2n90DjqW7e1bpUv+CSeNQNcBK6T8",
"params": "5ReyXXciZ97os+bVHvmg8PneF1kc16XciZ97os+bVHvmg8PneF1kc16"
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 1.6.2 宜信调用第三方响应流程
- 第三方返回的key解密 宜信私钥对key解密,得到AES key
- 第三方返回的业务参数解密 用解密后的AES key 解密业务参数
- 验签 用第三方公钥加密后生成的sign与返回值中的sign做对比,对比一致方可通过
第三方 HTTP响应报文
{
"code": "0",
"msg": "成功",
"data": "5ReyXXciZ97os+bVHvmg8PneF1kc16",
"key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
"sign": "n8PnETfmmM"
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 1.6.3 第三方调用宜信请求流程
- 生成AES key
- 用宜信公钥加密AES key
- 加密业务参数 用第一步生成的AES key加密业务参数
- 签名(用第三方的私钥进行签名) 用第三方私钥对拼接后的参数签名
- 发送http请求给宜信
封装HTTP请求报文
{
"channelId": "yxh438294343",
"t": "1670401416257",
"method": "user.uni.login",
"key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
"sign": "n8PnETfmmMmz2n90DjqW7e1bpUv+CSeNQNcBK6T8",
"params": "5ReyXXciZ97os+bVHvmg8PneF1kc16XciZ97os+bVHvmg8PneF1kc16"
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 1.6.4 第三方调用宜信响应流程
- 对宜信返回的key解密 第三方私钥对key解密,得到AES key
- 对宜信返回的业务参数解密 用解密后的AES key 解密业务参数
- 验签 用宜信公钥加密后生成的sign与返回值中的sign做对比,对比一致方可通过
HTTP响应报文
{
"code": "0",
"msg": "成功",
"data": "5ReyXXciZ97os+bVHvmg8PneF1kc16",
"key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
"sign": "n8PnETfmmM"
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 1.6.5 基本规则
- RSA公私钥说明:双方各生成一对RSA公私钥,将公钥提供给对方,私钥己方妥善保存。
- 使用对方公钥加密验签,己方私钥解密加签