model = new \addons\qingdong\model\MemberProduct(); } /** * 产品列表 */ public function index() { //设置过滤方法 $this->request->filter(['strip_tags', 'trim']); //获取所有权限 $list2 = Db::name('auth_group')->where('status','=','normal')->select(); $roles = array_column($list2,'name','id'); //获取当前用户所在企业的权限组 $company = Db::name('company')->where("id",CID)->find(); $group_id = $company['group_id']; if ($this->request->isAjax()) { list($where, $sort, $order, $offset, $limit) = $this->buildparams(null,null,0); $sort="group_level"; $order="asc"; //负责人为空 $list = $this->model->where($where)->order($sort, $order)->paginate($limit); $row=$list->items(); $group_level = 0; foreach ($row as $k => $v) { if($v['group_id'] == $group_id){ $group_level = $v['group_level']; break; } $row[$k] = $v; } foreach ($row as $k => $v) { $v['group_name'] = $roles[$v['group_id']]??''; $v['buy'] = 0; $v['buy_name'] = '可升级'; if($group_level>$v['group_level']){ $v['buy'] = 1; $v['buy_name'] = '无需升级'; }else if($v['group_id'] == $group_id){ $v['buy'] = 1; $v['buy_name'] = '已拥有'; } $row[$k] = $v; } $result = array("total" => $list->total(), "rows" => $list->items()); return json($result); } return $this->view->fetch(); } /** * 产品详情 */ public function detail($ids = null) { $row = $this->model->get($ids); $this->assign('row', $row); $this->assign('ids', $ids); return $this->view->fetch(); } /** * 获取产品分类 */ public function get_group(){ $countrys = AuthGroup::where('status','=','normal')->field('id,name')->order('id desc')->select(); return json(['list' => $countrys, 'total' => count($countrys)]); } /** * 下单 */ public function buy($ids = null) { //获取当前用户所在企业的权限组 $company = Db::name('company')->where("id",CID)->find(); $group_id = $company['group_id']; $row = $this->model->get($ids); //获取所有权限 $productNow= Db::name('product')->where('group_id','=',$group_id)->find(); if($productNow && $productNow['group_level'] >= $row['group_level']){ return $this->success("无需升级",url("/qingdong/product/member/detail","ids={$ids}")); } $orderModel = new Order(); $orderNo = date('YmdHis')+rand(1000,9999); $data = [ 'type' => 0, 'order_no' => $orderNo, 'user_id' => $this->_staff?$this->_staff->id:'0', 'price' => $row['price'], 'title' => $row['name'], 'org_id' => $row['id'], 'order_source' => 5, 'order_status' => 0, 'pay_status' => 0, 'pay_way' => 1, 'num' => 1, 'order_amount' =>$row['price'], 'total_amount' =>$row['price'], 'discount_amount' =>0, 'status' =>0, 'cid' => CID ]; $orderModel->save($data); // 创建 EasyWeChat 实例 $payment = config('payment'); // $config['payment'] = $payment; $app = Factory::payment($payment); // 构建微信支付订单参数 $paymentParams = [ 'body' => "购买会员套餐服务", 'out_trade_no' => $orderNo, 'total_fee' => $row['price'] * 100, // 转换为分 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], // 客户端IP 'notify_url' => $payment['notify_url'], 'trade_type' => 'NATIVE', // 扫码支付类型 ]; // 调用 EasyWeChat 的统一下单方法 $result = $app->order->unify($paymentParams); // 获取支付二维码链接 $payQrCodeUrl = $result['code_url']; vendor('phpqrcode.phpqrcode'); $url= $payQrCodeUrl; $size=4; //图片大小 $errorCorrectionLevel = "Q"; // 容错级别:L、M、Q、H $matrixPointSize = "4"; // 点的大小:1到10 //实例化 $qr = new \QRcode(); //打开缓冲区 ob_start(); $res = $qr::png($url, false, $errorCorrectionLevel, $matrixPointSize); $qrcode = base64_encode(ob_get_contents()); //会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。 ob_end_clean(); $this->assign('qrcode',$qrcode); $this->assign('row', $row); $this->assign('data', $data); $this->assign('ids', $ids); // $this->assign('qrcode', $payQrCodeUrl); //下单 return $this->view->fetch(); } /** * 支付 */ public function pay($ids = null) { $row = $this->model->get($ids); $this->assign('row', $row); $this->assign('ids', $ids); //下单 return $this->view->fetch(); } public function get_order_status($orders = null) { $orderModel = new Order(); $order = $orderModel->where("order_no","=",$orders)->find(); if(!$order){ $result = ['code' => 1,'msg'=>'参数错误','status'=>500]; return json($result); } if($order['pay_status'] == 1){ $result = ['code' => 1,'msg'=>'支付成功','status'=>100]; return json($result); }else{ $result = ['code' => 1,'msg'=>'等待支付','status'=>200]; return json($result); } } public function complate(){ // 创建 EasyWeChat 实例 $payment = config('payment'); $app = Factory::payment($payment); // 处理支付回调通知 $response = $app->handlePaidNotify(function ($message, $fail) { // 处理订单支付状态更新等业务逻辑 // 用户是否支付成功 if ($message['result_code'] === 'SUCCESS') { $extra['transaction_id'] = // 获取订单信息 $order_no = $message['out_trade_no']; // 假设订单号在回调通知中的字段名为 out_trade_no $total_free = $message['total_fee']; // 假设订单金额在回调通知中的字段名为 total_fee $orderModel = new Order(); $order = $orderModel->where("order_no","=",$order_no)->find(); if(!$order || $order['pay_status'] == 1){ return true; } $update = [ "pay_status" => 1, "pay_way" => 1, "pay_money" => round($total_free/100,2), "pay_time" => time(), "transaction_id" =>$message['transaction_id'], ]; $orderModel->where("id","=",$order['id'])->update($update); } // 返回 true 告诉 EasyWeChat 支付通知处理成功 return true; }); return $response; } }