status != OrderStatusEnum::APPLY_REFUND) { // 如果当前状态不允许退款,返回错误信息 return $this->response()->error('订单当前状态禁止退款'); } // 创建支付宝支付实例 $pay = Pay::alipay(config('pay.ali')); // 准备退款数据 $refundData = [ 'out_trade_no' => $order->no, // 订单号 'trade_no' => $order->pay_no, // 支付交易号 'refund_amount' => $order->pay_amount, // 退款金额 'refund_reason' => '正常退款', // 退款原因 ]; try { // 发起退款请求 $response = $pay->refund($refundData); // 更新订单的退款信息 $order->pay_refund_fee = $response->get('refund_fee'); // 设置退款金额 $order->pay_trade_no = $response->get('trade_no'); // 设置退款交易号 $order->status = OrderStatusEnum::REFUND; // 更新订单状态为退款 $order->save(); // 保存订单的更改 } catch (\Exception $e) { // 处理异常情况 // abort(500, $e->getMessage()); // 可选:抛出异常 return $this->response()->error('服务器异常,请稍后再试'); // 返回错误信息 } // 返回成功响应并刷新页面 return $this->response()->success('退款成功.')->refresh(); } /** * 显示退款确认对话框 * * @return void */ public function dialog() { // 确认退款操作 $this->confirm('退款会直接把钱退回到支付账户,是否继续'); } }