# 接口说明

# 3.1 接口 URL

调用 API 的服务 URL 地址,目前提供了以下 2 个环境:

调用环境 服务URL
测试环境(双方人员联调使用) 线下沟通
正式环境 线下沟通

# 3.2 数据交互规范

  • 使用 HTTPS 协议进行安全数据通信; x 使用 POST 方式发送请求;支持 application/json;application/x-www-form-

  • urlencoded

宜享花系统服务器端参数值和返回的数据均为 UTF-8 编码格式,返回数据使

  • 用 JSON 格式;
  • 所有请求响应参数均进行加密签名,加密签名参考加解密加验签demo
  • 接口保持幂等性:重复请求请返回相同的结果(重点注意的接口在各个接口 文档有注明,其余接口也请保持该原则)

# 3.3 宜信调合作方接口参数

# 3.3.1 公共请求参数

参数名称 类型 是否必传 说明 备注
appId string appId 公共参数。appid,由合作方统一提供。
requestNo string 请求流水号 每次请求的唯一标识ID
method string 方法名称 方法名称。决定具体调用的接口。
version string 接口版本 例:1.0
timestamp long 系统时间 公共参数。单位:毫秒(System.currentTimeMillis()),长度:13;该字段与服务方时间相差不能超过30分钟。
key string AES秘钥 RSA公钥加密后的AES秘钥,每次请求随机生成,具体参考加解密加验签demo
sign string RSA签名 RSA签名,对公共请求参数中除sign字段的所有参数签名的结果。具体参考加解密加验签demo
params string 密文业务数据 密文业务数据,为AES加密后的业务参数。具体参考加解密加验签demo
ip string ip 用户请求的ip

# 3.3.2 响应参数

参数名称 类型 是否必传 说明 备注
code String 响应返回码 参考3.5公共错误码
msg string 响应信息 参考3.5公共错误码,结果编码为“失败”时,此字段不为空
params string 密文业务数据 AES加密后的业务数据,具体参考加解密加验签demo
key string AES秘钥密文 RSA公钥加密后的AES秘钥,每次响应随机生成,具体参考加解密加验签demo
sign string RSA签名 RSA签名,对公共响应参数中除sign字段的所有参数签名的结果。具体参考加解密加验签demo

# 3.4 合作方调宜信方接口参数

采用 application/json 方式

# 3.4.1 公共请求参数

金额相关都以(分)为单位

参数名称 类型 是否必传 说明 备注
appId string appId 公共参数。appid,由合作方统一提供。
requestNo string 请求流水号 每次请求的唯一标识ID
method string 方法名称 方法名称。决定具体调用的接口。
version string 接口版本 例:1.0
timestamp long 系统时间 公共参数。单位:毫秒(System.currentTimeMillis()),长度:13;该字段与服务方时间相差不能超过30分钟。
key string AES秘钥 RSA公钥加密后的AES秘钥,每次请求随机生成,具体参考加解密加验签demo
sign string RSA签名 RSA签名,对公共请求参数中除sign字段的所有参数签名的结果。具体参考加解密加验签demo
params string 密文业务数据 密文业务数据,为AES加密后的业务参数。具体参考加解密加验签demo
ip string ip 用户请求的ip

# 3.4.2 响应参数

参数名称 值类型 是否必传 说明 备注
code String 操作返回码 参考3.5公共错误码
msg string 操作信息 参考3.5公共错误码
params string 密文业务数据 AES加密后的业务数据,具体参考加解密加验签demo
key string AES秘钥密文 RSA公钥加密后的AES秘钥,每次响应随机生成,具体参考加解密加验签demo
sign string RSA签名 RSA签名,对公共响应参数中除sign字段的所有参数签名的结果。具体参考加解密加验签demo

# 3.5 公共错误码

code Msg 含义说明
0000 success 成功,只有为0000才能进行业务结果的解析,后续接口文档不再说明code值
0001 业务处理失败 业务处理失败
0002 业务处理中 业务处理中
0003 参数不符合规范 参数不符合规范
0004 非法用户 非法用户
0014 用户信息错误 用户信息错误
0402 授信申请不存在 授信申请不存在
1006 借款申请不存在 借款申请不存在
0604 还款申请不存在 还款申请不存在
9999 系统异常 系统异常
9998 处理超时,请查询状态或稍后重试 处理超时,请查询状态或稍后重试
9995 操作拒绝:重复操作 操作拒绝:重复操作
8001 签名或验签失败 签名或验签失败
8002 加密失败 加密失败
8003 解密失败 解密失败

# 3.6 加解密验签

  • 对称加密:AES 秘钥128位; 每次请求随机生成
  • 非对称加密:RSA 秘钥2048位;

宜享花会提供统一 java 加解密加验签工具包。

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

  1. 生成AES key 随机生成16位字符串作为AES秘钥
  2. 用第三方公钥加密AES key
  3. 加密业务参数 用第一步生成的AES key加密业务参数
  4. 签名(用宜信的私钥进行签名) sign外的参数用:a=1&b=2,方式拼接起来,用宜信私钥对拼接后的参数签名
  5. 发送http请求给第三方

