签名规则

为确保交易安全,所有请求都需要进行签名验证。本文档介绍签名的生成规则和验证方法。

RSA2 签名算法(推荐)

RSA2 使用 SHA256WithRSA 算法进行签名,安全性更高。

签名步骤:

  1. 将所有参数按照参数名 ASCII 码从小到大排序(a-z),signsign_type 和空值不参与签名
  2. 将排序后的参数拼接成 URL 键值对格式,如 a=b&c=d&e=f,参数值不进行 URL 编码
  3. 使用商户私钥对拼接的字符串进行 SHA256WithRSA 签名
  4. 将签名结果进行 Base64 编码,得到最终的 sign 值

MD5 签名算法

MD5 签名算法简单易用,适用于对安全性要求不高的场景。

签名步骤:

  1. 将所有参数按照参数名 ASCII 码从小到大排序(a-z),signsign_type 和空值不参与签名
  2. 将排序后的参数拼接成 URL 键值对格式,如 a=b&c=d&e=f
  3. 在拼接的字符串末尾追加商户密钥 KEY
  4. 对拼接后的字符串进行 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密钥对】获取公私钥。