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

Если это возможно (на Вашем сервере есть PHP с необходимой версией), мы настоятельно рекомендуем использовать библиотеку libwebtopay для генерации запросов и обработки обратных вызовов.

Структура запроса данных

Данные формы посылайте методом Get или POST по адресу: https://www.paysera.com/pay/

Всегда отправляются 2 поля: data и sign.

Пример URL-адреса: https://www.paysera.com/pay/?data=ваш_DATA_параметр&sign=ваш_SIGN_параметр

Создание полей из параметров

  1. Все параметры объединяются в строку URL-encoded. Например:
    ['param1' => 'abc', 'param2' => 'Some string with symbols %=&']
    'param1=abc&param2=Some+string+with+symbols+%25%3D%26'
    
    На языке PHP это делается с помощью функции http_build_query
  2. Полученная строка кодируется кодировкой base64. Например:
    'param1=abc&param2=Some+string+with+symbols+%25%3D%26'
    'cGFyYW0xPWFiYyZwYXJhbTI9U29tZStzdHJpbmcrd2l0aCtzeW1ib2xzKyUyNSUzRCUyNg=='
    
    На языке PHP это делается с помощью функции base64_encode
  3. В полученной закодированной строке символы «/» заменяются на «_», символы «+» на «-». Мы получаем кодировку, похожую на base64, которую безопасно пересылать через URL без дальнейшей обработки. Например:
    'MViDYlV7V0iHR2w2OkJjRFFpY11hizJDhk+EZjl/'
    'MViDYlV7V0iHR2w2OkJjRFFpY11hizJDhk-EZjl_'
    
    На языке PHP это делается с помощью функции str_replaceили strtr.
  4. Строка окончательного результата подписывается – создается параметр sign. Алгоритм для создания параметра sign:
    sign = md5(data + password)
    Здесь md5 криптографическая хеш-функция, data - кодированные параметры, password - ваш пароль проекта.

Дополнительные параметры для повторяющихся платежей PIS

Есть возможность создать повторяющиеся платежи, указав в запросе дополнительные данные. После этого банк будет выполнять платеж PIS автоматически по заданному периоду и периодичности. Только несколько банков предоставляют такую возможность: SEB и Swedbank

Параметр
Длина
Обязателен
Описание
Если предусмотрен способ оплаты УИП, можно добавить дополнительные параметры для осуществления периодического платежа:
periodic_payments_frequency
255
Нет
Частота, с которой будет осуществляться периодический платёж.

Варианты частоты платежей для всех доступных способов периодических платежей:
weekly
monthly
quarterly
semiannual
annual

Варианты частоты платежей для некоторых доступных способов периодических платежей:
daily
every_working_day
last_day_of_month
last_working_day_of_month

periodic_payments_start_date
10
Нет
Дата начала периодических платежей.
Формат даты должен быть yyyy-mm-dd.
periodic_payments_end_date
10
Нет
Дата окончания периодических платежей.
Формат даты должен быть yyyy-mm-dd.

Параметры запроса

Параметр
Длина
Обязателен
Описание
projectid
11
Да
Уникальный номер проекта. Оплаты могут производиться только в рамках утверждённого проекта.
orderid
40
Да
Номер заказа из Вашей системы.
accepturl
255
Да
Полный Интернет адрес (URL), куда направляется клиент после оплаты.
Продавец не должен полагаться на accepturl для подтверждения заказа. Подтверждение заказа со стороны продавца должно осуществляться посредством callbackurl.
cancelurl
255
Да
Полный Интернет адрес (URL), куда направляется клиент после нажатия линка вернуться в магазин.
callbackurl
255
Да
Полный Интернет адрес (URL), на который продавцу передаётся информация об осуществленном платеже.

Скрипт должен вернуть текст "OK". Только тогда наша система сможет зафиксировать факт успешного информирования об оплате.

Если ответа "OK" нет, то сообщение отправляется 4 раза (сразу после получения, спустя час, спустя три часа и спустя сутки).
version
9
Да
Номер версии спецификации (API) платежной системы Paysera.
lang
3
Нет
Можно указать язык пользователя (ISO 639-2/B: LIT, RUS, ENG и. т. п.). Если Paysera не поддерживает данного языка, язык будет выбран либо по IP адресу посетителя, либо по умолчанию будет использоваться англ. язык.
amount
11
Нет
Сумма (в центах), которую должен оплатить клиент.
currency
3
Нет
Валюта (напр. USD, EUR и. т. п.), в которой вы предпочитаете получать платежи клиента. Если указанная валюта не может быть принята посредством выбранного метода оплаты, система автоматически конвертирует сумму в поддерживаемую валюту по курсу текущего дня. В ответе на Ваш сайт будут переданы payamount и paycurrency.
payment
20
Нет
Способ оплаты. Если указан, платеж будет осуществлен с помощью указанного способа оплаты. Если не указан, плательщику будет немедленно предоставлена таблица с доступными способами оплаты. Вы можете получить способы оплаты в реальном времени используя библиотеку WebToPay.
country
2
Нет
Страна плательщика (LT, EE, LV, GB, PL, DE). Указав страну, плательщику сразу же предоставляются те способы оплаты, которые возможны в данной стране. Если страна не указана, система по IP адресу посетителя установит его страну. Плательщику предоставляется возможность поменять страну.
paytext
255*
Нет
Реквизиты платежа, которые видны при переводе. Не указав реквизитов, по умолчанию используется следующий текст:
Оплата за товары и услуги (за нр. [order_nr]) ([site_name]).

