支付宝无法回调或者回调后验签失败
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⽀付宝⽆法回调或者回调后验签失败
⾸先:没有回调?还是进⼊回调函数但是验签失败给⽀付宝返回了failure?
按照正常逻辑,验签失败就不会进⾏业务处理修改订单状态,订单仍处于未⽀付状态。
为确定究竟是没有回调还是验签失败,可以在回调函数中打印request中获取的信息,或者存⼊Redis查看。
⼀:没有回调
服务器上没有访问则会是https的问题,公司注册的SSL证书不标准导致⽀付宝⽆法识别https,为确认,请改为http访问试试看能否正常回调。
⼆:验签失败
boolean signVerified = AlipaySignature.rsaCheckV1(params, alipayConfig.getAlipayPublicKey(), AlipayConfig.charset, AlipayConfig.signType);复制代码
参数分别为:从request中获取的信息(Map形式),⽀付宝公钥,编码⽅式,签名⽅式。
既然是封装在SDK中的⽅法,就极⼩可能出问题,那么问题100%出在参数上,我们⼀个个来讲
1.params 这是⽀付宝返回的信息,只要是⽀付宝给你返回信息了,⼀定是标准格式的信息,出错的可能性也很⼩,其中⼏个参数可能会是null,但在SDK封装好的验签⽅法中⼀定会剔除的。
所以这个参数基本不会出问题。
2.编码格式和加密⽅式,这两个⼀般固定,UTF-8和RSA2,也⼀般不会出问题。
3.⽀付宝公钥,这是最有可能出错的。
先讲讲这个参数的⽣成⽅式,进⼊,登录后进⼊我的开放平台,在左上⾓找到开发者中⼼-->⽹页&移动应⽤,找到⾃⼰的应⽤点击查看详情
问题出在下载加密⼯具,这⾥要使⽤最新版本的V1.4(根据⽀付宝官⽹更新)
如果你使⽤了旧版本,⽀付依然能成功但是验签就会失败
如果你使⽤了旧版本,⽀付依然能成功但是验签就会失败
如果你使⽤了旧版本,⽀付依然能成功但是验签就会失败
你可以看到在这个⼯具上⽅菜单栏也有验签功能,你可以⽤⾃⼰⽣成的公钥私钥先在这⾥验证⼀番。