diff --git a/app/controller/PayController.php b/app/controller/PayController.php index 3008568..99106fe 100644 --- a/app/controller/PayController.php +++ b/app/controller/PayController.php @@ -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); } // 收银台 diff --git a/app/model/Order.php b/app/model/Order.php index 1f62400..1dbeec6 100644 --- a/app/model/Order.php +++ b/app/model/Order.php @@ -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