📌基于安全策略规范,您与 UseePay 的所有交互请求必须在发送与接收环节均通过签名 / 验签机制实施双向核验。📌发送端需基于特定加密算法生成请求签名,接收端则通过对应验签规则验证签名有效性,从而确保请求数据的真实性与完整性,以防范数据篡改、身份伪造,重放攻击等安全风险。
UseePay支持MD5、RSA、HMAC签名算法。(自建站用户请忽略HMAC秘钥)无论是 MD5 还是 RSA 方式, sign 和 value trim后为空的 key-value 都不参与签名计算过程!
1. MD5秘钥#
1.1 获取MD5秘钥#
在 商户后台管理系统 -> 配置中心->密钥管理中点击获取MD5密钥1.2 MD5签名生成规则#
1
排序
步按照ASCII码升序的方式,对请求的payload进行排序
2
遍历并拼接
对第一步的排序结果,进行key-value 遍历, 对value trim后不为空的 key-value ,使用 URL 键值对的格式进行拼接,得到(key1=value1&key2=value2&...)格式的字符串
3
签名
在第2步取到字符串末尾,按照 “&pkey=商户的MD5密钥” 的形式拼接上商户的MD5秘钥, 然后对该字符串进行MD5, 得到的值即为签名值
1
原始请求体
{
version = 1.0,
transactionType = pay,
appId = 假设这里为空,
amount = 1234,
currency = USD
}
2
排序后
{
amount = 1234,
appId = 假设这里为空,
currency = USD,
transactionType = pay,
version = 1.0
}
4
签名
在上述字符串末尾,按照 “&pkey=商户的MD5密钥” 的形式拼接上商户的MD5秘钥, 然后对该字符串进行MD5, 得到的值即为签名值sign 1.3 MD5加签流程#
商户加签:
1)用户获取MD5秘钥
2)用户按照MD5签名生成规则对请求负载生成签名值sign,并在请求中携带signUseePay加签:
1)UseePay获取提供给用户的MD5秘钥
2)UseePay按照签名规则对响应数据加签,并在响应数据中携带sign1.4 MD5验签流程#
商户验签:
1)商户按照MD5签名生成规则,对UseePay响应的数据进行MD5计算,得到一个计算值。
2)商户将这个计算结果与UseePay响应数据中的sign值进行比对。
比对一致代表来自UseePay的数据未被篡改,可以信任,否则不信任该响应数据。UseePay验签:
1)UseePay按照MD5签名生成规则,对商户的请求数据进行MD5计算,得到一个计算值。
2)UseePay将计算结果与商户请求中的sign进行比对。
比对一致代表数据未被篡改,可以信任本次来自商户的请求,否则提示验签失败。2. RSA秘钥#
使用RSA签名时,共存在两个密钥对:UseePay密钥对(UseePay提供)和商户密钥对(商户提供)。
两个密钥对的公钥对双方公开,用于加签。私钥各自保密存储,用于验签。
2.1 RSA秘钥准备#