fix(pay): 预付款组合支付登录拦截与回调复查干净实例重置

这个提交包含在:
wikiboss
2026-11-01 12:45:10 +08:00
父节点 7ea240dae4
当前提交 f93f88fa26

查看文件

@@ -107,6 +107,9 @@ class Pay extends Base
if (strpos($order_sn, 'TO') !== 0) {
// 保持 order_sn 不变,避免支付回调时找不到订单
if ($payment == 'group') {
if (!$user) {
$this->error('请先登录', null, 401);
}
$payment = 'wechat';
// 重新计算价格
$order_data['total_fee'] = bcsub($order_data['total_fee'], $user->money, 2);
@@ -377,8 +380,9 @@ class Pay extends Base
});
if ($isProcessed) {
// 已经被并发处理过,直接向网关确认成功
$paidOrder = $order->where('order_sn', $out_trade_no)->where('status', '>', 0)->find();
// 已经被并发处理过,直接向网关确认成功(使用全新实例避免前置查询条件残留)
list($paidCheckOrder) = $this->getOrderInstance($out_trade_no);
$paidOrder = $paidCheckOrder->where('order_sn', $out_trade_no)->where('status', '>', 0)->find();
if ($paidOrder) {
return $pay->success()->send();
}