{% else-1 %}

                        
<?

/* Для отладки */
//error_reporting(E_ALL);
//ini_set('display_errors', 'On');
//
// Версия инструментов для поключения ПС
define('QUERY_VERSION', '1.1');
// Подключаем файл конфигурации для автозагрузки инструментов
require_once '../configs/config.php';

/**
* Класс StatusHandler - для отправки пользователя по нужному url после совершения оплаты
* @author Demin Dmitry
*/
class StatusHandler extends Handler {

function _request() {
// Регистрируем обработчики
$this->_register('process', 'Обработка запроса');

$request = new Query();
$data = array_merge($_COOKIE, $_GET, $_POST);
foreach ($data as $key => $value) {
$request->data->$key = $value;
}
foreach ($this->_pasreUrlData() as $key => $value) {
$request->info->$key = $value;
}

return $request;
}

/**
* Парсит REQUEST_URI для получения статуса платежа и названия ПС
* @return array
*/
protected function _pasreUrlData() {
$url = $_SERVER['REQUEST_URI'];
//$url = 'http://secure-d-demin.user/status/fail?invoice=12106016';
preg_match_all('/status\/([\/A-Za-z0-9_-]+)/', $url, $matches);
$str = $matches[1][0];

$parts = explode('/', $str);

foreach ($parts as $value) {
if (!empty($value))
$res[] = $value;
}

$result = array();
if (count($res) == 1) {
$result['userReturnStatus'] = $res[0];
} elseif (count($res) == 2) {
$result['contrName'] = $res[0];
$result['userReturnStatus'] = $res[1];
}
$this->_log('contrName = '.$result['contrName']);
$result['useClass'] = FALSE;
if (isset($result['contrName'])) {
$result['className'] = ucfirst($result['contrName']) . 'Userback';
$result['classPath'] = \autoloadXsolla::getPsPath() . '/' . $result['contrName'] . '/' . ucfirst($result['contrName']) . 'UserbackV1_0.php';
if (file_exists($result['classPath'])) {
$result['useClass'] = TRUE;
}
if (!$result['useClass']) {
$result['classPath'] = \autoloadXsolla::getPsPath() . '/' . $result['contrName'] . '/class.' . $result['contrName'] . '.userback' . '.php';
}
$this->_log($result['classPath']);
if (file_exists($result['classPath'])) {
$result['useClass'] = TRUE;
}
}
return $result;
}

/**
* Выводит ответ в виде XML
* @param Query $response
*/
function _response($response) {
switch ($response['type']) {
case 'header':
header($response['header']);
break;
case 'string':
echo $response['string'];
break;
}
}

/**
* Проверка правомерности запроса
* @param Query $request
*/
protected function _securityCheck($request) {

}

protected function process(Query $q) {
if ((int) $q->info->useClass) {
require_once (string) $q->info->classPath;
$name = (string) $q->info->className;

$class = new $name();
$class->attachLogger(new HandlerLogger((string) $q->info->contrName, 'userback', 'userback-error'));
$class->handle();
$e = $class->getException();
if (isset($e))
throw $e;
$data->invoice = $class->getInvoice();
$data->userReturnStatus = $class->getStatus();
}
if (!isset($data->userReturnStatus))
$data->userReturnStatus = (string) $q->info->userReturnStatus;
if (!isset($data->invoice)) {
if (!isset($q->data->invoice))
throw new UserbackException('Parameter "invoice" is required', 1);
if (!isset($q->data->sign))
throw new UserbackException('Parameter "sign" is required', 1);
$data->invoice = (string) $q->data->invoice;

$invoice = new Invoice(array('invoice' => $data->invoice));
$invoice->get(array('key'));
if (!isset($invoice->key))
throw new UserbackException('Invoice not found', 2);
$md5 = $invoice->invoice . '|' . $invoice->key;
$this->_log($md5);
$md5 = md5($md5);
$this->_log($md5);
if ($md5 != $q->data->sign)
throw new UserbackException('Wrong md5 sign', 3);
}
$invoice = new Invoice(array('invoice' => (string) $data->invoice));
$invoice->get(array(
'returnUrl',
'pid',
'key',
'refer',
'locale',
'project'
));
$response['type'] = 'header';
if ($invoice->refer == 11) {
if($invoice->project == '2148'){
$invoice->returnUrl = 'https://secure.xsolla.com/paystation2/?theme=20004&marketplace=landing&action=sr&project='.$invoice->project;
}else{
$invoice->returnUrl = 'https://secure.xsolla.com/paystation2/?theme=201&marketplace=landing&action=sr&project='.$invoice->project;
}
}


if (isset($invoice->returnUrl) && $invoice->returnUrl) {
$url = $invoice->returnUrl;
$params = array('fix_command' => 'status', 'fix_invoice' => $invoice->invoice, 'fix_pid' => $invoice->pid, 'fix_userReturnStatus' => (string) $data->userReturnStatus, 'locale' => $invoice->locale);
ksort($params);

$sign = '';
if (strpos($url, '?') === false)
$url.='?'; else
$url.='&';
foreach ($params as $key => $val) {
$url .= $key . '=' . $val . '&';
if (strpos($key, 'fix_') !== false)
$sign .= $key . '=' . $val;
}
$url = substr($url, 0, -1);
$url = $url . '&signature=' .
md5($sign . $invoice->key);

ToolsOutLog::out_log(print_r(array(
'params' => $params,
'sign' => $sign . $invoice->key,
'md5' => md5($sign . $invoice->key),
'url' => $url,
'invoice' => $invoice
),1), 'timur');

$response['header'] = 'Location: ' . $url;
}
else {
$response['header'] = 'Location: https://secure.xsolla.com/pages/status-kiosk/?id=' . $data->invoice . '&key=' . md5((string) $data->invoice . HISTORY_KEY_PAYMENT);
}
return $response;
}

protected function _errorHadler(Exception $e, $request) {
if (get_class($e) == 'UserbackException') {
$code = $e->getCode();
} else {
$code = 0;
}
if ($code > 0) {
$response['type'] = 'header';
$response['header'] = 'Location: https://secure.xsolla.com/500.html';
} else {
$response['type'] = 'string';
$response['string'] =
'<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h2>Temporary connection problem. Please, refresh page to proceed.</h2>
<h2>Временные проблемы соединения. Пожалуйста, обновите страницу, чтобы продолжить.</h2>
</body>
</html>';
}
return $response;
}

}

// Создаем обработчик и обрабатываем запрос
$handler = new StatusHandler('status');
$handler->handle();
?>
Варианты:
Подсвеченный вариант Текстовый вариант Текстовый вариант (UNIX) HTML для блога
-2 26 0
0

Нет фото
ByCoder * 0.01
• 18 янв 2014, 23:06


Вообще ненужны??

0

Нет фото
Sheldon-мошенник * [мошенник] 8.5
• 17 янв 2014, 11:18


Инклудные файлы и не нужны, вы их сами под себя пишите, это класс обработчика, который все так давно ищут*

0

Нет фото
Mstivoj * 2.18
• 16 янв 2014, 23:39


Rjgbgfcn rfrjq nj///uu
















































Копипаст какой то...гг
Где искать то
require_once \'../configs/config.php\';