API интеграции B2B оплат через СБП

Download OpenAPI specification:Download

Support e-mail: ecom@raiffeisen.ru

Подключение к СБП

Для отправки СБП-платежей оставьте заявку в RBO → Продукты → В2В-платежи по СБП.

Тестирование СБП

Для получения тестовых данных для интеграции напишите на ecom@raiffeisen.ru. В ответном письме мы отправим вам токен для авторизации в тестовой среде и два счёта для тестирования сервиса.

Райффайзенбанк выполнит регистрацию. После завершения процесса вы будете оповещены по электронной почте.

Пример кода наложения подписи на языке Java опубликован на GitHub

Одиночные платежи

Сценарий работы с одиночными платежами:

Пакет платежей

Сценарий работы с пакетами платежей:

Авторизация

Для авторизации запросов необходим secretKey - секретный ключ, который используется для межсервисного взаимодействия.

Sandbox: https://pay-test.raif.ru

Production: https://pay.raif.ru

BАЖНО: Секретный ключ необходимо хранить в защищённом месте, нельзя публиковать на сторонних ресурсах или передавать третьим лицам.

Межсервисные запросы авторизуются посредством секретного ключа API (SECRET_KEY). Параметр авторизации указывается в заголовке Authorization, значение которого формируется как "Bearer SECRET_KEY".

Посмотреть боевой publicId и сгенерировать ключи можно в RBO → Прием платежей → Настройки.

Для генерации тестового секретного ключа необходимо обратиться по адресу: ecom@raiffeisen.ru

Методы

Получение данных платёжной ссылки

Authorizations:
BearerAuth
path Parameters
id
required
string <= 32 characters

Уникальный идентификатор платёжной ссылки

Responses

Response samples

Content type
application/json
{
  • "id": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
  • "qrType": "DYNAMIC",
  • "status": {
    },
  • "isTaxable": true,
  • "totalTaxAmount": 2.41,
  • "amount": 8573.79,
  • "paymentPurpose": "Какое-то назначение платежа",
  • "legalName": "ООО Торг",
  • "inn": "4285733785",
  • "brandName": "ООО Торг на Б.Татарской",
  • "address": "г. Москва, ул. Б.Татарская, д.133, стр.1",
  • "bank": {
    },
  • "mcc": {
    },
}

Создание одиночного платежа

Authorizations:
BearerAuth
header Parameters
Content-Digest
required
string
Example: yxlZv97...

Дайджест, подписываемый клиентом, является строкой в формате base64, в которой хранится результат хеш-функции sha256, представленный массивом байт. Подробности создания можно найти в инструкции.

Signature
required
string
Example: MIAGCSqGSIb3D...

Подпись в формате base64, созданная при использовании RBO-сертификата. Подробности создания можно найти в инструкции.

Request Body schema: application/json
required
id
required
string [ 1 .. 40 ] characters ^[A-z0-9-_.]$

Уникальный идентификатор операции

account
required
string = 20 characters ^[0-9]$

Банковский счёт ЮЛ или ИП для списания средств

qrId
required
string <= 32 characters

Уникальный идентификатор платёжной ссылки

isTaxable
boolean

Информация о взимании НДС. Допустимые значения:
• true – облагается НДС
• false – не облагается НДС
Если платеж облагается НДС (isTaxable = "true") обязательно должна быть заполнена сумма НДС в поле totalTaxAmount

totalTaxAmount
number <float> <= 1000000

Сумма НДС в рублях. Если сумма НДС указана в реквизитах платёжной ссылки, то используется значение из этих реквизитов. В противном случае заполняется плательщиком самостоятельно. Сумма НДС не должна превышать сумму операции (amount)

amount
number <float> <= 1000000

Сумма операции в рублях. Если сумма операции указана в реквизитах платёжной ссылки, то используется значение из этих реквизитов. В противном случае заполняется плательщиком самостоятельно. Максимальное значение - 1000000 рублей

paymentPurpose
string <= 210 characters

Назначение платежа, будет отображено в выписке. Если назначение указано в реквизитах платёжной ссылки, то используется значение из этих реквизитов. Иначе, заполняется плательщиком самостоятельно.
Может содержать:
• Символы латинского алфавита (A–Z и a–z) с десятичными кодами из диапазонов [065-090] и [097-122] в кодировке UTF-8;
• Символы русского алфавита (А-Я и а-я) с десятичными кодами из диапазона [1040-1103] в кодировке UTF-8;
• Цифры 0-9 с десятичными кодами из диапазона [048-057] в кодировке UTF-8;
• Специальные символы с десятичными кодами из диапазонов [032-047], [058-064], [091-096], [123-126] в кодировке UTF-8; - Символ «№» под номером 8470 в кодировке UTF-8

