getEnabledPlans(); return $this->renderSuccess('',compact('plans')); } /** * 创建年卡订单 */ public function createOrder() { $planId = $this->request->post('plan_id'); $user = $this->getUser(); $supplier = $this->getSupplierUser($user); $supplierId = $supplier['shop_supplier_id']; $memberService = new MemberService(); $result = $memberService->createOrder($supplierId, $planId, $user); if (!$result['status']) { return $this->renderError($result['msg']); } return $this->renderSuccess( '创建订单成功',['order' => $result['data']]); } /** * 构建支付请求 */ public function pay() { // 获取订单信息 $param = $this->request->param(); // 获取用户信息 $user = $this->getUser(); $supplier = $this->getSupplierUser($user); $supplierId = $supplier['shop_supplier_id']; // 获取订单详情 $order = MemberOrderModel::detail($param['order_id']); if (!$order) { return $this->renderError('订单不存在'); } // 检查订单是否已支付 if ($order['pay_status'] == 20) { return $this->renderError('订单已支付'); } if ($this->request->isGet()) { // 开启的支付类型 $payTypes = AppModel::getPayType($supplier['app_id'], $param['pay_source']); // 支付金额 $payPrice = $order['price']; $balance = $user['balance']; return $this->renderSuccess('', compact('payTypes', 'payPrice', 'balance')); } // 更新支付方式 $order->save(['pay_type' => $param['payType']]); // 余额支付 if ($param['use_balance'] == 1 || $param['payType'] == OrderPayTypeEnum::BALANCE) { // 检查余额是否足够 if ($user['balance'] < $order['price']) { return $this->renderError('余额不足'); } // 扣除余额并激活会员 $user->where('user_id', '=', $user['user_id']) ->dec('balance', $order['price']) ->update(); BalanceLogModel::add(BalanceLogSceneEnum::CONSUME, [ 'user_id' => $user['user_id'], 'money' => -$order['price'], ], ['order_no' => $order['order_no']]); //$user->setDecBalance($order['price'], '购买年卡'); $memberService = new MemberService(); $memberService->activateMember($param['order_id']); return $this->renderSuccess('支付成功', [ 'order_id' => $param['order_id'], 'pay_type' => OrderPayTypeEnum::BALANCE, ]); } // 其他支付方式 (微信、支付宝等) $payment = PaymentService::orderPayment( $supplier['user'], $order, $param['payType'] ); // 支付类型 $payTypes = [20, 30]; // 微信支付和支付宝支付 if ($supplier['balance'] > 0) { $payTypes[] = 10; // 余额支付 } return $this->renderSuccess('支付信息获取成功', [ 'order_id' => $param['order_id'], 'pay_type' => $param['payType'], 'payment' => $payment, 'payTypes' => $payTypes, 'payPrice' => $order['price'], 'balance' => $supplier['balance'] ]); } /** * 支付成功回调 */ public function payNotify() { $orderId = $this->request->post('order_id'); $memberService = new MemberService(); $result = $memberService->activateMember($orderId); if (!$result) { return $this->renderError('激活年卡失败'); } return $this->renderSuccess([], '年卡激活成功'); } /** * 获取当前供应商年卡信息 */ public function info() { $user = $this->getUser(); $supplier = $this->getSupplierUser($user); $supplierId = $supplier['shop_supplier_id']; $supplier = SupplierModel::detail($supplierId); $member = $supplier->getCurrentMember(); return $this->renderSuccess(compact('member')); } /** * 检查权限 */ public function checkPermission() { $permission = $this->request->post('permission'); $user = $this->getUser(); $supplier = $this->getSupplierUser($user); $supplierId = $supplier['shop_supplier_id']; $memberService = new MemberService(); $hasPermission = $memberService->checkPermission($supplierId, $permission); return $this->renderSuccess(['has_permission' => $hasPermission]); } }