diff --git a/addons/shopro/controller/Pay.php b/addons/shopro/controller/Pay.php index 2d331f7..2c4fa48 100644 --- a/addons/shopro/controller/Pay.php +++ b/addons/shopro/controller/Pay.php @@ -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(); }