Если реквизиты платежа указаны, необходимо внести следующие переменные, которые в конечном тексте назначения будут заменены соответствующими значениями:

[order_nr] - номер заказа.
[site_name] или [owner_name] - адрес сайта или название предприятия.
p_firstname
255
Нет
Имя покупателя. Желательно для большинства методов оплаты. Обязательно для некоторых методов оплаты
p_lastname
255
Нет
Фамилия покупателя. Желательна для большинства методов оплаты. Обязательна для некоторых методов оплаты.
p_email
255
Нет
Адрес эл. почты клиента обязателен. Если адрес не будет получен, клиент получит запрос его указать. На этот адрес эл. почты клиент будет получать сообщения от Paysera о статусе оплаты.
p_street
255
Нет
Адрес покупателя, на который будут отправляться товары (напр. Pilaitės pr. 16). Желателен. Обязателен для некоторых методов оплаты.
p_city
255
Нет
Город покупателя, в который будут отправляться товары (напр. Vilnius). Желателен. Обязателен для некоторых методов оплаты.
p_state
255
Нет
Код штата покупателя (обязателен только при покупке в США). Желателен. Обязателен для некоторых методов оплаты.
p_zip
20
Нет
Почтовый код покупателя. Почтовые коды Литвы можно найти здесь . Обязателен для некоторых методов оплаты.
p_countrycode
20
Нет
Код страны покупателя. Коды стран можно найти здесь . Обязателен для некоторых методов оплаты.
test
1
Нет
Параметр, при наличии которого можно тестировать соединение. Оплата не производится и результат возвращается сразу, как будто бы оплата была произведена. Для того, чтобы протестировать, необходимо активировать режим теста возле выбранного проекта. Путь: "Проекты и деятельность" -> "Мои проекты" -> "Настройки проекта" -> "Настройки услуги по сбору платежей" -> "Разрешить тестовые платежи" (отметить).
only_payments
0
Нет
Показывать разделенный запятыми список способов оплаты.
disallow_payments
0
Нет
Не показывать разделенного запятыми списка способов оплаты.
time_limit
19
Нет
Параметр, при наличии которого можно тестировать соединение. Датa предоставляется в форматe "yyyy-mm-dd HH:MM:SS". Минимальное значение - за 15 минут от текущего времени, максимальное - 3 дня. Примечание: работает только с определенными способами оплаты.
personcode
255
Нет
Этот параметр можно использовать для идентификации пользователя. Если идентификационный номер пользователя передается, вместе с callback Paysera вернет параметр personcodestatus, который укажет совпадает ли личный код пользователя с переданным. Чтобы включить эту функцию, войдите в свой Проект, перейдите в Проекты и деятельность → Мои проекты → Настройки проекта → Настройки услуги по сбору платежей и установите флажок "Для сбора платежей в рамках услуги инициирования платежа необходимо, чтобы плательщик предоставил свой идентификационный номер (личный код).".
developerid
11
Нет
В случае, если Вы в нашей системе отмечены как разработчик (developer), Вы должны в своем установленном проекте (проектах) передавать этот параметр. Значение параметра - Ваш уникальный номер пользователя.
buyer_consent
1
Нет

Может иметь значение 0 или 1. Если установлено значение 1, плательщик может пропустить дополнительный шаг, на котором ему необходимо принять согласие с использованием платежа PIS.. Если используется этот параметр, на вашу страницу необходимо добавить дополнительный текст:

Текст согласия покупателя на других языках, представленный под таблицей**

Если указан метод оплаты УИП, можно указать дополнительные параметры чтобы получить платеж на указанный IBAN счёт:
beneficiary_country
255
Нет
Страна получателя (напр. LT, EE, LV, GB, PL, DE...). Необходимо для некоторых PIS методов оплаты.
beneficiary_town
255
Нет
Город получателя (напр. Vilnius). Необходимо для некоторых PIS методов оплаты.
beneficiary_street
255
Нет
Улица получателя (напр. Pilaitės pr. 16). Необходимо для некоторых PIS методов оплаты.
beneficiary_building
255
Нет
Номер дома получателя. Необходимо для некоторых PIS методов оплаты.
beneficiary_postcode
255
Нет
Почтовый индекс получателя. Необходимо для некоторых PIS методов оплаты.
beneficiary_country_subdivision
255
Нет
Регион получателя. Необходимо для некоторых PIS методов оплаты.
beneficiary_bank_name
255
Нет
Название банка получателя. Необходимо для некоторых PIS методов оплаты.
beneficiary_name
255
Нет
Имя получателя. Необходимо для некоторых PIS методов оплаты.
beneficiary_iban
255
Нет
Номер IBAN счёта получателя, на который будет осуществляться перевод. Необходимо для некоторых PIS методов оплаты.
beneficiary_bic
255
Нет
BIC/Swift код. Необходимо для некоторых PIS методов оплаты.

* Окончательная длина может варьироваться в зависимости от спецификации типа оплаты

** Текст согласия покупателя:

Callback

Для получения дополнительной информации о 'callback' смотрите раздел - Callback .