最新支付宝接口错误代码 ILLEGAL_SIGN 问题解决具体分析
调试错误,请回到请求来源地,重新发起请求。
错误代码 ILLEGAL_SIGN
这个问题真的很愁人排查了很久才发现原因 其实新的接口真的很变态 还要公钥 私钥 不过为了安全考虑 将就吧!从了支付宝吧!
alipay_submit.class.php 这文件的如下代码生成签名串的 最终返回到function buildRequestHttpInFile()
function buildRequestMysign($para_sort) {
//把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
$prestr = createLinkstring($para_sort);
$mysign = "";
switch (strtoupper(trim($this->alipay_config['sign_type']))) {
case "RSA" :
$mysign = rsaSign($prestr, $this->alipay_config['private_key_path']);
break;
default :
$mysign = "";
}
return $mysign;
}
再排查到alipay_rsa.function.php
rsaSign() 函数 发现!发现! 地址都能读取到就是读取不到内容
最终发现 alipay.config.php
//商户的私钥(后缀是.pen)文件相对路径
$alipay_config[‘private_key_path’] = ‘alipay/pay/key/rsa_private_key.pem’;
//支付宝公钥(后缀是.pen)文件相对路径
$alipay_config[‘ali_public_key_path’]= ‘alipay/pay/key/alipay_public_key.pem’;
公钥私钥的 路径一定要配置正确 支付宝真是把我坑了!!! 希望我的分析可以帮到大家!!!
特别注意1:
如果控制器读出来的不是UTF-8编码 还还要加
header(“Content-type:text/html;charset=utf-8”);
特别注意2:
如果使用TP框架开发消除多余POST 与 GET
if(!empty($_GET[‘m’])){
unset($_GET[‘m’]);
}else if(!empty($_POST[‘m’])){
unset($_POST[‘m’]);
}