Файл: impwar.tk/xsolla_callback.php
Строк: 156
<?php
//Функции
//Проверка Ip-адреса,с которого пришёл Get-запрос
function checkIP ($ip)
{
if ($ip == "94.103.26.178" || $ip = "94.103.26.181")
{
return 1;
}
return 0;
}
//Проверка существования игрока
function check_nick($id)
{
if ($id == '')
{
return 0;
}
$myrow = mysql_query ("SELECT * FROM `user` WHERE `id` = '".$id."' LIMIT 1");
$num_rows = mysql_num_rows($myrow);
if ($num_rows > 0 )
{
return 1;
}
return 0;
}
///Начисление средств
function pay($v1, $sum, $id)
{
$date = date("Y-m-d H:i:s");
mysql_query("UPDATE `user` SET `balls` = `balls` + '".$sum."' WHERE `id` = '".$v1."' LIMIT 1");
if(mysql_result(mysql_query ("SELECT COUNT(*) FROM `xsolla_shop` WHERE `id_shop` = '".$id."'"),0)>0){
$paymentId=mysql_result(mysql_query ("SELECT `id` FROM `xsolla_shop` WHERE `id_shop` = '".$id."' LIMIT 1"),0);
}else{
mysql_query ("INSERT INTO `xsolla_shop` (`id_shop`,`v1`,`sum`) VALUES ('".$id."','".$v1."','".$sum."')");
$paymentId = mysql_insert_id();
mysql_query ("INSERT INTO `xsolla_billing` (`invoice`,`v1`,`currency`,`date`,`canceled`) VALUES ('".$id."','".$v1."','".$sum."','".$date."','0')");
}
return $paymentId;
}
///Отмена платежа,и также защита от фрода...
function cancel ($id)
{
$date = date("Y-m-d H:i:s");
$result = mysql_query("SELECT `currency`, `v1`, `canceled` FROM `xsolla_billing` WHERE `invoice` = '".$id."' LIMIT 1");
$amount = mysql_fetch_array ($result);
$num_rows = mysql_num_rows($result);
if ($num_rows > 0 && $amount['canceled'] == '0')
{
mysql_query("UPDATE `user` SET `balls` = `balls` - '".$amount['currency']."' WHERE `id` = '".$amount['v1']."'");
mysql_query("UPDATE `xsolla_billing` SET `canceled` = '1', `date_cancel`= '".$date."' WHERE `invoice` = '".$id."'");
return 1;
}
return 0;
}
////С функциями закончили....
///Теперь непосредственно обработка того,что нам пришло
$isAllowed = checkIP($_SERVER['REMOTE_ADDR']);///Проверка IP
///Подключаемся к БД
$db_host='localhost'; // хост
$db_password=''; // пароль
$db_user_name=''; // имя пользователя
$db_name=''; // имя базы данных
if(!($db=@mysql_connect($db_host, $db_user_name, $db_password)))
{
die();
}
if (!@mysql_select_db($db_name,$db))
{
die();
}
/////Подключились
$secret = "";///Вот здесь вставляете свой секретный код
////Пиздим переменные с GET-запроса
$v1 = $_GET['v1'];
$command = $_GET['command'];
$md5 = $_GET['md5'];
$sum = $_GET['sum'];
$id = $_GET['id'];
$date = $_GET['date'];
/////Спиздили
////Проверка игрока
if ($command == "check" && $isAllowed)
{
$check = check_nick($v1);
if($md5 != md5($command.$v1.$secret)){
echo '<xml version="1.0" encoding="windows-1251"><response><result>3</result></response>';
die();
}
elseif ($check && $md5 == md5($command.$v1.$secret))
{
$code = '0';
$comment = 'success';
echo '<?xml version="1.0" encoding="utf-8"?><response><result>'.$code.'</result></response>';
}
else
{
$code = '2';
$comment = 'Account is disabled or not present';
echo '<?xml version="1.0" encoding="utf-8"?><response><result>'.$code.'</result><comment>'.$comment.'</comment></response>';
}
}
////Проверили
/////Оплата
if ($command == "pay")
{
$check = check_nick($v1);
$paymentId = pay($v1,$sum,$id);
if ($paymentId)
{
$code = '0';
}
else
{
$code = '4';
$comment = 'Invalid format of request';
echo '<?xml version="1.0" encoding="windows-1251"?><response><id>'.$id.'</id><id_shop>'.$paymentId.'</id_shop><sum>'.$sum.'</sum><result>'.$code.'</result><comment>'.$comment.'</comment></response>';
exit();
}
if($md5 != md5($command.$v1.$id.$secret)){
echo '<xml version="1.0" encoding="windows-1251"><response><result>3</result></response>';
die();
}
elseif ($check && $paymentId && $md5 == md5($command.$v1.$id.$secret) && $isAllowed)
{
echo '<?xml version="1.0" encoding="windows-1251"?><response><id>'.$id.'</id><id_shop>'.$paymentId.'</id_shop><sum>'.$sum.'</sum><result>0</result></response>';
}
else
{
echo '<?xml version="1.0" encoding="windows-1251"?><response><id>'.$id.'</id><id_shop>'.$paymentId.'</id_shop><sum>'.$sum.'</sum><result>2</result><comment>Account is disabled or not present</comment></response>';
}
}
/////Оплатили
////Если есть запрос на отмену,то отменяем платёж
if ($command == "cancel")
{
$cancelResult = cancel($id);
if($md5 != md5($command.$id.$secret)){
echo '<xml version="1.0" encoding="windows-1251"><response><result>3</result></response>';
die();
}
elseif ($cancelResult && $md5 == md5($command.$id.$secret) && $isAllowed)
{
echo '<xml version="1.0" encoding="windows-1251"><response><result>0</result></response>';
}
else
{
echo '<xml version="1.0" encoding="windows-1251"><response><result>3</result><comment>this payment ID does not exist</comment></response>';
}
}
?>