event->order->id); if ($Prescription->cancel_status == 1 && $Prescription->pay_type == 1) { PrescripOrderLog::saveLog($this->event->order->id,'调起支付后已经自动取消的订单进行退款'); $t = \Yii::$app->db->beginTransaction(); try { //生成记录 $PrescripOrderRefund = new PrescripOrderRefund(); $PrescripOrderRefund->user_id = $Prescription->user_id; $PrescripOrderRefund->order_id = $Prescription->id; $PrescripOrderRefund->refund_no = FuncHelper::generate_order_no('RF'); $PrescripOrderRefund->refund_price = $Prescription->total_pay_price; $PrescripOrderRefund->saveOrFail(); $Prescription->cancel_status = 1; $Prescription->cancel_time = time(); $Prescription->cancel_remark = '超时未支付取消订单'; //修改退款状态 $Prescription->refund_status = 1; $Prescription->refund_time = time(); $Prescription->saveOrFail(); //退款操作 $PrescripRefundForm = new PrescripRefundForm(); $PrescripRefundForm->refundMoney($PrescripOrderRefund); $t->commit(); } catch (\Exception $e) { $t->rollBack(); PrescripOrderLog::saveLog($this->event->order->id,'调起支付后已经自动取消的订单进行退款异常:'.$e->getMessage()); } return $this; }else{ //正常支付后操作 $this->actionAutoRefund(); } return $this; } //超时自动退款队列 public function actionAutoRefund() { $config = \Yii::$app->params; $orderAutoRefundMinute = isset($config['order']['refund_time']) ? $config['order']['refund_time'] : 24*60*60; if (is_numeric($orderAutoRefundMinute) && $orderAutoRefundMinute >= 0) { // 订单自动取消任务 \Yii::$app->queue->delay($orderAutoRefundMinute)->push(new PrescripRefundJob([ 'orderId' => $this->event->order->id, ])); $autoRefundTime = $this->event->order->created_at + $orderAutoRefundMinute; $this->event->order->auto_refund_time = $autoRefundTime; $this->event->order->save(); } return $this; } }