fix(pay): 预付款组合支付登录拦截与回调复查干净实例重置
这个提交包含在:
@@ -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();
|
||||
}
|
||||
|
||||
在新工单中引用
屏蔽一个用户