where($map)->find(); if($pro['second_pwd']===$this->think_ucenter_md5($_REQUEST['pwd'],UC_AUTH_KEY)){ $this->ajaxReturn(array("status"=>1,"msg"=>"成功")); } else{ $this->ajaxReturn(array("status"=>0,"msg"=>"二级密码错误")); } } public function checkSecond(){ $pid=session("promote_auth.pid"); $map['id']=$pid; $data=M('promote','tab_')->where($map)->find(); if(empty($data['second_pwd'])){ $this->ajaxReturn(array("status"=>0)); } } public function checkAccount(){ $game_id = $_POST['game_id']; $user_account = $_POST['user_account']; $map['game_id'] = $game_id; $map['user_account'] = $user_account; $map["promote_id"] = session("promote_auth.pid"); $data = M("UserPlay","tab_")->where($map)->find(); if(empty($data)){ $this->ajaxReturn(array("status"=>0)); }else{ $this->ajaxReturn(array("status"=>1)); } } public function think_ucenter_md5($str, $key = 'ThinkUCenter'){ return '' === $str ? '' : md5(sha1($str) . $key); } public function agent_pay($p=0) { if (IS_POST) { $game_id = I('game_id'); $game_name = I('game_name'); if(empty($game_name)){ $map['game_id'] = $game_id; $game_name = M('Apply','tab_')->field('game_name')->where($map)->find(); $game_name = $game_name['game_name']; } $account = I('user_account'); $amount = I('amount'); if(!is_numeric($amount)){ $res_msg = '充值金额不是数字'; $this->show_agent($p); echo "; return false;"; $this->redirect('agent_pay', array('status'=>1), 3, ''); } if($amount<0) { $res_msg = '充值金额不正确'; $this->show_agent($p); echo "; return false;"; $this->redirect('agent_pay', array('status'=>1), 3, ''); } $amount = abs($amount); //$amount = 0.01; if(empty(I('pay_type'))) { $res_msg = '请选择充值方式'; $this->show_agent($p); echo "; return false;"; $this->redirect('agent_pay', array('status'=>1), 3, ''); } $game_appid = $_POST['game_appid']; $map_pw['status'] = 1; $map_pw['game_id'] = $game_id; $map_pw['promote_id'] = PID; $map_pw['recharge_status'] = 1; $discount_data = D('PromoteWelfare')->field("promote_discount,game_discount")->where($map_pw)->find(); //如果推广折扣不存在就查找找游戏统一折扣 if(empty($discount_data)){ $discount_data['promote_discount'] = M('Game','tab_')->where('id='.$game_id)->getField('discount'); } $discount = empty($discount_data['promote_discount'])?10:$discount_data['promote_discount']; $real_amount = $discount==0?$amount :$amount* $discount / 10;//计算折扣后的价格 //$real_amount = 0.01; $promote = M('Promote', 'tab_')->where(array('id' => PID))->find(); $order_no = "AG_" . date('Ymd') . date('His') . sp_random_string(4); $create['zhekou'] = $discount; $create['pay_order_number'] = $order_no; $create['game_id'] = $game_id; $create['game_appid'] = $game_appid; $create['game_name'] = $game_name; $create['amount'] = $amount; $create['real_amount'] = $real_amount; $user = get_user_entity($account, true); //页面上通过表单选择在线支付类型,支付宝为alipay 财付通为tenpay $vo = new \Think\Pay\PayVo(); $vo->setBody("会长代充") ->setFee($real_amount)//支付金额 ->setTitle("平台币") ->setOrderNo($order_no) ->setSignType("MD5") ->setPayMethod("direct_dc") ->setTable("agent") ->setGameId($game_id) ->setGameName($game_name) ->setGameAppid($game_appid) ->setUserId($user['id']) ->setAccount($user['account']) ->setUserNickName($user['nickname']) ->setPromoteId(session("promote_auth.pid")) ->setPromoteName(session('promote_auth.account')) ->setMoney($amount) ->setParam($discount); switch (I('pay_type')) { case 'swiftpass': //判断是否开启微信充值 if (pay_set_status('wei_xin') == 0 && pay_set_status('weixin') == 0) { $this->error("网站未开启微信充值", '', 1); exit(); } if (get_wx_type() == 0) { $weixn = new Weixin(); $is_pay = json_decode($weixn->weixin_pay("平台币充值", $order_no, $real_amount), true); if ($is_pay['status'] === 1) { $json_['out_trade_no'] = $order_no; $json_['amount'] = $amount; $json_['pay_money'] = $real_amount; $json_['code_img_url'] = U('qrcode', array('level' => 3, 'size' => 4, 'url' => base64_encode(base64_encode($is_pay['url'])))); } $create['pay_way'] = 2; $this->add_agent($user, $create); $this->show_agent($p); echo ""; } else { $vo->setService("pay.weixin.native") ->setPayWay(2); $pay = new \Think\Pay('swiftpass', C('weixin')); $all = $pay->buildRequestForm($vo); $all['amount'] = $vo->getMoney(); $this->show_agent($p); echo ""; } break; case 'jft': $sign=think_encrypt(md5($real_amount.$order_no)); $create['pay_way'] = 5; file_put_contents("./Application/Home/OrderNo/".$order_no.'.txt',json_encode($create)); redirect(U('pay_way', array('type'=>'UnionPay','account' =>$user['account'],'pay_amount'=>$real_amount,'sign'=>$sign,'pay_order_number'=>$order_no))); break; case 'goldpig': $sign=think_encrypt(md5($real_amount.$order_no)); $create['pay_way'] = 8; file_put_contents("./Application/Home/OrderNo/".$order_no.'.txt',json_encode($create)); $this->add_agent($user, $create); redirect(U('goldpig_pay',array('account' =>$user['account'],'pay_amount'=>$real_amount,'sign'=>$sign,'pay_order_number'=>$order_no))); break; case 'pingtaibi': $model = new Model(); $model->startTrans(); $create['pay_way'] = 4; $res = false; if($real_amount > $promote['balance_coin']){ $res_msg = '余额不足'; }else{ //修改渠道平台币 $promote['balance_coin'] -= $real_amount; $p_res = M('promote','tab_')->save($promote); $this->add_agent($user, $create); $res = $this->set_agent($create);//修改用户平台币 } if($res && $p_res){ $model->commit(); $res_msg = empty($res_msg) ? '充值成功' : $res_msg; }else{ $model->rollback(); } $this->show_agent($p); $url = U('Charge/agent_pay_list'); echo ""; break; default: //判断是否开启支付宝充值 if (pay_set_status('alipay') == 0) { $this->error("网站未开启支付宝充值", '', 1); exit(); } $vo->setService("create_direct_pay_by_user") ->setPayWay(1); $pay = new \Think\Pay('alipay', C('alipay')); echo $pay->buildRequestForm($vo); break; } } else { $this->show_agent($p); } } public function agent_pay_action() { if (IS_POST) { SafeFilter($_POST); $game_id = I('game_id'); $game_name = I('game_name'); $p = I('p'); if(empty($game_name)){ $map['game_id'] = $game_id; $game_name = M('Apply','tab_')->field('game_name')->where($map)->find(); $game_name = $game_name['game_name']; } $account = I('user_account'); $amount = I('amount'); if(!is_numeric($amount)){ $this->ajaxReturn(['status'=>0,'info'=>'充值金额不是数字','time'=>1000]); } if($amount <0){ $this->ajaxReturn(['status'=>0,'info'=>'充值金额错误','time'=>1000]); } //$amount = 0.01; $game_appid = $_POST['game_appid']; $map_pw['status'] = 1; $map_pw['game_id'] = $game_id; $map_pw['promote_id'] = PID; $map_pw['recharge_status'] = 1; $discount_data = D('PromoteWelfare')->field("promote_discount,game_discount")->where($map_pw)->find(); //如果推广折扣不存在就查找找游戏统一折扣 if(empty($discount_data)){ $discount_data['promote_discount'] = M('Game','tab_')->where('id='.$game_id)->getField('discount'); } $discount = empty($discount_data['promote_discount'])?10:$discount_data['promote_discount']; $real_amount = $discount==0?$amount :$amount* $discount / 10;//计算折扣后的价格 $promote = M('Promote', 'tab_')->where(array('id' => PID))->find(); $order_no = "AG_" . date('Ymd') . date('His') . sp_random_string(4); $create['zhekou'] = $discount; $create['pay_order_number'] = $order_no; $create['game_id'] = $game_id; $create['game_appid'] = $game_appid; $create['game_name'] = $game_name; $create['amount'] = $amount; $create['real_amount'] = $real_amount; $user = get_user_entity($account, true); //页面上通过表单选择在线支付类型,支付宝为alipay 财付通为tenpay $vo = new \Think\Pay\PayVo(); $vo->setBody("会长代充") ->setFee($real_amount)//支付金额 ->setTitle("平台币") ->setOrderNo($order_no) ->setSignType("MD5") ->setPayMethod("direct") ->setTable("agent") ->setGameId($game_id) ->setGameName($game_name) ->setGameAppid($game_appid) ->setUserId($user['id']) ->setAccount($user['account']) ->setUserNickName($user['nickname']) ->setPromoteId(session("promote_auth.pid")) ->setPromoteName(session('promote_auth.account')) ->setMoney($amount) ->setParam($discount); switch (I('pay_type')) { case 'swiftpass': //判断是否开启微信充值 if (pay_set_status('wei_xin') == 0 && pay_set_status('weixin') == 0) { $this->ajaxReturn(['status'=>0,'info'=>'网站未开启微信充值']); exit(); } if (get_wx_type() == 0) { $weixn = new Weixin(); $is_pay = json_decode($weixn->weixin_pay("平台币充值", $order_no, $real_amount), true); if ($is_pay['status'] === 1) { $json_['out_trade_no'] = $order_no; $json_['amount'] = $amount; $json_['pay_money'] = $real_amount; $json_['code_img_url'] = U('qrcode', array('level' => 3, 'size' => 4, 'url' => base64_encode(base64_encode($is_pay['url'])))); } $create['pay_way'] = 2; $this->add_agent($user, $create); $data = $json_; } else { $vo->setService("pay.weixin.native") ->setPayWay(2); $pay = new \Think\Pay('swiftpass', C('weixin')); $all = $pay->buildRequestForm($vo); $all['amount'] = $vo->getMoney(); $data = $all; } $this->ajaxReturn(['status'=>1,'info'=>'','data'=>$data]); break; default: //判断是否开启支付宝充值 if (pay_set_status('alipay') == 0) { $this->ajaxReturn(['status'=>0,'info'=>'网站未开启支付宝充值']); exit(); } $vo->setService("create_direct_pay_by_user") ->setPayWay(1); $pay = new \Think\Pay('alipay', C('alipay')); $url = $pay->buildRequestForm($vo); $this->ajaxReturn(['status'=>1,'info'=>'','url'=>$url]); break; } } else { $this->ajaxReturn(['status'=>0,'info'=>'请求失败']); } } /** * 金猪支付 * @return [type] [description] * @author cb <[email address]> */ public function goldpig_pay(){ if(IS_POST){ $msign=think_encrypt(md5($_POST['amount'].$_POST['pay_order_number'])); if($msign!==$_POST['sign']){ $this->error('验证失败',U('Recharge/pay'));exit; } if($_POST['amount']<=0){ $this->error('金额有误'); } $user = get_user_entity($_POST['UserName'],true); if (empty($user)) { $this->error("账号不存在"); exit(); } $url="./Application/Home/OrderNo/".$_POST['pay_order_number'].'.txt'; if(!file_exists($url) ){ $this->error('未知错误',U('Charge/agent_pay'));exit; } $goldpig=new GoldPig(); $url = $goldpig->GoldPig($user['account'],$_POST['amount'],$_POST["PayID"],$_POST["pay_order_number"],$_POST["ka_type"],$_POST["mobile"],$_POST["password"]); if($url['status']==1){ redirect($url['msg']); }else{ $this->error('失败',U('Charge/agent_pay')); } }else{ $this->display(); } } /** * */ public function checkOrder($order_number){ $map['pay_order_number'] = $order_number; $data = M('Agent','tab_') ->where($map) ->field('pay_status') ->find(); if ($data['pay_status'] == 1){ $this->success('支付成功'); }else{ $this->error('暂未支付'); } } //竣付通 public function pay_way(){ if(IS_POST){ $msign=think_encrypt(md5($_POST['pay_amount'].$_POST['pay_order_number'])); if($msign!==$_POST['sign']){ $this->error('验证失败',U('Recharge/pay'));exit; } #判断账号是否存在 $user = get_user_entity($_POST['account'], true); $jtpay=new Jtpay(); #平台币记录数据 $data['pay_order_number'] = $_POST['pay_order_number']; $data['user_id'] = $user['id']; $data['user_account'] = $user['account']; $data['user_nickname'] = $user['nickname']; $data['promote_id'] = $user['promote_id']; $data['promote_account'] = $user['promote_account']; $data['fee'] = $_POST['pay_amount']; $data['pay_way'] = 6;//竣付通 $data['pay_source'] = 1; $url="./Application/Home/OrderNo/".$_POST['pay_order_number'].'.txt'; if(!file_exists($url) ){ $this->error('未知错误',U('Charge/agent_pay'));exit; } $create=json_decode(file_get_contents($url),true) ; @unlink($url); $this->add_agent($user, $create); //$_POST['pay_amount']=0.01; $returnurl = "http://".$_SERVER['HTTP_HOST']."/callback.php/Notify/jft_callback/model/Home"; switch ($_POST['type']) { case 'UnionPay': echo $jtpay->jt_pay($_POST['pay_order_number'],$_POST['pay_amount'],$_POST['account'],get_client_ip(),$_POST['p10_paychannelnum'],1,$url); break; default: echo $jtpay->jt_pay($_POST['pay_order_number'],$_POST['pay_amount'],$_POST['account'],get_client_ip(),"",$_POST['p9_paymethod'],$returnurl); break; } }else{ $this->assign('type',$_GET['type']); $this->display(); } } public function UnionPay(){ $this->display(); } public function show_agent($p){ $this->meta_title = "会长代充"; $pro = M('Promote', 'tab_')->where(array('id' => PID))->find(); $child = M('Promote','tab_')->field('account,balance_coin')->where(['parent_id'=>PID])->select(); $page = $p ? $p : 1; //默认显示第一页数据 $row = 10; $count = count($child); $arraypage = $page; $size=$row;//每页显示的记录数 $pnum = ceil($count / $row); //总页数,ceil()函数用于求大于数字的最小整数 //用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度) $data = array_slice($child, ($arraypage-1)*$row, $row); //分页 if($count > $row){ $page = new \Think\Page($count, $row); $page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%'); $this->assign('_page', $page->show()); } $this->assign("childData",$data); $this->assign('pro', $pro); $this->display(); } public function agent_pay_list($p=0){ $map=array(); if($_REQUEST['user_account']=='%'){ $map['user_account']=array('like','%\\'.$_REQUEST['user_account'].'%'); unset($_REQUEST['user_account']); }elseif($_REQUEST['user_account']==0){ $map['user_account']=array('like','%'.$_REQUEST['user_account'].'%'); unset($_REQUEST['user_account']); }elseif(isset($_REQUEST['user_account'])&&trim($_REQUEST['user_account'])){ $map['user_account']=array('like','%'.$_REQUEST['user_account'].'%'); unset($_REQUEST['user_account']); } if($_REQUEST['game_id']>0){ $map['game_id']=$_REQUEST['game_id']; } $start_time = strtotime(I('time_start')); $end_time = strtotime(I('time_end')); if(!empty($start_time)&&!empty($end_time)){ $map['create_time'] = ['BETWEEN',[$start_time,$end_time+24*60*60-1]]; unset($_REQUEST['time_start']);unset($_REQUEST['time_end']); }else if(!empty($start_time)){ $map['create_time'] = array('gt',$start_time); }else if(!empty($end_time)){ $map['create_time'] = array('lt',$end_time+24*60*60-1); } $map['promote_id']=get_pid(); $total = M("agent","tab_")->where(array('pay_status'=>1))->where($map)->sum('amount'); $this->assign("total_amount",$total==null?0:$total); $this->lists('agent',$p,$map); } /** *添加代充记录 */ private function add_agent($user,$data){ $agent = M("agent","tab_"); $agnet_data['order_number'] = ""; $agnet_data['pay_order_number'] = $data['pay_order_number']; $agnet_data['game_id'] = $data['game_id']; $agnet_data['game_appid'] = $data['game_appid']; $agnet_data['game_name'] = $data['game_name']; $agnet_data['promote_id'] = session('promote_auth.pid'); $agnet_data['promote_account'] = session('promote_auth.account'); $agnet_data['user_id'] = $user['id']; $agnet_data['user_account'] = $user['account']; $agnet_data['user_nickname'] = $user['nickname']; $agnet_data['pay_type'] = 0;//代充 转移 $agnet_data['amount'] = $data['amount']; $agnet_data['real_amount'] = $data['real_amount']; $agnet_data['pay_status'] = 0; $agnet_data['pay_way'] = $data['pay_way']; $agnet_data['create_time'] = time(); $agnet_data['zhekou'] = $data['zhekou']; $agent->create($agnet_data); $result = $agent->add(); return $result; } /** * @param int $level * @param int $size */ public function qrcode($level=3,$size=4,$url=""){ Vendor('phpqrcode.phpqrcode'); $errorCorrectionLevel =intval($level) ;//容错级别 $matrixPointSize = intval($size);//生成图片大小 //生成二维码图片 ob_clean(); $object = new \QRcode(); echo $object->png(base64_decode(base64_decode($url)), false, $errorCorrectionLevel, $matrixPointSize, 2); } //获取折扣 public function get_discount($game_id){ $discount = D('PromoteWelfare')->get_discount($game_id); $res['status'] = 1; $res['discount'] = $discount; $this->ajaxReturn($res); } protected function set_agent($data){ $agent = M("agent","tab_"); $map['pay_order_number'] = $data['pay_order_number']; $d = $agent->where($map)->find(); if(empty($d)){return false;} if($d['pay_status'] == 0){ $data_save['pay_status'] = 1; $data_save['order_number'] = $data['order_number']; $map_s['pay_order_number'] = $data['pay_order_number']; $r = $agent->where($map_s)->save($data_save); if($r!== false){ $user = M("user_play","tab_"); $map_play['user_id'] = $d['user_id']; $map_play['game_id'] = $d['game_id']; $user->where($map_play)->setInc("bind_balance",$d['amount']); //$user->where("id=".$d['user_id'])->secInt("cumulative",$d['pay_amount']); $pro_l=M('Promote','tab_')->where(array('id'=>$d['promote_id']))->setDec("pay_limit",$d['amount']); }else{ $this->record_logs("修改数据失败"); } return true; } else{ return true; } } public function get_user_play() { if(IS_POST) { $data = get_user_by_game(PID,I('game_id','')); $return=['status'=>1,'info'=>'','data'=>$data]; } else { $return=['status'=>0,'info'=>'暂无用户数据']; } $this->ajaxReturn($return); } }