7.6. 完善支付后逻辑

本教程最新版为 8.x,当前版本已放弃维护,请阅读最新版本!

支付后逻辑

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

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

支付成功事件

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

$ 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 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 32

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