API уведомлений

API уведомлений позволяет получать оповещения о событиях на счете. Заказать уведомления на конкретный URL-адрес можно на странице Paysera в настройках счетов. В настройках счетов можно указать один и более адресов для уведомлений, а также условия для отправки таких уведомлений.

Если вы используете язык программирования PHP, можете воспользоваться библиотекой NotificationPhpClient.

Структура уведомления

Запрос POST выполняется для каждого события на указанные вами адреса. Передаются 2 параметра:

  • data - кодированные данные о событии;
  • sign - кодированная подпись параметра data.

Чтобы обработать полученное уведомление, вам необходимо проверить действительность параметра sign, затем декодировать параметр data.

Оба параметра кодируется методом кодирования base64. После кодировки символ + заменяется на -, символ / заменяется на _. Для декодирования параметров необходимо применить обратные действия:

  1. Символ - заменяется на +, символ _ заменяется на /;
  2. Декодирование производится методом base64.

Подпись параметра data осуществляется ключом RSA с помощью алгоритма хеширования SHA1. Сертификат, соответствующий ключу для подписи, можно скачать по этой ссылке:

https://www.paysera.com/download/public.key

Перед кодированием в формате base64 и заменой специальных символов данные о событии кодируются в формате "application/x-www-form-urlencoded". Для получения массива данных используйте декодирование формата "application/x-www-form-urlencoded".

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

<?php

$publicKey = loadFromWeb();
$sign = $_POST['sign'];
$data = $_POST['data'];

$signReplaced = strtr($sign, array('-' => '+', '_' => '/'));
$signDecoded = base64_decode($signReplaced);
if (openssl_verify($data, $signDecoded, $publicKey, OPENSSL_ALGO_SHA1) === 1) {
    $dataReplaced = strtr($data, array('-' => '+', '_' => '/'));
    $dataDecoded = base64_decode($dataReplaced);
    parse_str($dataDecoded, $params);

    // use $params

    echo 'OK';
}

				
Инфо Если вы используете язык PHP, воспользуйтесь предоставленной библиотекой, которая выполняет декодирование автоматически.
Инфо В случае успешной обработки скрипт Callback должен начинаться или быть равным “OK”.

Значения, использованные в примере

$sign
QRRnBKqW5agE8_xYxG-E-72lDj0q8M16Tcof-1LvzXCl_vY_rkCBkevy5y4V4UlwyC3vYwuPAVqZDzQtxvl6svlLpG7Lhl55MzOPNajOokzNza5LTiMLX77XuRyVd1JWxqIoWi9NmXrvJizoQwFJXSqDai7cULX0LSEHL5dSQIsZST27jBFVrRUbuGQO1d67eRuSh_s6ybqnbGH--Ti_xdhkhZNOVn2pHFvhNtSNp0iFdcHMEELIMpkCe-07ouO9cvGGmXUXSiMlLyrfJZ-kpaAvTC_GDzq5crE0hXFp-OkkAinAWun0-LmZOEZsYFUbBv8xQ8YuNI5-11wwS2W33g==
$signReplaced
QRRnBKqW5agE8/xYxG+E+72lDj0q8M16Tcof+1LvzXCl/vY/rkCBkevy5y4V4UlwyC3vYwuPAVqZDzQtxvl6svlLpG7Lhl55MzOPNajOokzNza5LTiMLX77XuRyVd1JWxqIoWi9NmXrvJizoQwFJXSqDai7cULX0LSEHL5dSQIsZST27jBFVrRUbuGQO1d67eRuSh/s6ybqnbGH++Ti/xdhkhZNOVn2pHFvhNtSNp0iFdcHMEELIMpkCe+07ouO9cvGGmXUXSiMlLyrfJZ+kpaAvTC/GDzq5crE0hXFp+OkkAinAWun0+LmZOEZsYFUbBv8xQ8YuNI5+11wwS2W33g==
$signDecoded
Agªâ€“å¨óüXÄo„û½¥=*ðÍzMÊûRïÍp¥þö?®@‘ëòç.áIpÈ-ïcZâ„¢4-Æùz²ùK¤nˆ^y335¨Î¢LÍÍ®KN#_¾×¹•wRVÆ¢(Z/Mâ„¢zï&,èCI]*Æ’j.ÜPµô-!/—R@‹I=»Å’U­¸dÕÞ»y’‡û:ɺ§laþù8¿ÅØd…“NV}©[á6ԍ§H…uÁÌBÈ2â„¢{í;¢ã½rñ†™uJ#%/*ß%Ÿ¤¥ /L/Æ:¹r±4…qiøé$)ÀZéôø¹â„¢8Fl`Uÿ1CÆ.4Ž~×\0Ke·Þ
$data
dHlwZT1NSyZjcmVkaXQ9MSZhY2NvdW50PUVWUDAwMDAwMDAwMDAwMDEmYW1vdW50PTIzLjA5JmN1cnJlbmN5PUVVUiZwYXllcl9hY2NvdW50PUVWUDAwMDAwMDAwMDAwMDImZGV0YWlscz1EZXRhaWxzJnRyYW5zZmVyX2lkPTk5OTk5OTk5JnN0YXRlbWVudF9pZD0xMjM0NTY3ODk=
$dataReplaced
dHlwZT1NSyZjcmVkaXQ9MSZhY2NvdW50PUVWUDAwMDAwMDAwMDAwMDEmYW1vdW50PTIzLjA5JmN1cnJlbmN5PUVVUiZwYXllcl9hY2NvdW50PUVWUDAwMDAwMDAwMDAwMDImZGV0YWlscz1EZXRhaWxzJnRyYW5zZmVyX2lkPTk5OTk5OTk5JnN0YXRlbWVudF9pZD0xMjM0NTY3ODk=
$dataDecoded
type=MK&credit=1&account=EVP0000000000001&amount=23.09&currency=EUR&payer_account=EVP0000000000002&details=Details&transfer_id=99999999&statement_id=123456789
$params
array(8) {
    ["type"]=>
    string(2) "MK"
    ["credit"]=>
    string(1) "1"
    ["account"]=>
    string(16) "EVP0000000000001"
    ["amount"]=>
    string(5) "23.09"
    ["currency"]=>
    string(3) "EUR"
    ["payer_account"]=>
    string(16) "EVP0000000000002"
    ["details"]=>
    string(7) "Details"
    ["transfer_id"]=>
    string(8) "99999999"
    ["statement_id"]=>
    string(9) "123456789"
}
            

