function generateSignature($params, $key) {
// 对参数按字母顺序排序
ksort($params);
// 开始拼接字符串
$sign_str = '';
// 遍历排序后的参数
foreach ($params as $k => $v) {
// 忽略空值和sign参数
if (empty($v) || $k === 'sign') {
continue;
}
// 对参数值进行urlencode并拼接
$sign_str .= $k . '=' . urlencode($v) . '&';
}
// 在最后添加key参数
$sign_str .= 'key=' . urlencode($key);
// 使用MD5加密并转换为大写
return strtoupper(md5($sign_str));
} 是否有误
你这写法有问题的,&会多一个,另外签名需要原值拼接,加urlencode干啥?建议参考官方sdk或着直接使用sdkhttps://github.com/wechatpay-apiv3/wechatpay-php/blob/main/src/Crypto/Hash.php