境外人员钱包系统API文档
  1. 接入指南
境外人员钱包系统API文档
  • 接入指南
    • 接入说明
    • 签名机制
    • 业务流程
    • 元数据描述
  • 充值
    • 充值申请
      POST
    • 充值单查询
      POST
  • 提现
    • 提现确认
      POST
    • 提现单查询
      POST
  • 用户
    • 用户信息同步
      POST
    • 客户信息同步
      POST
  • 事件
    • 提现结果通知
      POST
  1. 接入指南

签名机制

签名方式#

RSA签名方案
签名内容产生规则:
1.     获取请求完整JSON报文,使用MD5计算出报文摘要值(全小写);
2.     将该摘要值按照指定的签名算法使用交易发送方的签名私钥进行签名,将签名值使用Base64转码得到签名串signature。
3.     将签名方式和签名值设置在http header中,并自定义如下对应属性:
自定义Header key必须描述
Signature-Type是签名方式:RSA
Signature-Data是签名值RSA签名,见安全签名机制
Signature-Data = Base64(RSA(MD5(完整JSON报文)))
timestamp是时间戳(yyyyMMddHHmmss) 例如20211110145022
nonce是随机字符串,至少为10位,有效期内防重复提交
institution_id是机构ID

签名规则#

2.加入timestamp(时间戳),以服务端当前时间为准,单位为ms,5分钟内数据有效
时间戳的目的就是为了减轻DOS攻击。防止请求被拦截后一直尝试请求接口。服务器端设置时间戳
阀值,如果服务器时间减请求时间戳超过阀值,表示签名超时,接口调用失败。
3.加入临时流水号nonce,至少为10位,有效期内防重复提交。
随机值nonce主要是为了增加签名sign的多变性,也可以保护接口的的幂等性,相邻的两次请求
nonce不允许重复,如果重复则认为是重复提交,接口调用失败。

特殊字段加密#

针对API报文的部分字段,由于其信息敏感性,需要对该字段进行加密传输。由于RSA或国密算法,都需要申请证书,故我们约定同一报文的算法保持一致。
报文Signature-Type签名算法加密算法
RSAMD5withRSARSA
RSA加密方案
1. 获取请求待加密字段明文;
2. 将明文使用交易发送方的RSA公钥进行加密,将加密值使用Base64转码得到密文,ciphertext-Data = Base64(RSA(plaintext))。

基于RSA算法#

商户在接入基于RSA的通讯协议时,需要通过银通提供的openSSL工具制作证书。
注:openSSL工具与参考代码,请与运维联系获取。
RSA密钥生成地址可参考:https://www.toolhelper.cn/AsymmetricEncryption/RSA

签名验签#

String plainText = "这是一条待签名文本";
System.out.println("明文:" + plainText);
String sign = SignatureUtil.getInstance().sign(CommercialTenant.getPrivatekey(), plainText);
System.out.println("签名:" + sign);
boolean verify = SignatureUtil.getInstance().checksign(CommercialTenant.getPublickey(), plainText, sign);
System.out.println("验签结果:" + verify);

加密解密#

String text = "这是一条待加密明文";
System.out.println("明文:" + text);
String encodeText = RSAUtil.getInstance().encrypt(text, CommercialTenant.getPublickey());
System.out.println("密文:" + encodeText);
String decodeText = RSAUtil.getInstance().decrypt(encodeText, CommercialTenant.getPrivatekey());
System.out.println("解密后明文:" + decodeText);
修改于 2024-05-21 02:56:30
上一页
接入说明
下一页
业务流程
Built with