Download OpenAPI specification:Download
Для получения тестовых данных для интеграции напишите на ecom@raiffeisen.ru. В ответном письме мы отправим вам токен для авторизации в тестовой среде и два счёта для тестирования сервиса.
Для приёма и / или отправки СБП-платежей оставьте заявку в РБО → Продукты → В2В-платежи по СБП.
Райффайзенбанк выполнит регистрацию. После завершения процесса вы будете оповещены по электронной почте.
Для авторизация запросов необходимы:
Тестовый хост: https://pay-test.raif.ru
Продуктовый хост: https://pay.raif.ru
BАЖНО: Секретный ключ необходимо хранить в защищённом месте, нельзя публиковать на сторонних ресурсах или передавать третьим лицам.
Межсервисные запросы авторизуются посредством секретного ключа API (SECRET_KEY). Параметр авторизации указывается в заголовке Authorization, значение которого формируется как "Bearer SECRET_KEY".
Посмотреть боевой publicId и сгенерировать ключи можно в РБО → Прием платежей → Настройки.
Для генерации тестового секретного ключа необходимо обратиться по адресу: ecom@raiffeisen.ru
Такой запрос требует наличия подписи, выполненной с помощью приватного ключа, выданного банком в личном кабинете РБО.
Post-запрос должен содержать три http-заголовка: Content-Digest
, Signature
а также Authorization
.
Подписываемые данные должны быть представлены в виде json-строки без какого либо форматирования.
Пример:
"{\"account\":\"1234567890\",\"amount\":10.0,\"totalTaxAmount\":0.0,\"paymentPurpose\":\"test\",\"extra\":null}"
Если поле имеет числовой тип, то в json это должно быть именно число, если поле null, то оно также должно присутствовать (пример extra).
Подробная инструкция как подписывать запросы расположена здесь.
Создается только динамическая платёжная ссылка
Authorization required |
id | string <= 35 characters ^[A-z0-9-_.]+$ Идентификатор заказа. Если не передан, то генерируется банком самостоятельно |
name | string Наименование платёжной ссылки |
account required | string = 20 characters Банковский счёт ЮЛ или ИП для зачисления средств |
amount required | number <float> <= 1000000 Сумма операции в рублях. Максимальное значение - 1000000 рублей |
totalTaxAmount | number or null <float> <= 1000000 Сумма НДС в рублях. Не должна превышать значение суммы операции (amount). Заполняется в случае если взимается налог, в противном случае null |
expirationDate | string <yyyy-MM-ddTHH:mm:ss±HH:mm / +nM / +nm> Срок жизни заказа |
receiverPaymentPurpose | string <= 100 characters Назначение платежа, которое увидит получатель в выписке в поле «Основание операции» вместе с инн плательщика.
|
senderPaymentPurpose required | string <= 210 characters Назначение платежа, которое увидит плательщик при оплате. Поле обязательное. |
redirectUrl | string <= 1024 characters Cсылка для автоматического возврата плательщика из приложения банка в приложение или на сайт ТСП. Допускаются только символы в кодировке ASCII. Формат должен соответствовать спецификации RFC-3986 |
extra | object Дополнительные поля. Словарь с ключами и значениями типа String |
object or null Ограничения к заказу |
Запрос на создание заказа без указания ограничений Отсутствует блок restrictions
{- "id": "281000670LSS7DN18SJQDNP4B05KLJL2",
- "name": "QR на оплату 25.09.2024 в 15:12",
- "account": "40817810601002630000",
- "amount": 7.45,
- "totalTaxAmount": 1.25,
- "expirationDate": "2024-08-12T20:35:55+03:00",
- "receiverPaymentPurpose": "Какое-то назначение платежа",
- "senderPaymentPurpose": "Какое-то назначение платежа",
- "extra": {
- "additionalInfo": "testing operation"
}
}
Ответ на создание заказа без указания ограничений Отсутствует блок restrictions
{- "id": "281000670LSS7DN18SJQDNP4B05KLJL2",
- "account": "40817810601002630000",
- "amount": 8573.79,
- "totalTaxAmount": 2.41,
- "createdDate": "2024-06-12T19:35:55+03:00",
- "expirationDate": "2024-08-12T20:35:55+03:00",
- "status": "ACTIVE",
- "receiverPaymentPurpose": "Какое-то назначение платежа",
- "senderPaymentPurpose": "Какое-то назначение платежа",
- "extra": {
- "additionalInfo": "testing operation"
}, - "qr": {
- "id": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
- "name": "QR на оплату 25.09.2024 в 15:12",
- "type": "DYNAMIC",
}
}
id required | string Уникальный идентификатор заказа (поле id из ответа на запрос создания заказа) |
Authorization required |
Ответ на создание заказа без указаниям ограничений Отсутствует блок restrictions
{- "id": "281000670LSS7DN18SJQDNP4B05KLJL2",
- "account": "40817810601002630000",
- "amount": 8573.79,
- "totalTaxAmount": 2.41,
- "createdDate": "2024-06-12T19:35:55+03:00",
- "expirationDate": "2024-08-12T20:35:55+03:00",
- "status": "ACTIVE",
- "receiverPaymentPurpose": "Какое-то назначение платежа",
- "senderPaymentPurpose": "Какое-то назначение платежа",
- "extra": {
- "additionalInfo": "testing operation"
}, - "qr": {
- "id": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
- "name": "QR на оплату 25.09.2024 в 15:12",
- "type": "DYNAMIC",
}
}
Authorization required |
qrType required | string Enum: "DYNAMIC" "STATIC" Тип платёжной ссылки. Возможные значения: |
qrName | string <= 255 characters Наименование платёжной ссылки |
account required | string = 20 characters Банковский счёт ЮЛ или ИП для зачисления средств |
takeTax required | boolean Информация о взимании НДС. Допустимые значения: |
totalTaxAmount | number <float> <= 1000000 Сумма НДС в рублях. Поле не заполняется при takeTax = "false". Поле обязательное при qrType = "DYNAMIC" И takeTax = "true". Не должна превышать значение суммы операции (amount) |
amount | number <float> <= 1000000 Сумма операции в рублях. Поле обязательное при qrType = "DYNAMIC" ИЛИ qrType = "STATIC" И takeTax = "true" И totalTaxAmount не пустое значение. Максимальное значение - 1000000 рублей |
paymentPurpose | string <= 210 characters Назначение платежа. Поле обязательное при qrType = "DYNAMIC". |
expirationDate | string <date-time> Срок жизни платёжной ссылки. Поле не заполняется при qrType = "STATIC". Если указывается в минутах, то не может быть меньше 1 минуты. Максимальное значение - 90 суток. Если параметр не передан, то по умолчанию QR будет действителен 3 суток. После истечения срока действия QR-кода оплату по нему провести нельзя. |
redirectUrl | string <= 1024 characters Cсылка для автоматического возврата плательщика из приложения банка в приложение или на сайт ТСП. Допускаются только символы в кодировке ASCII. Формат должен соответствовать спецификации RFC-3986 |
orderId | string <= 35 characters ^[A-z0-9-_.]+$ УИП (уникальный идентификатор платежа). Поле не заполняется при qrType = "STATIC" |
extra | object Дополнительные поля. Словарь с ключами и значениями типа String |
{- "qrType": "DYNAMIC",
- "qrName": "Оплата услуги",
- "account": "40817810601002630020",
- "takeTax": true,
- "totalTaxAmount": 2.41,
- "amount": 8573.79,
- "paymentPurpose": "Какое-то назначение платежа",
- "expirationDate": "2019-08-24T14:15:22Z",
- "orderId": "281000670LSS7DN18SJQDNP4B05KLJL2",
- "extra": {
- "additionalInfo": "testing operation"
}
}
{- "qrId": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
- "qrType": "DYNAMIC",
- "qrName": "Оплата услуги",
- "account": "40817810601002630020",
- "takeTax": true,
- "totalTaxAmount": 2.41,
- "amount": 8573.79,
- "paymentPurpose": "Какое-то назначение платежа",
- "creationDate": "2019-08-24T14:15:22Z",
- "expirationDate": "2019-08-24T14:15:22Z",
- "orderId": "281000670LSS7DN18SJQDNP4B05KLJL2",
- "qrStatus": "CREATED",
- "extra": {
- "additionalInfo": "testing operation"
}
}
page | integer <int32> Default: 1 Номер страницы |
size | integer <int32> Default: 20 Количество отображаемых платёжных ссылок |
fromDate | string <date> Дата начала периода фильтрации по дате создания платёжной ссылки |
toDate | string <date> Дата окончания периода фильтрации по дате создания платёжной ссылки |
qrStatus | string Enum: "CREATED" "EXPIRED" "PAID" Статус платёжной ссылки |
qrType | string Enum: "DYNAMIC" "STATIC" Тип платёжной ссылки |
search | string Поле для поиска по наименованию платёжной ссылке или по сумме операции |
Authorization required |
{- "data": [
- {
- "qrId": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
- "qrType": "DYNAMIC",
- "qrName": "Оплата услуги",
- "account": "40817810601002630020",
- "takeTax": true,
- "totalTaxAmount": 2.41,
- "amount": 8573.79,
- "paymentPurpose": "Какое-то назначение платежа",
- "creationDate": "2019-08-24T14:15:22Z",
- "expirationDate": "2019-08-24T14:15:22Z",
- "orderId": "281000670LSS7DN18SJQDNP4B05KLJL2",
- "qrStatus": "CREATED",
- "extra": {
- "additionalInfo": "testing operation"
}
}
], - "meta": {
- "page": "1",
- "size": "20",
- "hasNext": true,
- "count": "14"
}
}
qrId required | string Уникальный идентификатор платёжной ссылки |
Authorization required |
{- "qrId": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
- "qrType": "DYNAMIC",
- "qrName": "Оплата услуги",
- "account": "40817810601002630020",
- "takeTax": true,
- "totalTaxAmount": 2.41,
- "amount": 8573.79,
- "paymentPurpose": "Какое-то назначение платежа",
- "creationDate": "2019-08-24T14:15:22Z",
- "expirationDate": "2019-08-24T14:15:22Z",
- "orderId": "281000670LSS7DN18SJQDNP4B05KLJL2",
- "qrStatus": "CREATED",
- "extra": {
- "additionalInfo": "testing operation"
}
}
Для информирования клиента о проведённых платежах могут использоваться HTTP-уведомления на адрес, указанный в его настройках.
Боевой адрес можно указать в личном кабинете во вкладке "Прием платежей"
Также адрес для тестовой и боевой среды можно указать с помощью метода в API.
Для партнёра уведомление представляет собой входящий POST-запрос, который использует JSON-структуру.
Уведомление считается принятым, если получатель ответил на запрос кодом HTTP 200.
Ответы с любыми другими HTTP-кодами будут считаться невалидными. Повторные попытки отправки будут проводиться в течение суток с нарастающим интервалом.
Для проверки подлинности уведомления по QRStatic и QRDynamic к данным добавляется подпись в заголовке X-Api-Signature-SHA256
, полученная на основе общего секретного ключа и контрольной строки id|qr.id|payment.id|payment.status.value|payment.amount|payment.status.date
с помощью HMAC-SHA-256.
Необходимо проверять сумму для проверки корректности уведомления.
Уведомления отправляются с IP 193.28.44.23
event | string Value: "B2B_PAYMENT" Тип операции |
object |
{- "event": "B2B_PAYMENT",
- "data": {
- "id": "281000670LSS7DN18SJQDNP4B05KLJL2",
- "account": "40817810601002630020",
- "amount": 8573.79,
- "totalTaxAmount": 2.41,
- "createdDate": "2024-06-12T19:35:55+03:00",
- "expirationDate": "2024-08-12T20:35:55+03:00",
- "status": "PAID",
- "receiverPaymentPurpose": "Какое-то назначение платежа",
- "senderPaymentPurpose": "Какое-то назначение платежа",
- "extra": {
- "additionalInfo": "testing operation"
}, - "qr": {
- "id": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
- "name": "QR на оплату 14.10.2024 в 15:12",
- "type": "DYNAMIC",
}, - "payment": {
- "id": 123456789012345680,
- "sbpTransactionId": "PMSHT0BYVSYE7LDXMCXJSGIUHJLQWZXY",
- "status": {
- "value": "SUCCESS",
- "date": "2024-06-12T19:36:55+03:00"
}, - "amount": 8573.79,
- "totalTaxAmount": 2.41,
- "sender": {
- "legalName": "ООО Ромашка",
- "inn": "123456789012",
- "account": "40817810601002630012",
- "bank": {
- "id": 100000000007,
- "name": "Райффайзенбанк",
- "bic": "044525700"
}
}
}
}
}
Для подписи уведомлений будет использоваться ключ из заголовка авторизации.
Authorization required |
callbackUrl required | string URL для приёма уведомлений |
{
}
{
}
Реестры по платежам отправляются на ежедневной, еженедельной, ежемесячной основе, в зависимости от выставленной настройки. В РБО -> Прием платежей -> Реестры
Инструкция по настройке реестров
В случае отсутствия операций за день, реестр на следующий день не отправляется.
Формат реестра:
Наименование колонки | Значение |
---|---|
Мерчант | Идентификатор в системе СБП |
Дата операции МСК | Дата и время проведения операции (МСК) |
ID платежной ссылки | Уникальный идентификатор платежной ссылки (qrId) |
ID операции | Внутренний идентификатор платежа |
ID операции НСПК | Идентификатор операции в системе НСПК |
ID заказа | Уникальный идентификатор заказа в системе партнёра |
Основание операции в выписке | Назначение платежа в выписке получателя |
Назначение платежа | Расширенное Назначение Платежа |
Сумма | Сумма Операции |
НДС | Сумма НДС |
Дополнительные поля | Дополнительные поля, указанные получателем (extra) |
Комиссия | Комиссия за транзакцию |
Наименования плательщика | Наименование Юридического Лица Плательщика |
Банковский счёт плательщика | Номер банковского счета Плательщика |
ИНН плательщика | Идентификационный номер налогоплательщика Плательщика |
ID банка плательщика | Идентификатор Банка Плательщика |
Наименование банка плательщика | Наименование Банка Плательщика |
Бик банка плательщика | Банковский Идентификационный Код Банка Плательщика |