自学内容网 自学内容网

laravel延迟队列 取消未支付超时订单订单

1:生成待支付订单时,调用延迟队列

超过十五分钟未支付自动取消

use App\Jobs\endTask;
use Illuminate\Support\Carbon;

$resPost1 = array("act" => "cy_order_cancel", "id" => $id);

endTask::dispatch($resPost1)->delay(Carbon::now()->addMinutes(15));

2:延迟队列生效,检测订单状态,依旧未支付改为取消

endTask.php

public function handle()

{

        $act = $this->post['act'];

        switch ($act){

                case "order_cancel"://订单超时取消

                        Order::cancel($this->post);

                        break;

                default:

                        break;

        }

}

订单取消方法:

public static function cancel($post){

        if(isset($post['id'])){

                //拿到定时时的订单号处理具体业务逻辑

        }

}

任务队列需要重启***写入新的逻辑

ps:消息队列处理可以echo  输出或写入日志文件但不要打断  如die  或框架语言 error方法等会导致消息队列崩溃停止


原文地址:https://blog.csdn.net/lxp199741/article/details/142605512

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!