revert(pay): 恢复SHA256签名算法(彩虹易支付V2标准)\n\n- 测试SHA1算法后仍失败,改回SHA256(文档明确V2使用SHA256WithRSA)\n- 诊断脚本证实:商户私钥与商户公钥不是一对,导致所有签名方式验签失败\n- 根本问题:密钥不匹配,需用户核对支付平台后台公钥

This commit is contained in:
ypsdf1
2026-07-15 00:11:38 +08:00
parent af5f31c87e
commit 8ae0fe9b7d
+1 -1
View File
@@ -165,7 +165,7 @@ function buildSign($params, $privateKeyPem) {
if ($key === false) {
throw new Exception('商户私钥加载失败: ' . openssl_error_string());
}
openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA1); // 尝试SHA1算法,彩虹易支付可能使用SHA1而非SHA256
openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA256); // 彩虹易支付V2接口使用SHA256WithRSA
// PHP 8.0+ 已弃用 openssl_free_key,资源会自动释放;显式调用会触发弃用警告,污染 JSON 响应
if (PHP_VERSION_ID < 80000) {
@openssl_free_key($key);