atmosferaService = $atmosferaService; } /** * 获取玩家余额 * * @param Request $request * @return \Illuminate\Http\JsonResponse * * 请求参数: * - user_id (string): 玩家ID,必须是先前传递给create_user_ex方法的值 * - merchant_id (integer): 商户ID * - session_id (string, 可选): 会话ID * * 调用示例: * { * "user_id": "123654", * "merchant_id": 1, * "session_id": "session123" * } */ public function getBalance(Request $request) { $post = $request->post(); if(!$this->atmosferaService->checkSignature($post)){ return response()->json(['result' => false,'err_code' => 1]); } // $data = json_decode($post['data'],true); $data = $post['data']; $AccountsInfoModel = new AccountsInfo(); // 用户余额 $score = $AccountsInfoModel->Score($data['user_id']); $response = ['result' => true,'err_code' => 0,'amount' => $score/100,'currency' => env('CONFIG_24680_CURRENCY')]; return response()->json($response); } /** * 获取玩家账户详情 * * @param Request $request * @return \Illuminate\Http\JsonResponse * * 请求参数: * - user_id (string): 玩家ID,必须是先前传递给create_user_ex方法的值 * - merchant_id (integer): 商户ID * - session_id (string, 可选): 会话ID * * 调用示例: * { * "user_id": "123654", * "merchant_id": 1, * "session_id": "session123" * } */ public function getAccountDetails(Request $request) { $post = $request->post(); if(!$this->atmosferaService->checkSignature($post)){ return response()->json(['result' => false,'err_code' => 1]); } //$data = json_decode($post['data'],true); $data = $post['data']; $userInfo = DB::table(TableName::QPAccountsDB() . 'AccountsInfo') ->where('UserID', $data['user_id']) ->first(); if(!$userInfo){ return response()->json(['result' => false,'err_code' => 3]); } $response = ['result' => true,'err_code' => 0,'user_name' => $userInfo->NickName]; return response()->json($response); } /** * 提现 * * @param Request $request * @return \Illuminate\Http\JsonResponse * * 请求参数: * - user_id (string): 玩家ID,必须是先前传递给create_user_ex方法的值 * - transaction_id (string): 在ATMOSFERA端的唯一事务标识 * - currency (string): 货币ISO代码 * - amount (numeric): 提现金额 * - bonus_amount (numeric): 从玩家的奖金账户中提现的金额 * - game_type (integer): 游戏标识符 * - game_id (string): 游戏回合标识符 * - merchant_id (integer): 商户ID * - session_id (string, 可选): 会话ID * - bonus_game (boolean): 如果为true,bonus_amount大于0且amount等于0 * - bet_data (array): 包含下注信息的JSON编码数组 * * 调用示例: * { * "user_id": "123654", * "transaction_id": "123456_0", * "currency": "EUR", * "amount": 0.25, * "bonus_amount": 0, * "game_type": 70, * "game_id": "1234", * "merchant_id": 1, * "session_id": "session123", * "bonus_game": false, * "bet_data": [ * {"bet_id": 123, "nominal": 0.15, "content": "{\"numbers\":[34],\"pos\":\"34\"}"}, * {"bet_id": 124, "nominal": 0.1, "content": "{\"numbers\":[33],\"pos\":\"33\"}"} * ] * } */ public function withdraw(Request $request) { $post = $request->post(); if(!$this->atmosferaService->checkSignature($post)){ return response()->json(['result' => false,'err_code' => 1]); } //$data = json_decode($post['data'],true); $data = $post['data']; $UserID = $data['user_id']; // GameCard::$enableStateCheck=false; // $gamecard=GameCard::where('gid',$post['game_bundle'])->first(); // $in_gameid = OuroGameService::getUserInGame($UserID); // if(!$gamecard){ // $gamecard="notfind :::: ".$post['game_bundle']; // Util::WriteLog('24680game', compact('in_gameid', 'gamecard', 'UserID')); // }else { // // if ($in_gameid != intval($gamecard->id)) { // Util::WriteLog('24680game', compact('in_gameid', 'gamecard', 'UserID')); //// die; // } // } $res = SetNXLock::getExclusiveLock('bet'.$data['transaction_id'], 86400); if (!$res) { Util::WriteLog('atmosfera_bet_error',$data); return response()->json( ['result' => false,'err_code' => 4]); } $AccountsInfoModel = new AccountsInfo(); // 用户余额 $score = intval($AccountsInfoModel->Score($UserID)); $bet = intval($data['amount']*NumConfig::NUM_VALUE); if($bet>$score){ return response()->json( ['result' => false,'err_code' => 5]); } DB::connection('write')->table('QPTreasureDB.dbo.GameScoreInfo')->where('UserID', $UserID)->decrement('Score', $bet); //用户cancel的时候 Redis::set('bet_amount_'.$data['transaction_id'],$bet); Redis::expire('bet_amount_'.$data['transaction_id'],120); PlatformService::platformBet('atmosfera',$data['game_type'],$bet,$UserID); $response = ['result' => true,'err_code' => 0,'balance' => ($score-$bet)/100,'bonus_balance' => 0,'operation_id' => $data['transaction_id']]; return response()->json($response); } /** * 存款 * * @param Request $request * @return \Illuminate\Http\JsonResponse * * 请求参数: * - user_id (string): 玩家ID,必须是先前传递给create_user_ex方法的值 * - transaction_id (string): 在ATMOSFERA端的唯一事务标识 * - currency (string): 货币ISO代码 * - amount (numeric): 存款金额 * - start_operation_id (string): 在withdraw方法中接收到的操作ID * - game_type (integer): 游戏标识符 * - game_id (string): 游戏回合标识符 * - game_data (string): 包含游戏结果信息的字符串或对象 * - merchant_id (integer): 商户ID * - session_id (string, 可选): 会话ID * - bonus_game (boolean): 如果为true,表示奖金游戏 * - bet_data (array): 包含下注信息的JSON编码数组 * * 调用示例: * { * "user_id": "123654", * "transaction_id": "123457_0", * "currency": "EUR", * "amount": 1, * "start_operation_id": "123", * "game_type": 70, * "game_id": "1234", * "game_data": "{\"balls\":[3],\"cards\":null}", * "merchant_id": 1, * "session_id": "session123", * "bonus_game": false, * "bet_data": [ * {"bet_id": 123, "win_amount": 1, "jp_amount": 0}, * {"bet_id": 124, "win_amount": 0, "jp_amount": 0} * ] * } */ public function deposit(Request $request) { $post = $request->post(); if(!$this->atmosferaService->checkSignature($post)){ return response()->json(['result' => false,'err_code' => 1]); } //$data = json_decode($post['data'],true); $data = $post['data']; $UserID = $data['user_id']; $AccountsInfoModel = new AccountsInfo(); // 用户余额 $score = intval($AccountsInfoModel->Score($UserID)); $res = SetNXLock::getExclusiveLock('win_'.$data['transaction_id'], 86400); if (!$res) { Util::WriteLog('atmosfera_win_error',$data); return response()->json(['result' => true,'err_code' => 0,'balance' => ($score)/100,'bonus_balance' => 0,'operation_id' => $data['transaction_id']]); } $win = intval($data['amount']*NumConfig::NUM_VALUE); $betKey = 'bet_amount_'.$data['start_operation_id']; $bet = Redis::get($betKey)?:0; if(true){ PlatformService::platformWin($UserID,'atmosfera',$data['game_type'],$win,$bet,$score+$win); } Redis::del($betKey); $response = ['result' => true,'err_code' => 0,'balance' => ($score+$win)/100,'bonus_balance' => 0,'operation_id' => $data['transaction_id']]; return response()->json($response); } /** * 回滚 * * @param Request $request * @return \Illuminate\Http\JsonResponse * * 请求参数: * - user_id (string): 玩家ID,必须是先前传递给create_user_ex方法的值 * - transaction_id (string): 需要回滚的提现事务的唯一标识符 * - merchant_id (integer): 商户ID * - session_id (string, 可选): 会话ID * - bonus_game (boolean): 如果为true,表示奖金游戏 * * 调用示例: * { * "user_id": "123654", * "transaction_id": "123457_0", * "merchant_id": 1, * "session_id": "session123", * "bonus_game": false * } */ public function rollback(Request $request) { $post = $request->post(); if(!$this->atmosferaService->checkSignature($post)){ return response()->json(['result' => false,'err_code' => 1]); } //$data = json_decode($post['data'],true); $data = $post['data']; $UserID = $data['user_id']; $AccountsInfoModel = new AccountsInfo(); // 用户余额 $score = intval($AccountsInfoModel->Score($UserID)); $bet=0; $key='bet_amount_'.$data['transaction_id']; if(Redis::exists($key)){ $bet=Redis::get($key); if($bet>0){ DB::connection('write')->table('QPTreasureDB.dbo.GameScoreInfo')->where('UserID', $UserID)->increment('Score', $bet); PlatformService::platformBet('atmosfera','',-$bet,$UserID); Redis::del('bet_amount_'.$data['transaction_id']); } } $score+=$bet; $response = ['result' => true,'err_code' => 0,'balance' => ($score)/100,'bonus_balance' => 0]; return response()->json($response); } public function gameList() { $response = $this->atmosferaService->getGamesList(); return response()->json($response); } public function token(Request $request) { $uid=$request->input('uid'); $response = $this->atmosferaService->registerTokenEx($uid,0,'session123'); return response()->json($response); } public function checkUser(Request $request) { $uid=$request->input('uid'); $response = $this->atmosferaService->checkUserEx($uid); return response()->json($response); } public function gameLunch(Request $request) { $gid=$request->input('gid'); $level=$request->input('level',1); $user = $request->user(); $userid=$user->UserID; $response = $this->atmosferaService->checkUserEx($userid); if($response['result'] == false && $response['err_code'] == 20){ $rs = $this->atmosferaService->createUserEx($userid,0); if($rs['result'] == false && $rs['err_code'] != 21){ echo ""; exit(); } } $token = $this->atmosferaService->registerTokenEx($userid); if($token['result'] == false){ echo ""; exit(); } // GameCard::$enableStateCheck=false; // $gamecard=GameCard::where('gid',$gid)->first(); // // $in_gameid=OuroGameService::getUserInGame($userid,$user->GlobalUID); // if($in_gameid!=intval($gamecard->id)){ // Util::WriteLog('24680game',compact('in_gameid','gamecard','user')); //// die; // } $lang=GlobalUserInfo::getLocale(); $clientLang='en'; if($lang=='pt')$clientLang='pt'; else if($lang=='es')$clientLang='pt'; else if($lang=='ru')$clientLang='ru'; else if($lang=='tr')$clientLang='tr'; else $clientLang='en';; $links = [ 'atmosfera_auto' => 'https://game.atmob2b.net/24680/roulette_auto', // 'atmosfera_black' => ['https://game.atmob2b.net/24680/blackjack_a','https://game.atmob2b.net/24680/blackjack_b','https://game.atmob2b.net/24680/blackjack_c','https://game.atmob2b.net/24680/blackjack_d','https://game.atmob2b.net/24680/blackjack_e'][random_int(0,4)], 'atmosfera_black' => 'https://game.atmob2b.net/24680/blackjack_e', 'atmosfera_black_a' => 'https://game.atmob2b.net/24680/blackjack_a', 'atmosfera_black_b' => 'https://game.atmob2b.net/24680/blackjack_b', 'atmosfera_black_c' => 'https://game.atmob2b.net/24680/blackjack_c', 'atmosfera_black_d' => 'https://game.atmob2b.net/24680/blackjack_d', 'atmosfera_black_e' => 'https://game.atmob2b.net/24680/blackjack_e', 'atmosfera_cock' => 'https://game.atmob2b.net/24680/roulette_cocktail', 'atmosfera_live' => 'https://game.atmob2b.net/24680/roulette_eng', 'atmosfera_keno' => 'https://game.atmob2b.net/24680/keno', 'atmosfera_music' => 'https://game.atmob2b.net/24680/musicwheel', ]; // $links = [ // 'atmosfera_auto' => 'https://game.igramba.com/24680/roulette_auto', // 'atmosfera_black' => 'https://game.igramba.com/24680/roulette_auto', // 'atmosfera_cock' => 'https://game.igramba.com/24680/roulette_cocktail', // 'atmosfera_live' => 'https://game.igramba.com/24680/roulette_eng', // 'atmosfera_keno' => 'https://game.igramba.com/24680/keno', // 'atmosfera_music' => 'https://game.igramba.com/24680/musicwheel', // ]; $url = ($links[$gid]?:'https://game.igramba.com/24680/roulette_auto')."?lang=$clientLang&token={$token['token']}"; echo ""; exit(); } }