From ec11709a865800290930df79077476c973824516 Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Sat, 15 Apr 2023 22:20:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D1=83=D1=81=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _incl_data/class/GameDealer.php | 261 -------------------------------- 1 file changed, 261 deletions(-) delete mode 100644 _incl_data/class/GameDealer.php diff --git a/_incl_data/class/GameDealer.php b/_incl_data/class/GameDealer.php deleted file mode 100644 index 476ce411..00000000 --- a/_incl_data/class/GameDealer.php +++ /dev/null @@ -1,261 +0,0 @@ - 'pay_operations', //Таблица в которую заносятся данные - 'db_host' => 'localhost', - 'db_user' => 'newcom1_abk', - 'db_pass' => '4nWYsIM[c?}P', - 'db_base' => 'newcom1_abk', /* Настройки платежей */ - 'ip_list' => ['127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'], //Указывать через запятую (Разрешенные IP) - 'key' => 'qtzl0igb', //gamedealer key - 'id' => '65643' //ID проекта - ], $BACK = []; //Результат который возвращаем в конце - - //Кодируем из ЮТФ-8 в Кирилицу - /** - * @param $text - * @return mixed - * @deprecated - */ - public function in($text) - { - return $text; - } - - //Кодируем из Кирилицу в ЮТФ-8 - - /** - * @param $text - * @return mixed - * @deprecated - */ - public function out($text) - { - return $text; - } - - //Добавляем данные в базу данных - public function add($type, $value, $money) - { - mysql_query('INSERT INTO `' . $this->c['db_name'] . '` (`time`,`type`,`ip`,`value`,`money`,`project`) VALUES ("' . time() . '","' . mysql_real_escape_string($type) . '","' . $_SERVER['HTTP_X_REAL_IP'] . '","' . mysql_real_escape_string($value) . '","' . mysql_real_escape_string($money) . '","' . mysql_real_escape_string($this->id) . '")'); - } - - //Подключаемся к базе данных - public function connect_db() - { - $db = mysql_connect($this->c['db_host'], $this->c['db_user'], $this->c['db_pass']) or die('Ошибка подключения к MySQL серверу!'); - mysql_select_db($this->c['db_base'], $db) or die('Ошибка подключения к базе данных!'); - mysql_query('SET NAMES utf8mb4'); - } - - public function output($a, $v = null) - { - $r = ''; - $i = 0; - while ($i < count($a)) { - $rn = ''; - $tb = ''; - if ($v != null) { - $rn = "\r\n"; - $tb = " "; - } - $r .= $rn . '<' . $a[$i][0] . '>'; - if (!is_array($a[$i][1])) { - $rn = ''; - $tb = ''; - $r .= $rn . $tb . ($this->out($a[$i][1])); - } else { - if ($i > 0) { - $r .= $rn; - } - $r .= $tb . ($this->output($a[$i][1], 1)); - } - $r .= $rn . ''; - $i++; - } - return $r; - } - - //Генерируем XML-файл - public function backInformation() - { - header('Content-Type: text/html/force-download'); - echo ''; - echo $this->output($this->BACK, 1); - } - - //Проверка существования персонажа - public function test_accaunt($nick) - { - $r = false; - $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `bank` WHERE `id` = "' . mysql_real_escape_string($nick) . '" LIMIT 1')); - if (isset($nick['id'])) { - $r = true; - } - return $r; - } - - //Получает счет в банке по логину - public function getBank($nick) - { - $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($nick) . '" LIMIT 1')); - $nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `bank` WHERE `uid` = "' . mysql_real_escape_string($nick['id']) . '" LIMIT 1')); - return $nick['id']; - } - - //Поиск логина - public function bank_user($nick) - { - $nick = mysql_fetch_array(mysql_query('SELECT `id`,`uid FROM `bank` WHERE `id` = "' . mysql_real_escape_string($nick) . '" LIMIT 1')); - $nick = mysql_fetch_array(mysql_query('SELECT `id`,`login` FROM `users` WHERE `login` = "' . mysql_real_escape_string($nick['uid']) . '" LIMIT 1')); - return $nick['login']; - } - - //Начинаем обработку запросов - public function start_session() - { - - $ip = ''; - $ip = $_SERVER['HTTP_X_REAL_IP']; - - //Подключаемся к БД - $this->connect_db(); - - //Получаем данные запроса - //$xml = file_get_contents('php://input'); - - //Парсинг XML запроса - if (function_exists('simplexml_load_string')) { - $xml = simplexml_load_string($xml); - } else { - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Не удалось произвести обработку запроса']]]]; - die($this->backInformation()); - } - - $this->id = $xml->projectid; - - if (!in_array($ip, $this->c['ip_list'])) { - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Нет доступа с данного IP']]]]; - die($this->backInformation()); - } - - //Обработка запросов - if ($xml->method == 'check_balance') { - //MD5(method+MD5(gdKey)) - - $sign = md5($xml->method . md5($this->c['key'])); - - if ($sign == $xml->sign) { - //Баланс дилера - $balance = 1000000; - $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Баланс дилера: ' . $balance], ['balance', $balance]]]]; - $this->add('4', 'check:' . $xml->nick . ':1' . $r, 0); - } - - } elseif ($xml->method == 'check') { - /* - nick - логин персонажа MD5(nick+method+MD5(gdKey)) */ - - $sign = md5($xml->nick . $xml->method . md5($this->c['key'])); - - if ($sign == $xml->sign) { - $xml->nick = $this->in($xml->nick); - if ($this->test_accaunt($xml->nick) == true) { - //Персонаж найден и зачисляем ему игровую валюту - $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Банковский счет найден']]]]; - $this->add('3', 'check:' . $xml->nick . ':1' . $r, 0); - } else { - //Персонаж не найден - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Платеж не обработан. Банковский счет не найден.']]]]; - $this->add('-1', 'Персонаж не найден:pay:' . $xml->nick . ':0', 0); - } - } - } elseif ($xml->method == 'pay') { - /* Проводим платеж - nick - логин аккаунта , projectid - id проекта , sign , amount - деньги , payid - id платежа */ - - $sign = md5($xml->nick . $xml->projectid . $xml->amount . $xml->payid . $xml->method . md5($this->c['key'])); - - if ($sign == $xml->sign) { - $xml->nick = $this->in($xml->nick); - if ($this->test_accaunt($xml->nick)) { - //Персонаж найден и зачисляем ему игровую валюту - $bank = $this->test_accaunt($xml->nick); - if ($bank > 0) { - mysql_query('UPDATE `bank` SET `money2` = `money2` + ' . mysql_real_escape_string($xml->amount) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1'); - $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Платеж прошел успешно'], ['id', $this->c['id']]]]]; - $this->add('2', 'pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount); - - $user = mysql_fetch_array(mysql_query('SELECT `id`,`uid` FROM `bank` WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1')); - $user = mysql_fetch_array(mysql_query('SELECT `id`,`login`,`city`,`sex`,`room` FROM `users` WHERE `id` = "' . mysql_real_escape_string($user['uid']) . '" LIMIT 1')); - - mysql_query('UPDATE `users` SET `catch` = `catch` + ' . mysql_real_escape_string(floor($xml->amount)) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1'); - - $r = '' . date('d.m.Y H:i') . ' Алхимик Enchanter / Автоматическая оплата сообщает: '; - - if ($user['sex'] == 1) { - $r .= 'Уважаемая'; - } else { - $r .= 'Уважаемый'; - } - - $r .= ' ' . $user['login'] . ', на Ваш банковский счет №' . $bank . ' зачислено ' . $xml->amount . ' Ekr. Благодарим Вас за покупку!'; - - $chatDto = new ChatMessage(); - $chatDto->setCity($user['city']); - $chatDto->setRoom($user['room']); - $chatDto->setTo($user['login']); - $chatDto->setText($r); - $chatDto->setType(5); - (new Chat())->sendMsg($chatDto); - } else { - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'У пользователя отсутствует банк'], ['id', $this->c['id']]]]]; - $this->add('-1', 'У персонажа отсутствует банк:pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount); - } - } else { - //Персонаж не найден - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Платеж не обработан. Персонаж не найден.']]]]; - $this->add('-1', 'Персонаж не найден:pay:' . $xml->nick . ':0', 0); - } - } else { - //Ошибка сигнатуры - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ошибка сигнатуры']]]]; - $this->add('-1', 'Ошибка сигнатуры:pay:' . $xml->nick . ':0', 0); - } - } elseif ($xml->method == 'check_login') { - /* Проверка аккаунта - nick - логин аккаунта , projectid - id проекта , sign */ - $sign = md5($xml->nick . $xml->method . md5($this->c['key'])); - - if ($sign == $xml->sign) { - $xml->nick = $this->in($xml->nick); - if ($this->test_accaunt($xml->nick)) { - //Персонаж найден - $this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Счет найден'], ['addinfo', $this->bank_user($xml->nick)]]]]; - $this->add('1', 'check_login:' . $xml->nick . ':1' . $r, 0); - } else { - //Персонаж не найден - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Счет не найден']]]]; - $this->add('-1', 'Персонаж не найден:check_login:' . $xml->nick . ':0', 0); - } - } else { - //Ошибка сигнатуры - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ошибка сигнатуры']]]]; - $this->add('-1', 'Ошибка сигнатуры:pay:' . $xml->nick . ':0', 0); - } - } else { - $this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Неизвестный тип запроса']]]]; - $this->add('-1', 'Неизвестный тип запроса:error_method:gamedealer', 0); - } - - //Возвращаем результат - $this->backInformation(); - } -} - -$pay = new GameDealer; -$pay->start_session();