return App ('alipay')->success ();

app('alipay')->success() 返回数据给支付宝,支付宝得到这个返回之后就认为我们已经处理好这笔订单,不会再发生这笔订单的回调了。那上面这个判断
// 如果订单状态不是成功或者结束,则不走后续的逻辑
/
if(!in_array($data->trade_status, ['TRADE_SUCCESS', 'TRADE_FINISHED'])) {
return app('alipay')->success();
},交易状态没有成功,为什么要给支付宝发送success?,难道不应该让支付宝继续再重新推送 直至 支付宝trade_status交易成功吗?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案
  1. 如果状态码不是那两个,说明是交易被关闭了,就是这笔订单永远不可能成功了,所以不存在『难道不应该让支付宝继续再重新推送 直至 支付宝trade_status交易成功吗?』
  2. 支付宝的订单不同状态回调是互相独立的,假如真的订单状态变成了『成功』,那么无论我们之前对非成功状态的返回是什么,支付宝都会发起支付状态为『成功』的回调。
5年前 评论
讨论数量: 5
leo
  1. 如果状态码不是那两个,说明是交易被关闭了,就是这笔订单永远不可能成功了,所以不存在『难道不应该让支付宝继续再重新推送 直至 支付宝trade_status交易成功吗?』
  2. 支付宝的订单不同状态回调是互相独立的,假如真的订单状态变成了『成功』,那么无论我们之前对非成功状态的返回是什么,支付宝都会发起支付状态为『成功』的回调。
5年前 评论

@leo 感谢答疑,继续学习中。

5年前 评论

@leo 第二句话不是很理解,麻烦老师再讲的通俗一点,谢谢

5年前 评论

我也不理解第二句话

5年前 评论

我收到过支付宝返回的状态是 WAIT_BUYER_PAY , 用户还没有付款。 过了一会儿用户付款了,会返回TRADE_SUCCESS, 当不是 TRADE_SUCCESS 和 TRADE_FINISHED 时 就返回 success 是不是不太对?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!