<?php
require_once './element_options/element_options.php';
$IpList = array("94.103.26.178", "94.103.26.181", "159.255.220.241", "159.255.220.242",
"159.255.220.243", "159.255.220.244", "159.255.220.245", "159.255.220.246",
"159.255.220.247", "159.255.220.248", "159.255.220.249", "159.255.220.250",
"159.255.220.251", "159.255.220.252", "159.255.220.253", "159.255.220.254");
if(!in_array(my_ip(), $IpList)) exit('error IP');
//if (my_ip() != '94.103.26.178') exit('error');
$xsolla_command = (isset($_GET['command'])) ? preg_replace("/[^\w\x7F-\xFF\s]/", "", $_GET['command']) : false; // Команда
$xsolla_v1 = (isset($_GET['v1']) AND is_numeric($_GET['v1'])) ? (int)$_GET['v1'] : false; // ИД юзера для проверки
$xsolla_md5 = (isset($_GET['md5'])) ? $_GET['md5'] : false; // Хеширование
$id_project = '12431'; // Идентификатор Битвы Стихий на Иксолле
$secret_key = 'YU?AhQb6hXiMO?Upyr!!;n8b5=k8&*LT'; // Секретный ключ
// Команда на проверку юзера
if ($xsolla_command == 'check') {
$real_md5 = md5('check'.$xsolla_v1.$secret_key);
$result_user = mysql_result(mysql_query("SELECT COUNT(lost_id) FROM `element_user` WHERE `lost_id` = '$xsolla_v1'"), 0);
// Если юзер существует и хэш ИКСОЛЛЫ равен МОЕМУ, то платеж разрешаем
if ($real_md5 == $xsolla_md5 AND $result_user > 0) {
echo '<?xml version="1.0" encoding="windows-1251"?><response><result>0</result></response>';
} else {
echo '<?xml version="1.0" encoding="windows-1251"?><response>
<result>7</result>
<comment>Account is disabled or not present</comment>
</response>';
}
exit;
}
// Команда на совершение платежа
if ($xsolla_command == 'pay') {
$xsolla_id = (isset($_GET['id']) AND is_numeric($_GET['id'])) ? (int)$_GET['id'] : false; // ИД платежа для проверки
$xsolla_summa = (isset($_GET['sum']) AND is_numeric($_GET['sum'])) ? (int)$_GET['sum'] : 0;
$xsolla_date = $_GET['date'];
$real_md5 = md5('pay'.$xsolla_v1.$xsolla_id.$secret_key);
// Запрос на проверку, есть уже платеж с таким идентификатором
$pay = mysql_fetch_array(mysql_query("SELECT * FROM `element_xsolla` WHERE `lost_xsolla_id` = '$xsolla_id' LIMIT 1"));
// Если этого платежа ещё нету, и хэши совпадают, пополняем.
if (!$pay AND $real_md5 == $xsolla_md5) {
require_once './element_function/element_function_users.php';
require_once './element_function/element_function_mail.php';
$xsolla_user = cache_user($xsolla_v1); // кэш данных юзера
$profile_other = explode(' ', $xsolla_user['lost_other']); // Разбиваем на массив
$profile_other[2] = $profile_other[2] + 1; // Добавляем +1 письмо
$xsolla_user['lost_other'] = implode(' ', $profile_other); // Возвращаем массив в строку
// Обновляем данные юзера
update_money_exp($xsolla_user, 0, 0, 0, $xsolla_summa);
// Заносим платеж в Базу Данных
mysql_query("INSERT INTO `element_xsolla` SET `lost_xsolla_id` = '$xsolla_id',
`lost_user` = '$xsolla_v1',
`lost_sum` = '$xsolla_summa',
`lost_date` = '$xsolla_date',
`lost_refferal` = '0',
`lost_time` = '".time()."'");
$insert_xsolla = mysql_insert_id();
$lost_sub_text = 'Вас счёт успешно пополнен на <img src="/images/icons/gold.png">'.$xsolla_summa.' золота';
$lost_text = '<span class="admin">Ваш счёт успешно пополнен на <img src="/images/icons/gold.png">'.$xsolla_summa.' золота.<br/></span>';
mysql_query("INSERT INTO `element_mail` SET `lost_out` = '0',
`lost_in` = '$xsolla_v1',
`lost_sub_text` = '$lost_sub_text',
`lost_text` = '$lost_text',
`lost_user_out` = '0',
`lost_user_in` = '$xsolla_v1',
`lost_time` = '".time()."',
`lost_system` = 'Банк',
`lost_new` = '1'");
$count_in = Cache_Count_Message($xsolla_v1);
if (!empty($count_in['all'])) $count_in['all']++;
if (!empty($count_in['in'])) $count_in['in']++;
if (!empty($count_in['new'])) $count_in['new']++;
writecache('element_count_message'.$xsolla_v1, $count_in);
if ($xsolla_user['lost_refferer'] > 0) {
$xsolla_user1 = cache_user($xsolla_user['lost_refferer']); // кэш данных юзера
$profile_other1 = explode(' ', $xsolla_user1['lost_other']); // Разбиваем на массив
$profile_other1[2] = $profile_other1[2] + 1; // Добавляем +1 письмо
$xsolla_user1['lost_other'] = implode(' ', $profile_other1); // Возвращаем массив в строку
$summa_ref = (int)(($xsolla_summa / 100) * 10);
// Обновляем данные юзера
update_money_exp($xsolla_user1, 0, 0, 0, $summa_ref);
// Заносим платеж в Базу Данных
mysql_query("INSERT INTO `element_xsolla` SET `lost_xsolla_id` = '0',
`lost_user` = '$xsolla_user1[lost_id]',
`lost_sum` = '$summa_ref',
`lost_date` = '$xsolla_date',
`lost_refferal` = '1',
`lost_time` = '".time()."'");
$lost_sub_text = 'Партнерское вознаграждение: <img src="/images/icons/gold.png">'.$summa_ref.' золота';
$lost_text = '<span class="admin">Партнерское вознаграждение: <img src="/images/icons/gold.png">'.$summa_ref.' золота.<br/></span>';
mysql_query("INSERT INTO `element_mail` SET `lost_out` = '0',
`lost_in` = '$xsolla_user1[lost_id]',
`lost_sub_text` = '$lost_sub_text',
`lost_text` = '$lost_text',
`lost_user_out` = '0',
`lost_user_in` = '$xsolla_user1[lost_id]',
`lost_time` = '".time()."',
`lost_system` = 'Банк',
`lost_new` = '1'");
$count_in1 = Cache_Count_Message($xsolla_v1);
if (!empty($count_in1['all'])) $count_in1['all']++;
if (!empty($count_in1['in'])) $count_in1['in']++;
if (!empty($count_in1['new'])) $count_in1['new']++;
writecache('element_count_message'.$xsolla_user1['lost_id'], $count_in1);
}
echo '<?xml version="1.0" encoding="windows-1251"?>
<response>
<id>'.$xsolla_id.'</id>
<id_shop>'.$insert_xsolla.'</id_shop>
<sum>'.$xsolla_summa.'</sum>
<result>0</result>
</response>';
exit;
}
// Если этого платежа ещё нету, но хэши не равны, выводим ошибку
if (!$pay AND $real_md5 != $xsolla_md5) {
echo '<?xml version="1.0" encoding="windows-1251"?>
<response>
<id>'.$xsolla_id.'</id>
<id_shop>0</id_shop>
<sum>'.$xsolla_summa.'</sum>
<result>1</result>
<comment>Temporarily database error</comment>
</response>';
exit;
}
// Если такой платеж уже был и хэш верный, то просто говорим об этом иксолле
if ($pay AND $real_md5 == $xsolla_md5) {
echo '<?xml version="1.0" encoding="windows-1251"?>
<response>
<id>'.$xsolla_id.'</id>
<id_shop>'.$pay['lost_id'].'</id_shop>
<sum>'.$pay['lost_sum'].'</sum>
<result>0</result>
</response>';
exit;
}
}
?>