mirror of
https://gitee.com/technical-laohu/mpay.git
synced 2025-11-05 07:33:41 +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