Параметры события

После проверки подписи и декодирования параметра data, вы получите информацию о событии. Если хотя бы один из параметров пуст, он не будет включен в ряд символов, кодированных в формате "application/x-www-form-urlencoded".

Название параметра Значение Пример
type Всегда отображается. Один из идентификаторов типа (см. ниже) MK
credit 1 входящие средства, 0 исходящие. Не отображается при конвертации валюты 1
account Номер счета. Является предметом события EVP0000000000001
amount Сумма входящих/исходящих средств. Всегда положительное значение. Десятая часть отделяется точкой (“.”) Не отображается в случае конвертации валюты 29.99
currency Валюта перевода. Всегда отображается с параметром amount EUR
from_amount Отображается только в случае конвертации валюты. Сумма исходящих средств 10.00
from_currency Всегда отображается с параметром from_amount EUR
to_amount Отображается при конвертации валюты. Сумма входящих средств 34.54
to_currency Всегда отображается с параметром to_amount EUR
beneficiary_name Только для исходящих переводов. Имя получателя средств. Не отображается, если неизвестно John Smith
beneficiary_code Только для исходящих переводов. Код получателя средств (физического или юридического лица). Не отображается, если неизвестен 38001010000
beneficiary_account Только для исходящих переводов. Номер счета получателя средств LT001100000111100000
payer_name Только для входящих платежей. Имя плательщика. Не отображается, если неизвестно John Smith
payer_code Только для входящих платежей. Код плательщика (физического или юридического лица). Не отображается, если неизвестен 38001010000
payer_account Только для входящих платежей. Номер счета плательщика. Не отображается, если неизвестен LT001100000111100000
details Информация перевода Payment for request no. 123456
transfer_id Уникальный идентификатор перевода в нашей системе 123456
reference_number Код платежа. Не отображается, если неизвестен AB12345
reference_to_beneficiary Код клиента в информационной системе получателя. Не отображается, если неизвестен AB12345
reference_to_payer Код клиента в информационной системе плательщика. Не отображается, если неизвестен AB12345
statement_id Уникальный идентификатор уведомлений перевода в нашей системе
Bажно. Убедитесь, что сообщение не было получено до этого, сохраните этот номер
123456789
created_at Дата создания перевода 1448615390

Идентификаторы типов

MK Платеж
HO Пополнение счета. Отображается только когда системе точно известно, что счет был пополнен уполномоченным лицом.
FX Конвертация валюты
MM Другая операция