Всем привет! Надо подключить платежную систему Uniteller. Почему именно она, она позволяет сразу оплачивать с карты и там комиссия маленькая, но это не сама суть вопроса. Вопрос состоит в том, что саму оплату я подключил, (для этого я взял за основу интеркассу). Но не могу сделать одну вещь, чтобы после оплаты менялся статус оплачено или нет. Прочитал статью про подключение Privat24, логика работы понятно, но реализовать не смог.
Все изменения проводил в файле payment.php
Вот Пример PHP-кода запроса результата авторизации на сервере Uniteller
<?php function checkSignature( $Order_ID, $Status, $Signature ) { $password = "adadadadadadaddasdasdasdasdasdsadsd"; // пароль из ЛК Uniteller // проверка подлинности подписи и данных return ( $Signature == strtoupper(md5($Order_ID . $Status . $password)) ); } function getData($Order_ID) { // Параметры могут извлекаться из БД или из других хранилищ данных, либо содержаться внутри кода $Shop_ID = "5001300"; // идентификатор точки продажи $Login = 1; // логин из ЛК Uniteller $Password = "adadadadadadaddasdasdasdasdasdsadsd"; // пароль из ЛК Uniteller // Format=1 - получить данные в виде строки с разделителем ";", можно получать данные и в других форматах (см. Технический порядок), например, XML, тогда обработка полученного ответа изменится $sPostFields = "Shop_ID=".$Shop_ID."&Login=".$Login."&Password=".$Password."&Format=1&ShopOrderNumber=".$Order_ID."&S_FIELDS=Status;ApprovalCode;BillNumber"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://test.wpay.uniteller.ru/results/"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_VERBOSE, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $sPostFields); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); curl_setopt($ch, CURLINFO_HEADER_OUT, 1); $curl_response = curl_exec($ch); $curl_error = curl_error($ch); $data = array(); // результат для возврата if ($curl_error) { // обработка ошибки обращения за статусом платежа } else { // данные получены // обработка данных из переменной $curl_response $arr = explode( ";", $curl_response ); if ( count($arr) > 2 ) { $data = array( "Status" => $arr[0] , "ApprovalCode" => $arr[1] , "BillNumber" => $arr[2] ); } else { // что-то не так, обработчик полученного ответа ... } } return $data; } // Пришел callback с параметрами Order_ID, Status, Signature if ( count($_POST) && isset($_POST["Order_ID"]) && isset($_POST["Status"]) && isset($_POST["Signature"]) ) { // проверка подписи if ( checkSignature( $_POST["Order_ID"], $_POST["Status"], $_POST["Signature"] ) ) { // подпись сошлась ... // какие-то действия: сохранение полученных данных в БД // можно сделать дополнительный запрос статуса платежа для еще одной проверки и/или получения дополнительных параметров платежа $data = getData($_POST["Order_ID"]); // далее можно проверить совпадение статусов, сохранить дополнительные данные в БД, выполнить необходимые действия ... } else { // не сошлась подпись ... // какие-то действия по обработке этого случая } }
Помогите советом, кто знает как это сделать.