Laravel框架支付宝支付收不到异步回调请求【原创】

原文链接

在laravel中使用支付宝沙箱环境测试支付,发现异步回调方法始终没有被请求。网上很多人说检查授权回调地址配置是否有误,但实际上授权回调地址跟这个异步回调地址没有任何关系。

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值