From a7befed6d49c006c6e0f5e5f2c3e5967dc7e01e5 Mon Sep 17 00:00:00 2001 From: liapples Date: Wed, 27 Oct 2021 10:54:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E6=AC=BE=E5=87=8Fpaid=5Fmoney?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/Grid/AuditRefund.php | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/app/AdminAgent/Extensions/Grid/AuditRefund.php b/app/AdminAgent/Extensions/Grid/AuditRefund.php index 02e9e4f..850bbbf 100644 --- a/app/AdminAgent/Extensions/Grid/AuditRefund.php +++ b/app/AdminAgent/Extensions/Grid/AuditRefund.php @@ -50,11 +50,8 @@ class AuditRefund extends RowAction //修改订单状态 $order = Order::firstWhere(['id' => $this->getKey(), 'agent_id' => $agent->id, 'status' => OrderStatus::REFUNDING]); if (!$order) { - return $this->response()->error("退款订单不存在或已处理过了")->refresh(); + throw new \Exception("退款订单不存在或已处理过了"); } - $order->verify_code = ''; //清空核销码 - $order->status = OrderStatus::REFUNDED; - $order->save(); //查看原来的支付信息,可能存在多条支付记录 $log = UserMoneyLog::query() @@ -67,10 +64,10 @@ class AuditRefund extends RowAction $setting = AdminSetting::val(['payee_appid', 'payee_mchid', 'payee_mchkey']); if (!isset($setting['payee_appid'], $setting['payee_mchid'], $setting['payee_mchkey'])) { - return $this->response()->error('获取系统配置失败'); + throw new \Exception('获取系统配置失败'); } - //将微信发起退款申请 + //向微信发起退款申请 $config = config('wechat.payment.default'); $config = array_merge($config, [ 'app_id' => $setting['payee_appid'], @@ -83,7 +80,9 @@ class AuditRefund extends RowAction $app = Factory::payment($config); // 参数分别为:微信订单号、商户退款单号、订单金额、退款金额、其他参数 + $refund_money = 0; foreach ($log as $k=>$v) { + $refund_money = $refund_money + $v->money; $refund_no = $order->refund_info['refund_no'] . '-' . $v['id']; $money = intval($v->money * 100); $result = $app->refund->byTransactionId($v->transaction_id, $refund_no, $money, $money); @@ -101,15 +100,21 @@ class AuditRefund extends RowAction 'created_at' => now(), //模型没有updated_at,无法自动写入时间 ]); } else { - return $this->response()->error("操作失败,失败原因:" . ($result['return_msg']??'未知'))->refresh(); + throw new \Exception("操作失败,失败原因:" . ($result['return_msg']??'未知')); } } + //保存到订单表 + $order->verify_code = ''; //清空核销码 + $order->status = OrderStatus::REFUNDED; + $order->paid_money = DB::raw('`paid_money` - ' . $refund_money); + $order->save(); + DB::commit(); return $this->response()->success("操作成功,款项将原路退还")->refresh(); } catch (\Exception $e) { DB::rollBack(); - return $this->response()->error($e->getMessage()); + return $this->response()->error($e->getMessage())->refresh(); } }