2018年底,在重构 陈华编程学院 过程中,因为第一版要赶在年前上线,所以有点匆忙,没有仔细测试就上线了。

上线之后果然出现了一个问题,这里借这个机会,结合之前经验,写一个帖子记录一下 Laravel5 项目中做支付宝支付的一些注意事项。

这个问题是这样的,用户通过 订阅VIP 页面提交订单,跳转到支付宝支付成功,之后回调出现了问题:

因为没有对支付宝回调接口添加 VerifyCsrfToken::$except 验证,所以导致回调一直失败,而且没有任何报错提示。

后来我拼接了一组curl参数,模拟请求才定位到问题。

下面我总结一下 Laravel5项目中使用支付宝支付的一些注意事项

(1)回调地址不能是内网或者局域网地址,必须是外网可以访问的。否则无法调用!

(2)Laravel5 框架中 POST 路由默认情况下都会走CSRF校验,类似支付宝回调这种三方调用,需要排除校验。文件位置:app/Http/Middleware/VerifyCsrfToken.php,修改 protected $except = ['notice/*'];

(3)程序执行完后必须打印输出“success”(不包含引号),且返回后不能做跳转,否则支付宝会一直不断推送。

(4)如果支付宝的异步通知失败,支付宝的重试频率大概为:4m,10m,10m,1h,2h,6h,15h。

(5)个人建议在支付宝处理逻辑catch到异常之后,日志记录完整的输入参数,方面本地模拟定位问题。

差不多就这些吧,后面遇到问题再补充。

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/6