灵工系统-对外文档
  1. 签名规则
灵工系统-对外文档
  • 产品说明
  • 接入说明
  • 返回状态码
  • 常见问题
  • 签名规则
    • MD5签名规则
    • RSA签名规则
  • 接口详情
    • 1 签约
      • 1.1 小程序/H5签约API
      • 1.2 静默签API
      • 1.3 签署结果查询API
      • 1.4 签约异步通知API
      • 1.5 催签API
      • 1.6 人员信息查询
      • 1.8 删除用户签约信息
    • 2 发放
      • 2.1 佣金发放API
      • 2.2 订单交易明细查询API
      • 2.3 订单回单(成功)分页查询API
      • 2.4 发放异步通知API
      • 2.5 退票异步通知API
      • 2.6 查询用户限额情况
      • 2.7 个税测算
    • 3 普通任务
      • 3.1 创建任务API
      • 3.2 任务列表查询API
      • 3.3 任务审核异步通知API
    • 4 开票
      • 4.1 查询开票类目API
      • 4.2 开票申请API
      • 4.3 查询开票信息API
      • 4.4 开票异步通知API
      • 4.5 开票账户查询API
    • 5 账户
      • 5.1 余额查询API
      • 5.2 充值异步通知API
      • 5.3 划拨异步通知API
    • 6 其他
      • 6.1 银行卡号查询所属银行
  1. 签名规则

RSA签名规则

请求加密&签名#

准备阶段#

1.
获取平台参数:登录后台-企业信息-对接信息 这个路径查看参数merchantNo、agreementId、appKey、serctkey。
2.
生成业务参数:生成本次请求的头部参数,订单号orderId、请求时间戳requireTime。
3.
生成密钥对:使用 openssl 或其他工具,生成 2048 位 RSA 密钥对。
openssl genrsa -out rsa_private_key.pem 2048
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out
rsa_private_pkcs8.pem openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

测试环境公钥: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7qaqR/gd9zJD0aejfLF3pOEGdvVJWZ8437KI/XrQkp4b6qO2zHS2/yW4/h3gBYAS8G032ie+f4gzhNZV+cwY2xwDdg+lVllj56zLiK4ymfxbWzZ6Ywjp8CyKGMNXsCargKM96vpFmjC8gR+cuUuVL4+wH7asrrl6inkpTfFB3ICx671ylSLK9WdVReBHCsGyQ5bvbKus1bOVGBpGNCY6oTgN+y5GEJ1fxKTH3PhQBGgMr0f/WRTgQSSzHSNB1vd20KjbYuy9zPGDAhU8xrPTbXYhAODtMDz5BRSq/aqQ57jplJbwG4BHjuhNGFSqRzymNBJuI0ph/E/n7hBPq/Z8zwIDAQAB 

生产环境公钥: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxwcBhpbuyDVnz2Rvao8hieZ2wXK+cjYMCLgye+5ubOq3PlOV31N3TMEfzXUeM4TH7RwZIPWwg9dt91v9n63t9y82ImMGSyangMCl1tUF7HP8F5q4rNoQ0v0nDP6j8O6uGslTitjPvIfB+C9BK0LKahvcys2qrCEoc1SSfMzAtBZ7OY0UX0kZdiRkmb+GIImcjIRdvHZvlQui+36soCeLKALF5EmQfFjlyNaRIt/4gx1gW9f3NxzNDh/St++AnhINZ+7r3K4pzaMj2pvjNJJpzUERF5PerSYxymD17OSIBwM01/Gm8dTgfm7jJoUnb02MM2UiWrfkcpbzah9nfuQW/QIDAQAB
商户私钥 rsa_private_pkcs8.pem 自行保管,在请求接口时用于对数据进行签名
商户公钥 rsa_public_key.pem 请提供给灵工平台,用于验签
商户可下载灵工平台公钥,进行请求数据加密或接收灵工平台的回调时进行验签

加密请求体(Body处理)#

3.
转换JSON:将需要传递的业务参数体(例如:{"userName": "张三", "amount": 100.00})转换为JSON字符串。
4.
加密数据:使用平台公钥对第3步得到的JSON字符串进行加密,得到二进制密文。
5.
编码数据:将二进制密文进行Base64编码,得到一个Base64字符串(我们称之为base64String)。这个字符串就是最终请求体中data字段的值。

生成请求签名(Header处理)#

6.
拼接签名原文:按照规则拼接字符串,内容为:data字段的值(base64String) + orderId + requireTime + Serctkey。
注意:这里拼接的是data字段的值,而不是字段名。
7.
生成签名:使用商户私钥对第6步拼接好的字符串进行签名运算(RSA-MD5),得到二进制签名结果。
8.
编码签名:将二进制签名结果进行Base64编码,得到最终的签名字符串(我们称之为signValue)。这个字符串就是最终请求头中sign字段的值。

组装最终请求#

9.
组装请求体(Body):将请求体组装成一个JSON对象,其中只有一个键值对:{"data": "base64String"}。
如果遇到使用get不能放到body中,也可以直接将参数放拼接到url后面,如URL=“http:xxx.com/merchant/getxxx?data=”+content,因部分框架没有自动处理请求编码,如果请求提示签名错误,需要进行URL=“http:xxx.com/merchant/getxxx?data=”+URLEncoder.encode(content,“utf-8”)
11.
组装请求头(Header):设置请求头,必须包含以下字段:
sign: signValue(第8步的结果)
signTypes: RSA
orderId: ...(订单号)
requireTime: ...(请求时间戳)
以及其他必要的头部信息(merchantNo、agreementId、appKey)。
12.
发送请求:将组装好的请求头和请求体发送到灵工平台的API地址。

通知解密&验签#

初始接收阶段#

1.
接收通知:你的服务器接收到灵工平台发送的异步POST通知。
2.
解析请求:从请求中分离出请求体(Body) 和请求头(Header)。

数据提取与验签(安全校验)#

3.
提取Body数据:
将Body解析为JSON对象。
获取data字段的值,即Base64编码的密文字符串(base64String)。
4.
提取Header数据:
从Header中获取关键的sign、orderId、requireTime等字段的值。
5.
准备验签原文:
按照规则拼接字符串,内容为:bizData(即Body中的base64String) + orderId + requireTime + serct。
注意:这里拼接的是Body中data字段的值(base64String),而不是字段名。
6.
执行验签:
将Header中的sign值进行Base64解码,得到二进制签名。
使用灵工平台的公钥对第5步拼接的原文和解码后的签名进行验签。

解密与业务处理#

7.
判断验签结果:
验签失败:说明请求可能被篡改或来源不可信,立即记录日志并返回失败响应,流程终止。
验签成功:说明请求是真实且完整的,继续下一步。
8.
解密数据:
将Body中的base64String先进行Base64解码,得到二进制密文。
使用商户自己的私钥对这个二进制密文进行解密,得到原始的、明文的JSON字符串。
9.
解析业务数据:
将解密后的JSON字符串解析为对象。其结构通常如:{"data": {"参数字段名": "参数值"}, "tab": "通知类型"}。
10.
执行业务逻辑:
根据tab字段判断通知类型(1发放异步通知 2签约异步通知 3充值异步通知 4退票通知 5任务审核 6发票状态变动),然后处理data对象内的具体业务参数(如{"userName": "张三", "amount": 100.00})。
上一页
MD5签名规则
下一页
1.1 小程序/H5签约API
Built with