# 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 宜信调用第三方请求流程

  1. 生成AES key
  2. 用第三方公钥加密AES key
  3. 加密业务参数 用第一步生成的AES key加密业务参数
  4. 签名 用宜信的私钥进行签名
  5. 发送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

# 1.6.2 宜信调用第三方响应流程

  1. 第三方返回的key解密 宜信私钥对key解密,得到AES key
  2. 第三方返回的业务参数解密 用解密后的AES key 解密业务参数
  3. 验签 用第三方公钥加密后生成的sign与返回值中的sign做对比,对比一致方可通过

第三方 HTTP响应报文

{
	"code": "0",
	"msg": "成功",
  "data": "5ReyXXciZ97os+bVHvmg8PneF1kc16",
  "key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
  "sign": "n8PnETfmmM"
}

1
2
3
4
5
6
7
8

# 1.6.3 第三方调用宜信请求流程

  1. 生成AES key
  2. 用宜信公钥加密AES key
  3. 加密业务参数 用第一步生成的AES key加密业务参数
  4. 签名(用第三方的私钥进行签名) 用第三方私钥对拼接后的参数签名
  5. 发送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

# 1.6.4 第三方调用宜信响应流程

  1. 对宜信返回的key解密 第三方私钥对key解密,得到AES key
  2. 对宜信返回的业务参数解密 用解密后的AES key 解密业务参数
  3. 验签 用宜信公钥加密后生成的sign与返回值中的sign做对比,对比一致方可通过

HTTP响应报文

{
  "code": "0",
  "msg": "成功",
  "data": "5ReyXXciZ97os+bVHvmg8PneF1kc16",
  "key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
  "sign": "n8PnETfmmM"
}

1
2
3
4
5
6
7
8

# 1.6.5 基本规则

  • RSA公私钥说明:双方各生成一对RSA公私钥,将公钥提供给对方,私钥己方妥善保存。
  • 使用对方公钥加密验签,己方私钥解密加签
上次更新: 2 年前