如果在集成的过程当中发现,在本地测试支付正常,但是发布到服务上后支付一直提示签名错误之类的问题,首先看一下本地环境的PHP版本和服务器PHP版本是否一样,支付宝官方提供的SDK需要5.5以上版本不包括5.5
两种解决办法:1、升级服务器PHP版本
2、将AopClient.php中修改为openssl_sign($data, $sign, $res, sha256WithRSAEncryption);
另外自定义json_encode方法
public function my_json_encode($array)
{
if(version_compare(PHP_VERSION,'5.6.0','<')){
$str = json_encode($array);
$str = preg_replace_callback("#\\\u([0-9a-f]{4})#i",function($matchs){
return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs[1]));
},$str);
return $str;
}else{
return json_encode($array, JSON_UNESCAPED_UNICODE);
}
}
网友评论