封装请求第三方HTTP报文

{
	"method": "check",
	"appId": "weiedai",
	"ip": "127.0.0.1",
	"sign": "n8PnETfmmMmz2n90DjqW7e1bpUv+CSeNQNcBK6T8",
	"requestNo": "req1234556",
	"params": "5ReyXXciZ97os+bVHvmg8PneF1kc16XciZ97os+bVHvmg8PneF1kc16",
	"version": "1.0",
	"key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
	"timestamp": "1670401416257"
}
1
2
3
4
5
6
7
8
9
10
11

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

  1. 第三方返回的key解密 宜信私钥对key解密,得到AES key
  2. 第三方返回的业务参数解密 用解密后的AES key 解密业务参数 3.验签 去掉返回值中的sign,将其余参数用a=1&b=2的方式拼接,用第三方公钥加密后生成的sign与返回值中的sign做对比,对比一致方可通过

第三方 HTTP响应报文

{
	"code": "code",
	"msg": "11",
	"sign": "n8PnETfmmM",
	"key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
	"params": "5ReyXXciZ97os+bVHvmg8PneF1kc16"
}

1
2
3
4
5
6
7
8

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

  1. 生成AES key 随机生成16位字符串作为AES秘钥
  2. 用宜信公钥加密AES key
  3. 加密业务参数 用第一步生成的AES key加密业务参数
  4. 签名(用第三方的私钥进行签名) sign外的参数用:a=1&b=2,方式拼接起来,用第三方私钥对拼接后的参数签名
  5. 发送http请求给宜信

封装HTTP请求报文

{
	"method": "check",
	"appId": "weiedai",
	"ip": "127.0.0.1",
	"sign": "n8PnETfmmM",
	"requestNo": "req1234556",
	"params": "5ReyXXciZ97os+bVHvmg8PneF1kc16",
	"version": "1.0",
	"key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
	"timestamp": "1670401416257"
}

1
2
3
4
5
6
7
8
9
10
11
12

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

  1. 对宜信返回的key解密 第三方私钥对key解密,得到AES key
  2. 对宜信返回的业务参数解密 用解密后的AES key 解密业务参数
  3. 验签 去掉返回值中的sign,将其余参数用a=1&b=2的方式拼接,用宜信公钥加密后生成的sign与返回值中的sign做对比,对比一致方可通过

HTTP响应报文

{
	"code": "code",
	"msg": "11",
	"sign": "n8PnETfmmM",
	"key": "d14jvN33H2wKE77+fmz2n90DjqW7e1bpUv+CSeNQNcBK6T8=",
	"params": "5ReyXXciZ97os+bVHvmg8PneF1kc16"
}

1
2
3
4
5
6
7
8

# 3.6.5 排序规则

  • 请求参数排序
  1. 对公共请求参数中appId、method、ip、key、timstamp、requestNo、version以及密文业务参数params,根据字母ASCII码顺序对参数名称进行排序。例如:排序后的字符串为

appId=weiedai&ip=127.0.0.1&key=iIlQJU8ogC5tnWtmbg3QYppzlXmK3iXwBYg+N8AdcQA4jtiBwdfoZGPZSWwFOP86Ldi3i5Ebf1VCd38DmsqzYXdfT+d14jvN33H2wKE77+fmz2n90DjqrWcsDYGc1c693psZikaJV4FID5Y+vGBXFqW7e1bpUv+CSeNQNcBK6T8=&method=check&params=2rnJanXsKKch50DgmgbejlPKmodt9bN/ExkgilkWbhZVdDZiZDzbGvkpYx7Re34lH2t0gDIbpjYvGcaPAA7Te1mclEQuD9DGlZFJCSJ+cKjVMmV3/U/TbRqcV679t58+XOfgfAfSfRL6Y259San5LtZVLyLODSKCxJDh0h8rBpnjFsVc069gc27UDkRnlqlV8nN3pMQbITy8p2UROBdLkSx02E5ReyXXciZ97os+bVHvmg8PneF1kc16/aFp2poy&requestNo=req1234556&timestamp=1670401416257&version=1.0

  1. 将排序好的参数名和参数值按照key1=value1&key2=value2的方式拼接,拼接后的字符串即为待签名字符串。拼装好的字符串需要采用utf-8编码。
  2. 排序后的请求字符串即为待签名字符串
  • 响应参数排序
  1. 对公共响应参数中code、msg、key、业务参数密文params,根据字母ASCII码顺序对参数名称进行排序。例如:排序后的字符串为 code=0&params=xxxx&key=xxxx&msg=xxx。如果params为空则params与key不参与排序,即排序后的字符串为:code=0&msg=xxxx。
  2. 排序后的响应字符串即为待签名字符串
上次更新: 2 年前