userinfo = $_SESSION['onethink_home']['user_auth']; parent::__construct(); } public function test(){ $user = $this->userinfo; pp($user); die(); $ipa365 = new Ipa365Controller(); $result = $ipa365->pay_notify(array( 'trade_id' => "2222", 'order_id' => "SS_20190924170241aEYL" )); pp($result); die(); $userId = 1; $gameId = 1; $param['price'] = 0.01; $param['spend_ip'] = get_client_ip(); $param['sdk_version'] = '2'; $param['user_id'] = $userId; $param['game_id'] = $gameId; $param['order_id'] = $orderId; $param['apitype'] = "alipay"; $param['config'] = "alipay"; $param['signtype']= "MD5"; $param['server'] = "alipay.wap.create.direct.pay.by.user"; $param['payway'] = 1; $param['title'] = $price; $param['body'] = $price; $param['callback'] = "http://www.baidu.com"; $param['notifyurl'] = "https://api.jianghuifa.cn/callback.php/Notify/sq_callback"; $ret = $this->alipay($param); redirect($ret['url']); die; /* $ipa365 = new Ipa365(); $list = $ipa365->ticketList(array( 'token' => 'Ido9idMgbZlJHMQxjSgTHWZMB00PFEus', 'limit' => 1, )); pp($list['data']['list'][0]); */ // 授予udid下载权限并获取下载地址 $ret = $ipa365->udidRequest(array( 'token' => 'Ido9idMgbZlJHMQxjSgTHWZMB00PFEus', 'udid' => 'a8eeac3335cef5ee117d357738598f691932513b', )); pp($ret); $ret = $ipa365->getinfo(array( 'token' => 'Ido9idMgbZlJHMQxjSgTHWZMB00PFEus', 'udid' => 'a8eeac3335cef5ee117d357738598f691932513b', )); pp($ret); } public function pay_notify_test() { die(); $this->pay_notify(array( 'order_id' => 'SS_20190924102317T2jO', 'game_id' => 1, )); } /** * 订单检查 */ public function pay_order_check() { $orderId = I('order_id'); $order = M('game_supersign', 'tab_')->where(array( 'order_id' => $orderId ))->find(); if (!$order) { echo "订单不存在!"; } if ($order['pay_status'] == 1) { redirect(U("Ipa365/install_show", [ 'game_id' => $order['game_id'], 'order_id' => $order['order_id'] ])); } echo "订单正在处理中.请稍后再试!"; exit(); } /* * 发起支付 */ public function pay() { $userId = $this->userinfo['user_id']; if (!$userId ) { $this->error("请登入", "/mobile.php/ssg/login"); } $gameId = I("game_id", 0); $price = self::signprice; if (!$userId || !$gameId) { $this->error("参数有误!"); } $payLog = M('game_supersign', 'tab_')->where(array( 'user_id' => $userId, 'game_id' => $gameId ))->find(); $gameInfo = M('game', 'tab_')->field('game_name,supersign_token')->where(array( 'id' => $gameId, ))->find(); if ($payLog && $payLog['pay_status']==0) { $orderId = $payLog['order_id']; }elseif ($payLog && $payLog['pay_status']==1){ $orderId = $payLog['order_id']; if(stripos($_SERVER['HTTP_HOST'], '.jianghuifa.cn') || $_SERVER['HTTP_HOST']=='127.0.0.1' || stripos($_SERVER['HTTP_HOST'], '.free.idcfengye.com')){ redirect("http://".$_SERVER['HTTP_HOST']."/sdk.php/Ipa365/install_show/user_id/$userId/game_id/$gameId/order_id/$orderId"); }else{ redirect("https://".$_SERVER['HTTP_HOST']."/sdk.php/Ipa365/install_show/user_id/$userId/game_id/$gameId/order_id/$orderId"); } $this->error("亲~您已购买过了~请到【订单查询】查看订单信息哟~"); } else { $orderId = "SS_" . date('Ymd') . date('His') . sp_random_string(4); // 超级签 if (!$gameInfo['supersign_token']) { $this->error("超级签token未填写!"); } $r = M('game_supersign', 'tab_')->add(array( 'udid' => '', 'user_id' => $userId, 'game_id' => $gameId, 'order_id' => $orderId, 'pay_price' => $price, 'pay_status' => 0, 'ticket' => '', // 调用安装的时候分配 'token' => $gameInfo['supersign_token'], 'create_time' => time() )); if (!$r) return -1; } $param['price'] = $price; $param['sdk_version'] = '2'; $param['user_id'] = $userId; $param['game_id'] = $gameId; $param['order_id'] = $orderId; $param['apitype'] = "alipay"; $param['config'] = "alipay"; $param['signtype']= "MD5"; $param['server'] = "alipay.wap.create.direct.pay.by.user"; $param['payway'] = 1; $param['title'] = $price; $param['body'] = $price; if(stripos($_SERVER['HTTP_HOST'], '.jianghuifa.cn') || $_SERVER['HTTP_HOST']=='127.0.0.1' || stripos($_SERVER['HTTP_HOST'], '.free.idcfengye.com')){ $param['callback'] = "http://".$_SERVER['HTTP_HOST']."/sdk.php/Ipa365/install_show/user_id/{$userId}/game_id/{$gameId}/order_id/{$orderId}"; $param['notifyurl'] = "http://".$_SERVER['HTTP_HOST']."/callback.php/Notify/notify/apitype/alipay"; }else{ $param['callback'] = "https://".$_SERVER['HTTP_HOST']."/sdk.php/Ipa365/install_show/user_id/{$userId}/game_id/{$gameId}/order_id/{$orderId}"; $param['notifyurl'] = "https://".$_SERVER['HTTP_HOST']."/callback.php/Notify/notify/apitype/alipay"; } $ret = $this->alipay($param); $this->assign("url", $ret['url']); $weixn = new Weixin(); $wx_pay = json_decode($weixn->weixin_pay('超级签消费', $orderId, $price, 'MWEB', 4), true); $this->assign("wxurl", $wx_pay['mweb_url']); $this->assign("price", self::signprice); $this->assign("order_id", $orderId); $this->assign("game_name",$gameInfo['game_name']); $this->assign("callback",$param['callback']); $this->display(); } // 微信分享页面 public function paytip(){ $userId = $this->userinfo['user_id']; if (!$userId ) { $this->error("请登入", "/mobile.php/ssg/login"); } $orderId = I('order_id'); $payLog = M('game_supersign', 'tab_')->where(array( 'order_id' => $orderId, ))->find(); $this->assign('url', U('Ipa365/install', array( 'order_id' => $payLog['order_id'], 'user_id' => $payLog['user_id'], 'game_id' => $payLog['game_id'], ))); $price = $payLog['pay_price']; $userId = $payLog['user_id']; $gameId = $payLog['game_id']; $param['price'] = $price; $param['sdk_version'] = '2'; $param['user_id'] = $userId; $param['game_id'] = $gameId; $param['order_id'] = $orderId; $param['apitype'] = "alipay"; $param['config'] = "alipay"; $param['signtype']= "MD5"; $param['server'] = "alipay.wap.create.direct.pay.by.user"; $param['payway'] = 1; $param['title'] = $price; $param['body'] = $price; $param['callback'] = "https://".$_SERVER['HTTP_HOST']."/sdk.php/Ipa365/install_show/user_id/{$userId}/game_id/{$gameId}/order_id/{$orderId}"; $param['notifyurl'] = "https://".$_SERVER['HTTP_HOST']."/callback.php/Notify/notify/apitype/alipay"; $ret = $this->alipay($param); $this->assign("url", $ret['url']); $weixn = new Weixin(); $wx_pay = json_decode($weixn->weixin_pay('超级签消费', $orderId, $price, 'MWEB', 4), true); $this->assign("wxurl", $wx_pay['mweb_url']); $this->assign("price", $price); $this->assign("order_id", $payLog['order_id']); $this->assign("game_id", $payLog['game_id']); //$this->assign("jump_url",$jump_url); $this->display(); } /** * 下载页面 判断订单是否支付成功 */ public function install_show() { $orderId = I('order_id', 0); $gameId = I('game_id', 0); /* $userId = I('user_id', 0); $user = M('user', 'tab_')->where(array( 'id' => $userId ))->find(); */ $userId = $this->userinfo['user_id']; if (!$userId ) { $this->error("请登入", "/mobile.php/ssg/login"); } // $userId = $_SESSION['user_id']; if (!$userId ) { $this->error("请登入", "/mobile.php/ssg/login"); } if (!$orderId || !$gameId || !$userId) { $this->error("参数校验失败,请重试"); } $supersign = M('game_supersign', 'tab_')->where(array('order_id' => $orderId,"game_id"=>$gameId))->find(); if (!$supersign) { $this->error("订单不存在"); } if ($supersign['pay_status'] != 1) { $this->error("订单未支付"); } $game = M('game', 'tab_')->where(array('id' => $gameId))->find(); $this->assign('game', $game); $this->assign('url', U('Ipa365/install', array( 'order_id' => $orderId, 'user_id' => $userId, 'game_id' => $gameId ))); //获取礼包码 $giftbag = M('giftbag', 'tab_')->field("*")->where(array("game_id"=>$gameId,"giftbag_version"=>3))->find(); if(empty($giftbag)){ $giftbag = false; }else{ $desribe = $giftbag['desribe']; $mygif = $this->checkAccountGiftExist($userId,$giftbag['id']); if(!empty($mygif)){ //已经领取 $giftbag =$mygif; }else{ if($giftbag['novice_num']>0){ //领取 $giftbag = $this->getNovice($userId,$this->userinfo['account'],$giftbag['id']); } } $giftbag['desribe'] = $desribe; } //验证是否领取 $this->assign('giftbag', $giftbag); $this->display(); } /** * 获取用户安装历史url */ public function get_install_list() { /* $gameId = I('game_id', 0); $where = array( 'pay_status' => 1, 'ticket' => array('neq', '') ); if ($id) $where['game_id'] = $gameId; $list = M('game_supersign', 'tab_')->where($where)->select(); // pp($list); $url = $game['supersign_url']."?code={$code}"; pp($url); redirect($url); */ } /** * 用户点击安装 */ public function install() { $userId = $this->userinfo['user_id']; if (!$userId ) { $this->error("请登入", "/mobile.php/ssg/login"); } $gameId = I('game_id', 0); $orderId = I('order_id', 0); if (!$userId || !$gameId || !$orderId) { $this->error("参数有误!"); } M()->startTrans(); // 获取支付记录 $gamesign = M('game_supersign', 'tab_')->where(array( 'order_id' => $orderId, 'user_id' => $userId, 'game_id' => $gameId, 'pay_status' => 1, ))->find(); if (!$gamesign) { // pp(M('game_supersign', 'tab_')->_sql()); $this->error("支付记录不存在"); } if ($gamesign['url']) { redirect($gamesign['url']); } $token = $gamesign['token']; $ipa365 = new Ipa365(); $i = 1; while (1) { // 获取授权码 $list = $ipa365->ticketList(array( 'token' => $token, 'limit' => $i, )); // @todo: 并发授权码已分配的情况 $code = $list['data']['list'][$i-1]['code']; $codeExists = M('game_supersign', 'tab_')->field('id')->where(array( 'ticket' => $code, ))->find(); if (!$codeExists) { break; } $i ++; } $game = M('game', 'tab_')->where(array( 'id' => $gameId, ))->find(); $url = $game['supersign_url']."?code={$code}"; $r = M('game_supersign', 'tab_')->where(array( 'user_id' => $userId, 'game_id' => $gameId, 'pay_status' => 1 ))->save(array( 'ticket' => $code, // 调用安装的时候分配 'url' => $url, )); if (!$r) { pp(M('game_supersign', 'tab_')->_sql()); M()->rollback(); return -1; } M()->commit(); // 调用第三方连接 // pp($url); redirect($url); } /* * 打包列表 */ public function pay_list() { $userId = $this->userinfo['user_id']; if (!$userId ) { $this->error("请登入", "/mobile.php/ssg/login"); } $list = M('game_supersion', 'tab_')->where(array( 'user_id' => $userId, ))->select(); $this->assign("list", $list); $this->display(); } // alipay public function alipay($param) { $pay = new \Think\Pay($param['apitype'],C($param['config'])); $vo = new \Think\Pay\PayVo(); $vo->setBody("超级签消费") ->setFee($param['price'])//支付金额 ->setTitle($param['title']) ->setOrderNo($param['order_id']) ->setService($param['server']) ->setSignType($param['signtype']) ->setPayMethod("wap") ->setTable("supersign") ->setPayWay($param['payway']) ->setCallback($param['callback']) ->setNotifyUrl($param['notifyurl']) ->setGameName(get_game_name($param['game_id'])) ->setServerId(0) ->setUserId($param['user_id']) ->setSdkVersion($param['sdk_version']); $pay_['url']= $pay->buildRequestForm($vo); //$pay_['out_trade_no']= $out_trade_no; return $pay_; } //领取礼包码 public function getNovice($user_id,$account,$gift_id){ $data =M("giftbag",'tab_')->find($gift_id); $novice_str = $data['novice']; $novice_arr = str2arr($novice_str,","); if (empty($novice_arr)){ return ""; } $novice_arr = array_filter($novice_arr); $novice = array_pop($novice_arr); $data['novice_num'] = count($novice_arr); $data['novice'] = arr2str($novice_arr,","); M("giftbag",'tab_')->startTrans(); $novice_result = M("giftbag",'tab_')->save($data); if(!empty($novice)){ //记录领取 $record['game_id'] = $data['game_id']; $record['game_name'] = $data['game_name'];//get_game_name($data['game_id']); $record['gift_id'] = $gift_id; $record['gift_name'] = $data['giftbag_name']; $record['status'] = 0; $record['novice'] = $novice; $record['user_id'] = $user_id; $record['user_account'] = $account; $record['create_time'] = time(); $record['start_time'] = $data['start_time']; $record['end_time'] = $data['end_time']; $record_result = M("gift_record",'tab_')->add($record); }else{ $novice_result = false; } if($novice_result === false || $record_result === false){ M("giftbag",'tab_')->rollback(); return ""; }else{ M("giftbag",'tab_')->commit(); return $record; } } public function checkAccountGiftExist($user_id,$gift_id){ $map['user_id'] = $user_id; $map['gift_id'] = $gift_id; return M("gift_record",'tab_')->field('*')->where($map)->find(); } }