isv.invalid-alipay-root-cert-sn(无效支付宝根证书序列号)
我也遇到过这个问题,配置都是正确的,换了一个php版本可以正常跳转支付。调试了一下sdk代码,
AopCertClient
类下有一个hex2dec
方法,这里返回了一个round缺失精度类型,并且转为幂输出,修改如下,sdk版本php-4.9.1。
function hex2dec($hex) {
$dec = 0;
$len = strlen($hex);
for ($i = 1; $i <= $len; $i++) {
$dec = bcadd($dec, bcmul(strval(hexdec($hex[$i - 1])), bcpow('16', strval($len - $i))));
}
// return round($dec, 0);
return $dec;
}
__ 希望对你们有所帮助!__
报错原因
1、支付宝CA根证书文件路径(alipay_root_cert_path)错误;
2、支付宝CA根证书证书设置错误;
3、签名方式sign_type值设置错误;
4、php语言服务端sdk版本过低; 排查方案 1、支付宝根证书路径设置错误
支付宝CA根证书文件路径(alipay_root_cert_path)路径存在问题,建议检查路径传值是否正确;
(1)文件路径需设置绝对路径;
(2)核实对应的文件路径是否存在CA根证书文件;
2、支付宝根证书引用错误
alipay_root_cert_path设置路径对象错误,不是支付宝根证书
注:支付宝CA根证书文件,需要点击进入,选择使用的应用,再点击应用信息,
如图:
然后在“接口加密方式”中的“支付宝根证书”位置,点击“下载证书”。
如图:
3、sign_type设置错误
公钥证书方式方法做请求,sign_type必须是sign_type=RSA2;
4、php语言服务端sdk版本过低
php语言服务端sdk版本4.2.0以下的版本存在openssl兼容性问题,如果alipay_root_cert_sn解析的值存在下划线_后面以0X开头的会出现解析错误的情况;
例如:alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6
解决方案:需要升级php语言服务端sdk,升级到sdk4.2.0以上即可.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。