<html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <title>Заказ не оплачен</title> </head> <body> <?php include_once dirname(__FILE__) . "/uniteller.php"; $order_id = $_REQUEST["Order_ID"]; LogToScreen("Заказ " . $order_id . " не оплачен"); LogToScreen("Request"); var_dump($_REQUEST); LogToScreen("Server"); var_dump($_SERVER); LogToScreen("Session"); var_dump($_SESSION); $status = Uniteller::GetPaymentResult($order_id); var_dump($status); ?> </body> </html>
LogToFile('Отсутствует подпись', $moduleName); exit; } $signature = $_REQUEST['Signature']; // проверка наличия параметра Статуса операции if (!isset($_REQUEST['Status'])) { LogToFile('Отсутствует статус оплаты', $moduleName); exit; } $status0 = $_REQUEST['Status']; LogToFile('Статус оплаты заказа ' . $status0, $moduleName); // $status0 может быть // authorized - средства успешно заблокированы (выполнена авторизационная // транзакция) // not authorized - средства не заблокированы (авторизационная транзакция не // выполнена) по ряду причин // paid - оплачен (выполнена финансовая транзакция или заказ оплачен в // электронной платёжной системе) // canceled - отменён (выполнена транзакция разблокировки средств или выполнена // операция по возврату платежа после списания средств) // waiting - ожидается оплата выставленного счёта. Статус используется только // для оплат электронными валютами, при которых процесс оплаты может содержать // этап выставления черех систему Uniteller счёта на оплату и этап фактической // оплаты этого счета покупателем, которые существенно разнесены по времени // проверка достоверности подписи if (!Uniteller::IsSignatureCorrect($order_id, $status0, $signature)) { LogToFile('Подпись неверна', $moduleName); exit; } Uniteller::OrderPaymentCallback($order_id); exit;
function init() { global $MOD_TITLE, $MOD_GROUP, $MOD_VISIBLE, $MOD_SUBMENU; parent::init($MOD_TITLE, $MOD_GROUP, $MOD_VISIBLE); // получаем список лицевых счетов абонента $this->accounts = array(); $this->urfa->call(-16469); $this->urfa->send(); // получаем количество записей $count = $this->urfa->get_int(); for ($i = 0; $i < $count; $i++) { $aid = $this->urfa->get_int(); // номер лицевого счета // пропускаем два неинтересных нам параметра $this->urfa->get_double(); // денег на счету $this->urfa->get_double(); // ?? // добавлем в списков лицевых счетов $this->accounts[$aid] = $aid; } $this->urfa->finish(); if (isset($_REQUEST['Status'])) { $status = $_REQUEST['Status']; } else { $status = ''; } if ($status == 'pay') { // получаем информацию о текущем пользователе $this->user = array(); $this->urfa->call(-0x4052); $this->urfa->send(); $this->user['id'] = $this->urfa->get_int(); $this->user['login'] = $this->urfa->get_string(); $this->user['basic_account'] = $this->urfa->get_int(); $this->user['balance'] = roundDouble($this->urfa->get_double()); $this->user['credit'] = roundDouble($this->urfa->get_double()); $this->user['is_blocked'] = resolveBlockState($this->urfa->get_int()); $this->user['create_date'] = getDateFromTimestamp($this->urfa->get_int()); $this->user['last_change_date'] = getDateFromTimestamp($this->urfa->get_int()); $this->user['who_create'] = resolveUserName($this->urfa->get_int()); $this->user['who_change'] = resolveUserName($this->urfa->get_int()); $this->user['is_juridical'] = $this->urfa->get_int(); $this->user['full_name'] = $this->urfa->get_string(); $accountId = intval($_REQUEST["AccountId"]); // проверка введенного значения суммы оплаты $subtotal_P = $_REQUEST['OutSum']; $subtotal_P = trim($subtotal_P); //убиарем лишние пробелы $subtotal_P = str_replace(',', '.', $subtotal_P); // заменяем запятые на точку $subtotal_P = floatval($subtotal_P); // пробуем преобразовать к числу $subtotal_P = round($subtotal_P, 2); // округляем до 2 знаков после запятой if ($subtotal_P != 0 && $subtotal_P >= 10 && $subtotal_P < 10000) { $client_ip = $_SERVER["REMOTE_ADDR"]; echo $client_ip . '<br \\>' . "\n"; $order_IDP = Uniteller::NewOrder($accountId, $subtotal_P, $client_ip); echo $order_IDP . '<br \\>' . "\n"; //// Для отладки разрешаем переход на страницу оплаты только с определённого IP //if ((strpos($client_ip, '10.79.124.') == 0) // or (strpos($client_ip, '10.78.252.') == 0)) { Uniteller::GoToPaymentPage($accountId, $order_IDP, $subtotal_P); //} } else { // при некорректно введенной сумме платежа возвращаемся на эту же страницу $url_return = $_SERVER['HTTP_REFERER']; header('Location: ' . $url_return); } exit; } }
<?php include_once dirname(__FILE__) . "/uniteller.php"; //// получить список незавершенных заказов //$orders = Uniteller::GetOrdersInProcess(); // //foreach ($orders as $o){ // //проверить статус заказов // $status = 0; //Uniteller::GetPaymentResult($o); // LogToScreen($o . ' ' . $status . ' ' . count($status)); //} //завершить оплаченные заказы LogToScreen(md5('')); libxml_disable_entity_loader(false); $o = 538; $status = Uniteller::GetPaymentResult($o); LogToScreen($o . ' ' . $status . ' ' . count($status)); //var_dump($status); foreach ($status as $s) { LogToScreen('----'); //var_dump($s); LogToScreen('ordernumber: ' . $s->ordernumber); LogToScreen('response_code: ' . $s->response_code); LogToScreen('recommendation: ' . $s->recommendation); LogToScreen('message: ' . $s->message); LogToScreen('comment: ' . $s->comment); LogToScreen('date: ' . $s->date); LogToScreen('total: ' . $s->total); LogToScreen('currency: ' . $s->currency); LogToScreen('cardtype: ' . $s->cardtype); LogToScreen('cardnumber: ' . $s->cardnumber);