Как только пользователь переводит оплату, и этот перевод оказывается на Вашем счету, 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, array(
        'sign_password' => 'paslaptis',

        // Путь к файлу, где регистрируются все запросы
        // Если используете эту функцию, убедитесь, что log файл
        // не доступен снаружи.
        //'log' => 'webtopay.log',
    ));

    echo 'OK Thank you for sending';
}
catch (Exception $e) {
    echo get_class($e).': '.$e->getMessage();
}

Методу WebToPay::checkResponse необходимо передать все данные из Paysera. Это необходимо для проверки целостности файла. Если не будет хватать хоть одного параметра или не совпадут значения параметров, будет вызвано исключение WebToPayException.

Параметр Длина Обязателен Описание
sign_password 32 Да Пароль проекта. Вы можете его найти подключившись к своей учётной записи Paysera, выбрать "управление услугами", далее, выбрав конкретный проект "общие настройки".

После $_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(array(
        // Уникальный номер сообщения в нашей системе. Номер вы получили вместе с сообщением.
        '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 действия:
    1. Изменить символы «-» на «+», «_» на «/».
    2. Декодировать строку с использованием кодировки base64.
    3. Получить массив параметров из декодированной строки, которая является строкой URL зашифрованных параметров.
    Пример на языке PHP:
    $params = array();
    parse_str(base64_decode(strtr($_GET['data'], array('-' => '+', '_' => '/'))), $params);
    //use $params
  • ss1 - подпись параметра data без использования схемы закрытых – открытых ключей. Алгоритм подписи:
    ss1 = md5(data + password)
  • ss2 - SHA-1 подпись параметрa data, с использованием схемы закрытых – открытых ключей. Открытый ключ Paysera, который используется для создания этой подписи, можно найти в https://www.paysera.com/download/public.key

Когда Вы получите обратный вызов, перед подтверждением заказа Вы обязаны проверить, по крайней мере, одну подпись. Если есть возможность, всегда (также) проверьте подпись более высокой безопасности ss2.

Закодированные параметры

Параметр Описание
to Короткий номер, на который было отправлено сообщение
sms Содержание сообщения с ключевым и суб-ключевым словом (до 160 символов).
from Мобильный номер, с которого было отправлено сообщение.
operator Оператор мобильной сети ("Bitė", "TELE2", "Omnitel", "Orange", "LMT" и т.д.).
amount Цена сообщения для клиента в центах. Например, 100 (1 литовский лит), 500 (5 литовских литов) и т.д.
currency Валюта (USD, EUR), в которой вы предпочитаете получать платежи клиента. Если указанная валюта не может быть принята посредством выбранного метода оплаты, система автоматически конвертирует сумму в поддерживаемую валюту по курсу текущего дня. В ответе на Ваш сайт будут переданы payamount иpaycurrency.
country Двухзначный код страны. (LT, EE, LV, UA, RU и т.д.)
id Уникальный номер сообщения в системе Paysera
test Параметр, при наличии которого можно тестировать соединение. Оплата не производится и результат возвращается сразу, как будто бы оплата была произведена. Для того, чтобы протестировать, необходимо активировать режим теста возле выбранного проекта. Путь: "Управление проектами" -> "Услуга сбора платежей" (возле конкретного проекта) -> "Разрешить тестовую оплату" (отметить).
key Ключевое слово
projectid Уникальный номер проекта. Оплаты могут производиться только в рамках утверждённого проекта.
version Номер версии спецификации (API) платежной системы Paysera.