Быстрое подключение

Вернуться на страницу "Быстрое подключение"


ПРИЛОЖЕНИЕ. Примеры PHP-кода

 
Если у Вас возникли вопросы по примерам PHP-кода, приведенным ниже, пожалуйста, обращайтесь support@uniteller.ru



Пример PHP-кода на странице оплаты мерчанта:

<?php function getOrderID() { // запрос в БД на получение нового значения платежа в переменную $orderID ... // возврат полученного нового значения return $orderID; } function getFromSession( $name ) { // получение значения переменной по ее имени из сессии в переменную $result ... return $result; } function getSignature( $Shop_IDP, $Order_ID, $Subtotal_P, $MeanType , $EMoneyType, $Lifetime, $Customer_IDP, $Card_IDP , $IData, $PT_Code, $password ) { $Signature = strtoupper( md5( md5($Shop_IDP) . "&" . md5($Order_ID) . "&" . md5($Subtotal_P) . "&" . md5($MeanType) . "&" . md5($EMoneyType) . "&" . md5($Lifetime) . "&" . md5($Customer_IDP) . "&" . md5($Card_IDP) . "&" . md5($IData) . "&" . md5($PT_Code) . "&" . md5($password) ) ); return $Signature; } // Инициализация параметров для формы платежа // Параметры могут извлекаться из БД или из других хранилищ данных, // либо содержаться внутри кода $Shop_IDP = "5001300"; // идентификатор точки продажи $Lifetime = 3600; // время жизни формы оплаты в секундах $Order_ID = getOrderID(); // Сумма для оплаты и идентификатор зарегистрированного пользователя могут // храниться в данных сессии $Subtotal_P = getFromSession("Subtotal_P"); $Customer_IDP = getFromSession("Customer_IDP"); // Параметры из справочников, описанных в Техническом порядке $MeanType = 0; // платежная система кредитной карты (0 - любая) $EMoneyType = 0; // тип электронной валюты (0 - любая) // Адреса возврата после успешной и неуспешной оплат покупателями $URL_RETURN_OK = "http://example.com/pay/ok/"; $URL_RETURN_NO = "http://example.com/pay/fail/"; $password = "adadadadadadaddasdasdasdasdasdsadsd"; // пароль из ЛК Uniteller // Подпись для формы, вместо неиспользуемых параметров передаются пустые строки $Signature = getSignature( $Shop_IDP, $Order_ID, $Subtotal_P, $MeanType , $EMoneyType, $Lifetime, $Customer_IDP, "" , "", "", $password ); ?> <form action="https://wpay.uniteller.ru/pay/" method="POST"> <input type="hidden" name="Shop_IDP" value="<?=$Shop_IDP?>"> <input type="hidden" name="Order_IDP" value="<?=$Order_ID?>"> <input type="hidden" name="Subtotal_P" value="<?=$Subtotal_P?>"> <input type="hidden" name="Lifetime" value="<?=$Lifetime?>"> <input type="hidden" name="Customer_IDP" value="<?=$Customer_IDP?>"> <input type="hidden" name="Signature" value="<?=$Signature?>"> <input type="submit" name="Submit" value="Оплатить"> <input type="hidden" name="URL_RETURN_OK" value="<?=$URL_RETURN_OK?>"> <input type="hidden" name="URL_RETURN_NO" value="<?=$URL_RETURN_NO?>"> <input type="hidden" name="MeanType" value="<?=$MeanType?>"> <input type="hidden" name="EMoneyType" value="<?=$EMoneyType?>"> </form>



Пример PHP-кода обработки уведомления:

<?php function checkSignature( $Order_ID, $Status, $Signature ) { $password = "adadadadadadaddasdasdasdasdasdsadsd"; // пароль из ЛК Uniteller // проверка подлинности подписи и данных return ( $Signature == strtoupper(md5($Order_ID . $Status . $password)) ); } // Пришел 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"]) ){ // подпись сошлась ... // какие-то действия: сохранение полученных данных в БД } else { // не сошлась подпись ... // какие-то действия по обработке этого случая } } ?>



Пример PHP-кода отмены платежа по RRN:

<?php function unblock($Shop_ID,$Login,$Password,$Billnumber) { // Format=1 - получить данные в виде строки с разделителем ";", можно // получать данные и в других форматах (см. ТП), например, XML, тогда // обработка полученного ответа изменится $sPostFields = "Shop_ID=".$Shop_ID."&Login=".$Login ."&Password=".$Password."&Format=1&Billnumber=".$Billnumber ."&S_FIELDS=Status;ApprovalCode;BillNumber"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://wpay.uniteller.ru/unblock/"); 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; } // Параметры могут извлекаться из БД или из других хранилищ данных, либо // содержаться внутри кода $Shop_ID = "5001300"; // идентификатор точки продажи $Login = 1; // логин из ЛК Uniteller $Password = "adadadadadadaddasdasdasdasdasdsadsd"; // пароль из ЛК Uniteller $Billnumber = "100100100100"; // номер платежа в системе Uniteller // отмена платежа с номером из переменной $Billnumber $data = unblock( $Shop_ID,$Login,$Password,$Billnumber ); if (!count($data)) { // отмена не произошла ... // какие-то действия } else { // проверка статуса if ($data["Status"] == "canceled") { // успешная отмена ... // какие-то действия } else { // что-то не так ... // какие-то действия } } ?>


01/12/2016
Компания Uniteller поддержала новую бесконтактную технологию
расчета по картам «Мир»
 Подробности

03/11/2016
U-ON.Travel и Uniteller: лучшее решение для турбизнеса. Подробности

Uniteller в социальных сетях: