Как интегрировать?
Как только пользователь переводит оплату, и этот перевод оказывается на Вашем счету, Paysera обращается по указанному callbackurl и передаёт всю необходимую информацию о произведённом платеже.
Параметр callbackurl это адрес скрипта на Вашем сайте информирующий систему Paysera о получении запроса о произведённом платеже. Ответ генерируется следующим образом:
1. Создайте каталог.
Создайте каталог с названием libwebtopay, в котором хранятся все файлы, связанные с интеграцией оплат.
2. Скачайте библиотеку libwebtopay.
В созданный каталог libwebtopay скачайте файл WebToPay.php.
3. Создайте callback.php.
В каталоге libwebtopay создайте файл с названием callback.php. Файл должен содержать:
<?php require_once('libwebtopay/WebToPay.php'); try { $response = WebToPay::checkResponse($_GET, [ 'project_id' => 'project_id_example', 'sign_password' => 'project_password_example', // Droga do pliku, w którym będą rejestrowane wszystkie wywołania. // Jeżeli będziesz korzystał z danej funkcji upewnij się, że dostępu do utworzonego pliku log // nikt z zewnętrzna nie będzie miał. // 'log' => 'webtopay.log', ]); echo 'OK Thank you for sending'; } catch (Exception $e) { echo get_class($e) . ': ' . $e->getMessage(); }
Методу WebToPay::checkResponse необходимо передать все данные из Paysera. Это необходимо для проверки целостности файла. Если не будет хватать хоть одного параметра или не совпадут значения параметров, будет вызвано исключение WebToPayException.
После $_GET проверки данных, если всё в порядке, необходимо вернуть ответ, как это сделано в примере выше (echo 'OK';). Возможные варианты ответа:
- OK <текст>
- Указанный после ключевого слова OK текст будет отправлен обратно, как ответное сообщение.
- Например: "OK Spasibo za otpravku" (будет отправлено ответное сообщение: "Spasibo za otpravku").
- NOSMS
- В этом случае отправитель не получит никакого ответа, а ответ Вы сможете отправить поззже (в течение недели).
- WAPPUSH <url> <текст>
- Система отправит ответ отправителю методом Wap Push.
- Например: "WAPPUSH http://www.address.com/services/link описание услуги".
4. Отправка ответного сообщения.
Если вы не отправили ответного сообщения сразу же с OK<текст>, ответ Вы сможете отправить поззже (в течение недели), используя эту функцию libwebtopay:
<?php // Включает в себя библиотеку webtopay require_once('libwebtopay/WebToPay.php'); try { // Проверка данных ответа о произведенной оплате WebToPay::smsAnswer([ // Уникальный номер сообщения в нашей системе. Номер вы получили вместе с сообщением. 'id' => 0, // Ответное сообщение 'msg' => 'Twoja wiadomość została wysłana pomyślnie. Dziękujemy.', // Сгенерирован ваш новый пароль проекта в системе paysera.com 'sign_password' => 'secret', // Путь к файлу, где регистрируются все запросы // Если используете эту функцию, убедитесь, что log файл // не доступен снаружи. //'log' => 'webtopay.log', ]); } catch (Exception $e) { echo get_class($e) . ': ' . $e->getMessage(); }
Libwebtopay
Для интеграции системы макро- платежей рекомендуем использовать подготовленную нами программную библиотеку с открытым исходным кодом. Библиотека выполняет все необходимые проверки сохранности передаваемых и получаемых данных.
-
WebToPay для PHP (из GitHub).
$ git clone https://github.com/paysera/lib-webtopay
-
WebToPay для .NET (из GitHub).
$ git clone https://github.com/evp/webtopay-lib-dotnet
Чтобы libwebtopay работала успешно, из находящихся в архиве файлов достаточен только один файл: libwebtopay/WebToPay.php. Остальные файлы предназначены для тестов, примеров и пояснений.
Внимание: libwebtopay можно использовать как с услугами макро-, так и микро- платежей.
Можете испробовать libwebtopay, запустив подготовленный демонстрационный сценарий. Демонстрацию можете запустить, набрав в адресной строке Интернет-браузера:
https://www.yourwebsiteurl.com/libwebtopay/demo/
Внимание: в адресе указанный путь к demoкаталогу может отличаться в зависимости от того, куда вы поместили содержимое архива.
Внимание: для того, чтобы демо успешно функционировало укажите номер вашего проекта в системе Paysera, в поле projectid. Демо не будет работать, если будете пробовать запускать её с Вашего компьютера (localhost).
Спецификация
Структура информирования об оплате
Paysera отправляет ответ по указанному Вами callbackurl адресу. К указанному Вами callbackurl адресу добавляются дополнительные GET параметры, список которых размещён ниже.
-
data - закодированные параметры из системы Paysera. Для получения параметров надо выполнить 3 действия:
- Изменить символы «-» на «+», «_» на «/».
- Декодировать строку с использованием кодировки base64.
- Получить массив параметров из декодированной строки, которая является строкой URL зашифрованных параметров.
$params = []; parse_str(base64_decode(strtr($_GET['data'], ['-' => '+', '_' => '/'])), $params); //use $params
-
ss1 - подпись параметра data без использования схемы закрытых – открытых ключей. Алгоритм
подписи:
ss1 = md5(data + password)
- ss2 - SHA-1 подпись параметрa data, с использованием схемы закрытых – открытых ключей. Открытый ключ Paysera, который используется для создания этой подписи, можно найти в https://www.paysera.com/download/public.key
Когда Вы получите обратный вызов, перед подтверждением заказа Вы обязаны проверить, по крайней мере, одну подпись. Если есть возможность, всегда (также) проверьте подпись более высокой безопасности ss2.