支付宝没法回调或者回调后验签失败

首先:没有回调?仍是进入回调函数可是验签失败给支付宝返回了failure?web

       按照正常逻辑,验签失败就不会进行业务处理修改订单状态,订单仍处于未支付状态。为肯定到底是没有回调仍是验签失败,能够在回调函数中打印request中获取的信息,或者存入Redis查看。bash

       一:没有回调服务器

       没有回调极有多是你的notify_url不能外网访问,这种状况很容易出如今本地调试期,本地可使用钉钉外网穿透,具体怎么使用请参考我这篇文章中间部分https://juejin.im/post/5c1849f7f265da61327f3c40。函数

       服务器上没有访问则会是https的问题,公司注册的SSL证书不标准致使支付宝没法识别https,为确认,请改成http访问试试看可否正常回调。工具

       二:验签失败       post

       支付宝的验签方式使用的是SDK自带的方法(具体完整的回调方法请参考https://juejin.im/post/5c1849f7f265da61327f3c40),以下:编码

boolean signVerified = AlipaySignature.rsaCheckV1(params, alipayConfig.getAlipayPublicKey(), AlipayConfig.charset, AlipayConfig.signType);复制代码

参数分别为:从request中获取的信息(Map形式),支付宝公钥,编码方式,签名方式。加密

既然是封装在SDK中的方法,就极小可能出问题,那么问题100%出在参数上,咱们一个个来说url

1.params 这是支付宝返回的信息,只要是支付宝给你返回信息了,必定是标准格式的信息,出错的可能性也很小,其中几个参数可能会是null,但在SDK封装好的验签方法中必定会剔除的。因此这个参数基本不会出问题。spa

2.编码格式和加密方式,这两个通常固定,UTF-8和RSA2,也通常不会出问题。

3.支付宝公钥,这是最有可能出错的。先讲讲这个参数的生成方式,进入open.alipay.com,登陆后进入个人开放平台,在左上角找到开发者中心-->网页&移动应用,找到本身的应用点击查看详情

按官方文档https://docs.open.alipay.com/200/105310下载加密工具,生成公钥和私钥,将公钥贴在这里后会自动生成后面的支付宝公钥,私钥存在本地。你验签须要的支付宝公钥就是上图点击查看支付宝公钥的字符串。

       问题出在下载加密工具,这里要使用最新版本的V1.4(根据支付宝官网更新)

若是你使用了旧版本,支付依然能成功可是验签就会失败!!!

若是你使用了旧版本,支付依然能成功可是验签就会失败!!!

若是你使用了旧版本,支付依然能成功可是验签就会失败!!!

你能够看到在这个工具上方菜单栏也有验签功能,你能够用本身生成的公钥私钥先在这里验证一番。

相关文章
相关标签/搜索