签名规则
为确保交易安全,所有请求都需要进行签名验证。本文档介绍签名的生成规则和验证方法。
RSA2 签名算法(推荐)
RSA2 使用 SHA256WithRSA 算法进行签名,安全性更高。
签名步骤:
- 将所有参数按照参数名 ASCII 码从小到大排序(a-z),
sign、sign_type和空值不参与签名 - 将排序后的参数拼接成 URL 键值对格式,如
a=b&c=d&e=f,参数值不进行 URL 编码 - 使用商户私钥对拼接的字符串进行 SHA256WithRSA 签名
- 将签名结果进行 Base64 编码,得到最终的 sign 值
MD5 签名算法
MD5 签名算法简单易用,适用于对安全性要求不高的场景。
签名步骤:
- 将所有参数按照参数名 ASCII 码从小到大排序(a-z),
sign、sign_type和空值不参与签名 - 将排序后的参数拼接成 URL 键值对格式,如
a=b&c=d&e=f - 在拼接的字符串末尾追加商户密钥 KEY
- 对拼接后的字符串进行 MD5 运算,结果转为小写
// PHP 示例 $params = [ 'pid' => '1001', 'type' => 'alipay', 'out_trade_no' => '20230101120000001', 'name' => '测试商品', 'money' => '1.00', ]; // 1. 按键名排序 ksort($params); // 2. 拼接成 URL 格式 $str = http_build_query($params); // 3. 追加密钥并 MD5 $sign = md5($str . $key);
注意事项
1、签名时请确保参数值不进行 URL 编码
2、空值参数不参与签名
3、sign 和 sign_type 参数不参与签名
4、推荐使用 RSA2 签名方式,安全性更高
获取密钥
登录商户后台,在 个人资料 → API信息 页面可以获取商户ID和密钥。 如使用 RSA2 签名,点击【生成商户RSA密钥对】获取公私钥。