extra
object

Дополнительные поля в json-формате

Responses

Request samples

Content type
application/json
{
  • "id": "1a5cbc843b2742be9093",
  • "account": "40817810601002630020",
  • "qrId": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
  • "isTaxable": true,
  • "totalTaxAmount": 2.41,
  • "amount": 8573.79,
  • "paymentPurpose": "Какое-то назначение платежа",
  • "extra": {
    }
}

Response samples

Content type
application/json
{
  • "id": "1a5cbc843b2742be9093",
  • "qrId": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
  • "account": "40700000000000000000",
  • "createDate": "2024-11-07T14:37:57.835Z",
  • "status": {
    },
  • "paymentPurpose": "Какое-то назначение платежа",
  • "isTaxable": true,
  • "totalTaxAmount": 2.41,
  • "amount": 8573.79,
  • "extra": {
    },
  • "receiver": {
    }
}

Получение информации об одиночном платеже

Authorizations:
BearerAuth
path Parameters
id
required
string

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

Responses

Response samples

Content type
application/json
{
  • "id": "1a5cbc843b2742be9093",
  • "qrId": "AS1B001K33DNHAKV2KNBJRQK6KHNQKJ5",
  • "account": "40817810601002630020",
  • "createDate": "2019-08-24T14:15:22Z",
  • "status": {
    },
  • "paymentPurpose": "Какое-то назначение платежа",
  • "isTaxable": true,
  • "totalTaxAmount": 2.41,
  • "amount": 8573.79,
  • "extra": {
    },
  • "receiver": {
    }
}

Создание пакета платежей

Authorizations:
BearerAuth
header Parameters
Content-Digest
required
string
Example: yxlZv97...

Дайджест, подписываемый клиентом, является строкой в формате base64, в которой хранится результат хеш-функции sha256, представленный массивом байт. Подробности создания можно найти в инструкции.

Signature
required
string
Example: MIAGCSqGSIb3D...

Подпись в формате base64, созданная при использовании RBO-сертификата. Подробности создания можно найти в инструкции.

Request Body schema: application/json
required
id
required
string [ 1 .. 40 ] characters ^[A-z0-9-_.]$

Уникальный идентификатор пакета

account
required
string = 20 characters ^[0-9]$

Банковский счёт ЮЛ или ИП для списания средств

required
Array of objects (CreatePaymentRequestWithQr)

Массив платежей

Responses

Request samples

Content type
application/json
{
  • "id": "ee64d393836241dcb557",
  • "account": "40700000000000000000",
  • "transfers": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "ee64d393836241dcb557",
  • "account": "40700000000000000000",
  • "transfers": [
    ]
}

Получение информации о пакете платежей

Authorizations:
BearerAuth
path Parameters
id
required
string [ 1 .. 40 ] characters ^[A-z0-9-_.]$
Example: ee64d393836241dcb557

Уникальный идентификатор пакета

Responses

Response samples

Content type
application/json
{
  • "id": "ee64d393836241dcb557",
  • "account": "40817810601002630020",
  • "transfers": [
    ]
}

Справочник ошибок

Стандартный ответ сервиса содержит код сообщения (code). Если в процессе обработки запроса произойдет логическая ошибка, API вернет описание ошибки (message).

Описание основных ошибок:

HTTP-code code message
400 INVALID_AMOUNT The specified amount is invalid. The QR code requires a different value.
400 INVALID_DATA The request contains invalid fields or values.
400 INVALID_SIGNATURE The provided signature is invalid.
400 INVALID_DIGEST The provided digest is invalid.
400 PAYMENT_ALREADY_SIGNED The payment has already been signed.
400 QR_ALREADY_PAID The QR code has already been paid.
400 QR_EXPIRED The QR code has expired and cannot be processed.
400 MISSING_SIGNATURE_DATA Required signature components are missing from the request.
403 NON_RESIDENT_RECIPIENT This recipient's account cannot be paid.
403 OPERATION_FORBIDDEN The operation is not allowed.
403 DBO_BLOCKED The client does not have an active DBO.
403 SBP_DISABLED The SBP feature is currently disabled.
404 PAYMENT_NOT_FOUND The specified payment was not found.
404 QR_NOT_FOUND The specified QR code was not found.
500 INTERNAL_ERROR An internal error occurred.