|
|
|
@ -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(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|