mirror of
				https://gitee.com/technical-laohu/mpay.git
				synced 2025-11-04 16:53:44 +08:00 
			
		
		
		
	更新订单生成逻辑提醒
This commit is contained in:
		@@ -30,30 +30,30 @@ class PayController
 | 
			
		||||
        $out_trade_no = Order::where('out_trade_no', $req_data['out_trade_no'])->value('out_trade_no');
 | 
			
		||||
        if ($out_trade_no) return '订单提交重复';
 | 
			
		||||
        // 创建新订单
 | 
			
		||||
        $order_id = Order::createOrder($req_data);
 | 
			
		||||
        if (!$order_id) return '创建订单失败';
 | 
			
		||||
        return redirect("/Pay/console/{$order_id}");
 | 
			
		||||
        $order_info = Order::createOrder($req_data);
 | 
			
		||||
        if ($order_info['code'] !== 0) return $order_info['msg'];
 | 
			
		||||
        return redirect("/Pay/console/{$order_info['data']['order_id']}");
 | 
			
		||||
    }
 | 
			
		||||
    // api提交订单
 | 
			
		||||
    public function mapi(Request $request)
 | 
			
		||||
    {
 | 
			
		||||
        if (!$request->isPost()) return '请使用POST方式提交';
 | 
			
		||||
        if (!$request->isPost()) return json(backMsg(0, '请求方式错误'));
 | 
			
		||||
        $req_data = $request->post();
 | 
			
		||||
        if (!$req_data) $req_data = $request->get();
 | 
			
		||||
        if (!$req_data) return '参数错误';
 | 
			
		||||
        if (!$req_data) return json(backMsg(0, '参数错误'));
 | 
			
		||||
        // 验证签名
 | 
			
		||||
        $key = User::where('pid', $req_data['pid'])->where('state', 1)->value('secret_key');
 | 
			
		||||
        if (!$key) return '用户禁用或不存在';
 | 
			
		||||
        if (!$key) return json(backMsg(0, '用户禁用或不存在'));
 | 
			
		||||
        $sign_str = self::getSign($req_data, $key);
 | 
			
		||||
        if ($req_data['sign'] !== $sign_str) return '签名错误';
 | 
			
		||||
        if ($req_data['sign'] !== $sign_str) return json(backMsg(0, '签名错误'));
 | 
			
		||||
        // 检查商户订单
 | 
			
		||||
        $out_trade_no = Order::where('out_trade_no', $req_data['out_trade_no'])->value('out_trade_no');
 | 
			
		||||
        if ($out_trade_no) return '订单提交重复';
 | 
			
		||||
        if ($out_trade_no) return json(backMsg(0, '订单提交重复'));
 | 
			
		||||
        // 创建新订单
 | 
			
		||||
        $order_id = Order::createOrder($req_data);
 | 
			
		||||
        if (!$order_id) return '创建订单失败';
 | 
			
		||||
        $payurl = $request->domain() . "/Pay/console/{$order_id}";
 | 
			
		||||
        $info = ['code' => 1, 'msg' => '订单创建成功', 'trade_no' => $order_id, 'qrcode' => $payurl];
 | 
			
		||||
        $order_info = Order::createOrder($req_data);
 | 
			
		||||
        if ($order_info['code'] !== 0) return json(backMsg(0, $order_info['msg']));
 | 
			
		||||
        $payurl = $request->domain() . "/Pay/console/{$order_info['data']['order_id']}";
 | 
			
		||||
        $info = ['code' => 1, 'msg' => '订单创建成功', 'trade_no' => $order_info['data']['order_id'], 'payurl' => $payurl];
 | 
			
		||||
        return json($info);
 | 
			
		||||
    }
 | 
			
		||||
    // 收银台
 | 
			
		||||
 
 | 
			
		||||
@@ -13,11 +13,12 @@ class Order extends BaseModel
 | 
			
		||||
    // 订单有效期
 | 
			
		||||
    private static $activity_time = 180;
 | 
			
		||||
    // 新建订单
 | 
			
		||||
    public static function createOrder($data): string|false
 | 
			
		||||
    public static function createOrder($data): array
 | 
			
		||||
    {
 | 
			
		||||
        $my_time = time();
 | 
			
		||||
        $channel = self::setChannel($data['pid'], $data['type']);
 | 
			
		||||
        if (!$channel) return false;
 | 
			
		||||
        if ($channel['code'] !== 0) return $channel;
 | 
			
		||||
        $channel = $channel['data'];
 | 
			
		||||
        $new_order = [
 | 
			
		||||
            // 订单号
 | 
			
		||||
            'order_id'      => self::createOrderID('H'),
 | 
			
		||||
@@ -60,9 +61,9 @@ class Order extends BaseModel
 | 
			
		||||
        ];
 | 
			
		||||
        $res = self::create($new_order);
 | 
			
		||||
        if ($res->order_id) {
 | 
			
		||||
            return $res->order_id;
 | 
			
		||||
            return backMsg(0, 'ok', ['order_id' => $res->order_id]);
 | 
			
		||||
        } else {
 | 
			
		||||
            return false;
 | 
			
		||||
            return backMsg(4, '创建订单记录失败');
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    // 查询订单列表
 | 
			
		||||
@@ -119,8 +120,9 @@ class Order extends BaseModel
 | 
			
		||||
    {
 | 
			
		||||
        // 查询有效收款账户及通道
 | 
			
		||||
        $aids = PayAccount::where('pid', $pid)->where('state', 1)->column('id');
 | 
			
		||||
        if (!$aids) return backMsg(1, '用户无可用收款账户');
 | 
			
		||||
        $channel_infos = PayChannel::whereIn('account_id', $aids)->where('state', 1)->order('last_time', 'asc')->select();
 | 
			
		||||
        if (!$channel_infos || !$aids) return [];
 | 
			
		||||
        if ($channel_infos->isEmpty()) return backMsg(2, '用户账户无可用收款码');
 | 
			
		||||
        // 微信/支付宝收款处理
 | 
			
		||||
        $channel_info = null;
 | 
			
		||||
        foreach ($channel_infos as $key => $value) {
 | 
			
		||||
@@ -140,12 +142,12 @@ class Order extends BaseModel
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (!$channel_info) return [];
 | 
			
		||||
        if (!$channel_info) return backMsg(3, '用户账户无可用收款通道');
 | 
			
		||||
        // 选取收款通道
 | 
			
		||||
        $patt = PayAccount::find($channel_info->account_id);
 | 
			
		||||
        $channel = ['aid' => $channel_info->account_id, 'cid' => $channel_info->id, 'patt' => $patt->getData('pattern')];
 | 
			
		||||
        PayChannel::update(['last_time' => self::getFormatTime(), 'id' => $channel['cid']]);
 | 
			
		||||
        return $channel;
 | 
			
		||||
        return backMsg(0, 'ok', $channel);
 | 
			
		||||
    }
 | 
			
		||||
    // 获取扩展参数数组
 | 
			
		||||
    // private static function getParams(array $data): array
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user