WalletService OpenAPI 文档
  1. 快速指引
WalletService OpenAPI 文档
  • 产品介绍
  • 快速指引
    • 接入准备
    • 接口加签说明
  • 接入必读
    • 接口规则
    • 接口错误码
    • 枚举值
  • API列表
    • 创建 CA
      POST
    • 查询 CA
      GET
    • 创建转账订单
      POST
    • 查询转账订单
      GET
  • 常见问题
    • 接口报错提示问题
  • 对接示例
    • 接口签名示例-Postman
  • 版本说明
    • 版本说明
  1. 快速指引

接口加签说明

接口加签,是指应用在调用 OpenAPI 时,需要通过公私钥对信息内容进行加签、验签,从而保证双方通信消息的安全性和真实性。
开发者需准备一对 RSA 公私钥(位数为2048,Base64 编码,密钥以 PKCS#8 格式生成,公钥以 X.509 格式生成),将公钥提交给平台运营人员后,平台进行验证通过后即可使用。
同时平台方也会提供平台公钥,用于应用方对平台返回的数据进行签名验签。请求和验签的过程如下:
1.
请求参数:中文编码为 UTF-8,类型为 String。
2.
请求业务报文发送前,需要应用使用自己的 RSA 私钥对请求业务报文进行签名。
3.
请求成功后,应用方可使用平台公钥对响应报文进行验签。

第三方工具生成公私钥#

工具生成的公私钥内容,在提供公钥时,如果没有标准前后缀内容时需要补充标准前后缀格式内容。
https://www.devglan.com/online-tools/rsa-encryption-decryption
选择位数2048,自动生成一对公私钥内容。

签名算法#

RSA 介绍:https://en.wikipedia.org/wiki/RSA_(cryptosystem)
RSA 签名算法介绍:https://cryptobook.nakov.com/digital-signatures/rsa-signatures

生成请求签名#

1.
准备
先准备一对 RSA 公私钥,并将公钥提供给平台运营人员。
平台验证公钥可用后,会将公钥存储,并提供给应用一个 APPID 。
2.
构造签名串
根据请求参数构造的请求报文主体,数据格式为 json 格式。
请按照签名串格式('请求时间戳\n'+'请求随机串\n'+'请求报文主体\n')构造请求签名串。注意这里\n是换行符
3.
计算签名值
绝大多数编程语言提供的签名函数支持对签名数据进行签名。强烈建议应用方调用该类函数,使用应用私钥对待签名串进行 SHA256 with RSA 签名,并对签名结果进行 Base64 编码得到签名值。
4.
设置HTTP头
Http 头说明
SparkWallet-App-IdAPPID
SparkWallet-Nonce请求随机串,同一 APPID 应保证5分钟内 Nonce 不重复,否则 OpenAPI 会拒绝这次请求
SparkWallet-Timestamp请求时间戳(精确到秒)
SparkWallet-Signature签名值

注意:#

应用使用自己的 RSA 私钥对请求的业务参数 json 串进行签名。
签名值采用标准 base64 编码。

验证签名#

1.
前置条件
获取平台公钥,应用方可联系平台运营人员获取。
2.
防止重放攻击
为了降低重放攻击的风险,在 HTTP 头 SparkWallet-Timestamp 中提供了生成签名的时间戳,并且平台会对该时间戳进行有效性验证。
在验证签名之前,应用方应检查时间戳是否已过期。我们建议应用系统允许最多5分钟的时间偏差。如果时间戳与当前时间的偏差超过5分钟,您应拒绝处理当前的响应。
3.
构造验签名串
响应 HTTP 头 SparkWallet-Timestamp 中值即为应答时间戳(精确到秒)。
响应 HTTP 头 SparkWallet-Nonce 中值即为应答随机串。
响应报文主体,请使用响应报文主体执行验签。对报文主体的任何篡改都会导致验证失败。
然后,请按照签名串格式('应答时间戳\n'+'应答随机串\n'+'响应报文主体\n')构造应答的验签名串。
4.
获取应答签名
响应 HTTP 头 SparkWallet-Signature 中值即为签名值。
5.
验证签名
绝大多数编程语言提供的签名验证函数支持对验签名串和签名进行签名验证。强烈建议应用调用该类函数,使用平台公钥对验签名串和签名进行 SHA256 with RSA 签名验证。
修改于 2025-04-23 09:28:34
上一页
接入准备
下一页
接口规则
Built with