7.6. 完善支付后逻辑

支付后逻辑

前两个章节我们已经完成了订单支付的部分,接下来我们还要补充一些逻辑,比如支付之后要给订单中的商品增加销量,比如我们要发邮件给用户告知订单支付成功。

商品增加销量和发送邮件并不会影响到订单的支付状态,即使这两个操作失败了也不影响我们后续的业务流程,对于此类需求我们通常使用异步事件来解决。

支付成功事件

接下来我们来创建一个支付成功的事件:

$ php artisan make:event OrderPaid

app/Events/OrderPaid.php

use App\Models\Order;
.
.
.
class OrderPaid
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    protected $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    public function getOrder()
    {
        return $this->order;
    }
}

事件本身不需要有逻辑,只需要包含相关的信息即可,在我们这个场景里就只需要一个订单对象。

接下来我们在支付成功的服务器端回调里触发这个事...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 25

else
关于获取关联模型的问题?
3 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
daxiaobuzhaodiao
关于 OrderPaid 中的这段代码,求解其中有什么不同之处呢?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.7
Jason2018
销量有增加,但是没有收到邮件,是不是配置信息错了?
0 个点赞 | 13 个回复 | 问答 | 课程版本 5.5
Kaven
没有输出 null。不更新销量,没有邮件?
0 个点赞 | 9 个回复 | 问答 | 课程版本 5.5
wukunzan
销量为什么要用事件和监听器?
0 个点赞 | 7 个回复 | 问答 | 课程版本 5.5
Curry
更新商品销量疑问?
0 个点赞 | 7 个回复 | 问答 | 课程版本 5.5
东华上仙丶
队列进程一直卡死、一直循环
0 个点赞 | 6 个回复 | 问答 | 课程版本 5.8
putixin
支付成功,数据库没有修改相应状态?
0 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
AllenBool
销售量不显示,邮件却能正常发送,是什么原因?
0 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
gaga
关于队列进程一直卡死的问题
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
断桥红颜V
运行`PHP artisan queue:work --queue=wxtQueue`后异步事件没有被触发
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.7
jackzheng9969
无限处理这队列 SendOrderPaidMail,不知道怎么回事?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.7
_杭城浪子
邮件发送不成功
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
_杭城浪子
load 和 with 的区别和联系
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
surest
关于商品销量更新的疑惑
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
米朵
线上 Connection refused 是什么问题?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
soulbringer
销售量和邮件都发送成功,怎么还会一直处理?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
瀚海栏杆
如果订单被退款,需要减去这个销量吗?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
_杭城浪子
ShouldQueue 异步事件触发逻辑
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
hsy
$order->load ('items.product') 是什么意思呢;
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
铁血情长
是否需要避免查询 N+1 问题
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
wesen
PHP artisan queue:work 关闭终端后就不执行了?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Gebriel
对 OrderPaid 事件监听代码疑问????
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
caojianx
我认为需要加上队列执行失败的代码
0 个点赞 | 0 个回复 | 分享 | 课程版本 5.8