Основная информация

Можно просмотреть "Callback", отправленные Paysera в вашу систему, и ответы, предоставленные вашей системой.

bank.paysera.com -> Проекты и деятельность -> Полученные платежи -> Информационная табличка рядом с конкретным платежом..

Здесь вы можете увидеть URL-адрес, который использовался для "Callback", и ответ вашей системы. Вы можете использовать этот URL для запуска "Callback" вручную.

Всегда проверяйте состояние оплаты – только status 1 означает успешное завершение платежа.

Yбедитесь, не осуществляется ли платеж с целью тестирования (по параметру status), не предоставлена ли еще услуга за этот платеж (по параметру orderid), а также проверьте, соответствуют ли переданные сумма и валюта значениям, сохраненным в Вашем заказе.

Callback состав

Paysera отправляет ответ по указанному Вами callbackurl адресу. К указанному Вами callbackurl адресу добавляются дополнительные GET параметры, список которых размещён ниже.

  • data - Закодированные параметры из системы Paysera. Используется тот же алгоритм кодирования данных, как и при создании запроса для макро-платежей. Для получения параметров надо выполнить 3 действия:
    1. Изменить символы «-» на «+», «_» на «/».
    2. Декодировать строку с использованием кодировки base64.
    3. Получить массив параметров из декодированной строки, которая является строкой URL зашифрованных параметров.
    Пример на языке PHP:
    $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


Проверка подписи возможна только при выключенном шифровании в настройках проекта. Если шифрование включено, используется альтернативный метод валидации данных.

Callback-шифрование

При включенном шифровании в настройках проекта параметры ss1 и ss2 не будут отправлены. Вместо этого, содержимое data будет зашифровано. Ниже приведен пример обработки такого запроса на языке PHP:
$password = 'password';

$stringToDecrypt = base64_decode(strtr($requestData['data'], '-_', '+/'), true);

$ivLength = (int) openssl_cipher_iv_length('aes-256-gcm');
$iv = substr($stringToDecrypt, 0, $ivLength);
$ciphertext = substr($stringToDecrypt, $ivLength, -16);
$tag = substr($stringToDecrypt, -16);

$decryptedText = openssl_decrypt(
    $ciphertext,
    'aes-256-gcm',
    $password,
    OPENSSL_RAW_DATA,
    $iv,
    $tag
);

Callback параметры

Параметр
Описание
projectid
Уникальный номер проекта. Оплаты могут производиться только в рамках утверждённого проекта.
orderid
Номер заказа из Вашей системы.
lang
Можно указать язык пользователя (ISO 639-2/B: LIT, RUS, ENG и. т. п.). Если Paysera не поддерживает данного языка, язык будет выбран либо по IP адресу посетителя, либо по умолчанию будет использоваться англ. язык.
amount
Сумма (в центах), которую должен оплатить клиент.
currency
Валюта (напр. USD, EUR и. т. п.), в которой вы предпочитаете получать платежи клиента. Если указанная валюта не может быть принята посредством выбранного метода оплаты, система автоматически конвертирует сумму в поддерживаемую валюту по курсу текущего дня. В ответе на Ваш сайт будут переданы payamount и paycurrency.
payment
Способ оплаты. Если указан, платеж будет осуществлен с помощью указанного способа оплаты. Если не указан, плательщику будет немедленно предоставлена таблица с доступными способами оплаты. Вы можете получить способы оплаты в реальном времени используя библиотеку WebToPay.
country
Страна плательщика (LT, EE, LV, GB, PL, DE). Указав страну, плательщику сразу же предоставляются те способы оплаты, которые возможны в данной стране. Если страна не указана, система по IP адресу посетителя установит его страну. Плательщику предоставляется возможность поменять страну.
paytext
Реквизиты платежа, которые видны при переводе.
name
Имя плательщика, полученное из платежной системы. Отправляется только если система его предоставляет.
surename
Фамилия плательщика, полученная из системы оплаты. Отправляется только если система ее предоставляет.
status
Статус оплаты:
0 - Oплата не произведена
1 - Oплата успешн
2 - Платежное поручение принято, но оплата еще не произведена
3 - Дополнительная информация о платеже
4 - Платеж выполнен, но подтверждение о поступлении средств на счет не отправляется.
test
Параметр, при наличии которого можно тестировать соединение. Оплата не производится и результат возвращается сразу, как будто бы оплата была произведена.
payment_country
Страна способа оплаты. Если способ оплаты доступен в нескольких странах (международный) – параметр не отправляется. Страна предоставляется в двузначном формате (ISO 3166-1 alpha-2), напр.: LT, PL, RU, EE.
payer_ip_country
Страна плательщика, которая определяется по адресу IP плательщика. Страна предоставляется в двузначном формате (ISO 3166-1 alpha-2), напр.: LT, PL, RU, EE.
payer_country
Страна плательщика, которая определяется по стране способа оплаты, а если способ оплаты международный – по адресу IP плательщика. Страна предоставляется в двузначном формате (ISO 3166-1 alpha-2), напр.: LT, PL, RU, EE.
p_email
Адрес эл. почты клиента обязателен. Если адрес не будет получен, клиент получит запрос его указать. На этот адрес эл. почты клиент будет получать сообщения от Paysera о статусе оплаты.
payamount
Сумма (в центах), которую перевели. Может отличаться от указанной, если была конвертирована в другую валюту.
paycurrency
Валюта переведённого платежа (напр. USD, EUR и. т. п.). Может отличаться от той, которую вы запрашивали, если та валюта принята посредством выбранного метода оплаты.
version
Номер версии спецификации (API) платежной системы Paysera.
requestid
Это число запросa который мы получаем, когда человек нажимает на банк и который мы представляем в ссылку в поле "callbackurl".
account
Номер счета, из которого был осуществлен платеж.
personcodestatus
Если вы указали параметр personcode при выполнении запроса, этот параметр указывает, совпадает ли переданный личный код с реальным кодом. Значение:
0 - Личный код пока неизвестен
1 - Личный код совпадает
2 - Личный код не совпадает
3 - Личный код неизвестен
Если личный код неизвестен во время callback, будет произведен еще один callback с параметром status установленным на 3, как только личный код станет известным.
identification_successful
Может быть либо 1, либо 0. Этот параметр возвращается только в том случае, если параметр personcode используется в запросе платежа и только с некоторыми методами УИП. Показывает, успешна ли идентификация клиента.