该错误的引起因素有好几点:
1、传递的参数有空值。在支付宝的支付请求url中,某个参数是空值。这样空值在经过md5签名以后,比对会报错,所以请注意您传递过来的url中无空值。建议检查您购物车的支付宝代码,例如:subject="shop"而非subject= ""
2、程序中安全校验码填写错误(请务必保存好该码,泄漏出去有可能被人伪造消息)。在您拿到不同测试中都有一个key的参数,该参数代表支付宝的安全校验码。从账户内复制过来的时候,会多余空格,请消息检查。例如某一个用户的key是kXXXXXXXXXXXXXXXXXXXXXXXXXXXati,复制到程序中key=” kXXXXXXXXXXXXXXXXXXXXXXXXXXXati ”多了空格的。
3、中文编码的问题。不同网站采用不同的中文编码。有utf-8.gbk,iso-8859-1等,而程序中md5对中文签名会不一样,造成显示该错误。现asp的程序没有直接utf-8编码的md5。Php和jsp。Net程序都是支持该编码的,您可以通过支付接口的 _input_charset = “utf-8” 参数设置制定的字符集,并且我们返回通知也会使用该字符集,解决乱码的问题。
4私钥没有转换为pkcs8格式
解决方法:
将私钥转成PKCS8替换一下原私钥即可
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。