欢迎您访问我的笔记本站旨在于记录一些平时工作中遇到的一些问题和解决方法,方便查阅,部分内容来源于网络,如有侵权请联系我删除
  • 微信微信
您现在的位置是:首页 > PHP后端

Laravel框架支付宝支付收不到异步回调请求-[原创]

日期:2021-12-08 14:45:55 作者:tanyi 来源:我的笔记 浏览:711 次
在laravel中使用支付宝沙箱环境测试支付,发现异步回调方法始终没有被请求

网上很多人说检查授权回调地址配置是否有误,但实际上授权回调地址跟这个异步回调地址没有任何关系。


image.png

image.png

官方文档已经说得很清楚,所以直接排除这一点。


另外一些答案很多都是说检查配置里面的notify_url配置是否正确,必须是以http或https开头的公网可访问的完整地址(或是本地测试使用Ngrok内网穿透),地址后面不能跟参数等等。这些问题一般来说出现的比较少,而我遇到的也跟这些问题无关。


最后发现在路由配置的时候该回调地址设置的是仅支持get请求,而从上图异步通知的说明中可看见支付宝是通过POST方式请求该地址,所以路由访问必须设置为POST可请求,当然也可以设置any等等。


到此并没有结束,查看日志发现该方法依然没有被请求。只能继续排查,最后发现laravel在post请求时默认是会进行CSRF 保护,因此支付宝在请求该地址因为没有通过令牌验证直接被拦截掉了。为此我们需要关闭该地址的令牌验证,有多种方法解决这个问题。


可以直接注释掉Kernel.php中的VerifyCsrfToken中间件,这样所有的请求都不会进行令牌验证,也可以添加令牌白名单。

image.png


提交评论
评论列表