forked from apoloz/alfa-bank-sdk
9788 lines
373 KiB
XML
9788 lines
373 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<qr_payout>
|
||
<_0_full_md>
|
||
< |
|
||
|
||
#### Особенности обработки ошибок
|
||
* Каждый ответ содержит поле `ErrorCode`.
|
||
* При возникновении логической ошибки описание возвращается в поле `message`.
|
||
|
||
---
|
||
|
||
## 2. Процесс аутентификации
|
||
|
||
Для работы со шлюзом (и на тестовой, и на промышленной среде) используется двусторонняя аутентификация **MTLS** и подпись тела запроса.
|
||
|
||
### 2.1. Генерация сертификатов (Self-signed)
|
||
Клиент должен самостоятельно сгенерировать ключевую пару RSA для подписи запросов.
|
||
|
||
**Команда OpenSSL:**
|
||
```bash
|
||
openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 3650
|
||
```
|
||
|
||
**Рекомендуемые параметры заполнения:**
|
||
* **Country (RU)**, **City (Moscow)**, **Organization (Ваша компания)**.
|
||
* **Common Name:** Company Pay C2B.
|
||
* **Срок действия:** не менее 10 лет.
|
||
* **Длина ключа:** 2048 или 4096 бит.
|
||
|
||
### 2.2. Регистрация в банке
|
||
Файл `client.crt` необходимо отправить на [acquiring@alfabank.ru](mailto:acquiring@alfabank.ru).
|
||
|
||
**Шаблон письма:**
|
||
> **Тема:** Регистрация сертификата на [тестовом/промышленном] стенде СБП C2B
|
||
>
|
||
> **Тело:**
|
||
> Просим зарегистрировать сертификат для работы с СБП C2B.
|
||
> * **Тип регистрации:** Впервые / Повторно (взамен истёкшего alias...)
|
||
> * **Организация:** [Название]
|
||
> * **ИНН:** [Номер]
|
||
> * **Вложение:** client.crt (в архиве без пароля)
|
||
|
||
### 2.3. Что вы получите от банка
|
||
После регистрации банк предоставит:
|
||
1. **Alias** — имя вашего сертификата (передается в заголовке `key-name`).
|
||
2. **Клиентский сертификат RSA/TLS** — для поднятия MTLS-соединения.
|
||
3. **Корневые сертификаты банка** — для проверки серверного сертификата.
|
||
4. **TermNo** — тестовый номер терминала.
|
||
5. **Эндпойнт** — для промышленной среды.
|
||
|
||
---
|
||
|
||
## 3. Техническая реализация запроса
|
||
|
||
### 3.1. Формирование заголовков (Headers)
|
||
При каждом запросе необходимо передавать следующие заголовки:
|
||
|
||
| Заголовок | Значение |
|
||
| :--- | :--- |
|
||
| `Content-Type` | `application/x-www-form-urlencoded` |
|
||
| `Authorization` | Base64-строка зашифрованного хеша (см. ниже) |
|
||
| `key-name` | Ваш **Alias**, полученный от банка |
|
||
|
||
### 3.2. Подпись сообщения (Security)
|
||
Процесс формирования заголовка `Authorization`:
|
||
|
||
1. **Подготовка данных:** Сформируйте JSON-тело запроса. Исключите все пробелы, табуляции и переносы строк между ключами и значениями.
|
||
2. **Вычисление хеша и подпись:**
|
||
```bash
|
||
# Расчет SHA256 и подпись приватным ключом
|
||
openssl dgst -sha256 -sign client.key -out signature.txt block.txt
|
||
```
|
||
3. **Кодирование в Base64:**
|
||
```bash
|
||
# Получение строки для заголовка Authorization
|
||
base64 signature.txt > signature64.txt
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Тестирование
|
||
|
||
### 4.1. Эндпойнт тестовой среды
|
||
`https://217.12.103.132:2443/fsCryptoProxy`
|
||
|
||
### 4.2. Пример запроса (GetQRCd)
|
||
**Body:**
|
||
```json
|
||
{
|
||
"command":"GetQRCd",
|
||
"TermNo":"90080567",
|
||
"qrcType":"01",
|
||
"amount":"100",
|
||
"currency":"RUB",
|
||
"paymentPurpose":"Назначение платежа"
|
||
}
|
||
```
|
||
|
||
> **Важно по полю `paymentPurpose`:**
|
||
> * Макс. длина: 140 символов.
|
||
> * Допустимы: Латиница, Кириллица (кроме Ё/ё), цифры и спецсимволы.
|
||
> * Перенос строки передается как `\\n` (двойной слэш для JSON).
|
||
|
||
### 4.3. Как провести тестовую оплату
|
||
1. Сгенерируйте QR-код через API.
|
||
2. Откройте на смартфоне: [testpay.alfabank.ru/sbp-page](https://testpay.alfabank.ru/sbp-page).
|
||
3. Нажмите **"Сканировать QR"** и наведите камеру на код.
|
||
4. Нажмите **"Произвести оплату"**. Выбор банка не требуется.
|
||
|
||
---
|
||
|
||
## 5. Статусы и уведомления
|
||
|
||
### Получение статуса платежа
|
||
Существует два способа:
|
||
1. **Запрос `GetQRCstatus`:** Опрос шлюза клиентом.
|
||
2. **Callback-уведомления:** ПШ банка отправляет POST-запрос на ваш сервер.
|
||
|
||
### Настройка Callback
|
||
* Сервер ТСП должен быть публичным (HTTPS, порт 443).
|
||
* IP-адреса банка для белого списка: `217.12.97.124`, `217.12.101.32`.
|
||
* Для включения отправьте URL обработчика на [acquiring@alfabank.ru](mailto:acquiring@alfabank.ru).
|
||
|
||
### Лимиты на тестовой среде (`GetQRCstatus`)
|
||
* **Лимит ТСП:** не более 4 запросов в минуту.
|
||
* **Общий лимит НСПК:** 60 запросов в минуту на весь банк.
|
||
* При превышении возвращается ошибка `429 Too Many Requests`.
|
||
|
||
---
|
||
|
||
## 6. Переход в промышленную среду (Production)
|
||
|
||
Для выхода в "бой" необходимо:
|
||
1. Заключить договор по СБП с Альфа-Банком.
|
||
2. Сгенерировать новую ключевую пару для промышленной среды.
|
||
3. Направить письмо на регистрацию (аналогично тестовой, но с пометкой "промышленный стенд").
|
||
4. Срок предоставления доступов — **до 3 рабочих дней**.
|
||
|
||
## Общие положения
|
||
|
||
### Техническая документация СБП: Общие положения
|
||
|
||
Данный документ описывает принципы взаимодействия, идентификации и основные бизнес-сценарии при работе с Системой Быстрых Платежей (СБП) через хост Альфа-Банка.
|
||
|
||
---
|
||
|
||
## 1. Каналы взаимодействия и безопасность
|
||
|
||
Взаимодействие осуществляется по протоколу **HTTP(S)** с обязательной двусторонней аутентификацией.
|
||
|
||
### Требования к сертификатам
|
||
* **Тип:** Клиентские сертификаты RSA/TLS.
|
||
* **Управление:** Порядок выпуска и установки определяется Удостоверяющим Центром Заказчика.
|
||
* **Именование (Alias):** На прокси-сервере Заказчика должны соблюдаться строгие правила именования:
|
||
|
||
| Параметр | Требование к имени (алиасу) |
|
||
| :--- | :--- |
|
||
| **Обычный запрос** | Должно соответствовать коду терминала и реквизиту заголовка `key-name`. |
|
||
| **Проверка соединения** | Должно быть равно параметру `TermNo` в теле запроса и заголовку `key-name`. |
|
||
|
||
---
|
||
|
||
## 2. Идентификация Виртуального терминала
|
||
|
||
Для работы в системе каждому терминалу присваивается уникальный идентификатор — **TermNo**.
|
||
|
||
* **Назначение:** Определение конкретного виртуального терминала, кассы или системы.
|
||
* **Привязка:** TermNo определяет принадлежность к Юридическому лицу (ЮЛ), конкретной точке продаж (ТСП) и расчетному счету, на который будут поступать средства.
|
||
* **Лимиты:** Минимум 1 терминал на адрес ТСП, максимум — по запросу.
|
||
* **Применение:**
|
||
* Сохраняется в настройках терминала.
|
||
* Используется на прикладном уровне протокола совместно с сертификатом.
|
||
* **Обязателен** для генерации динамических QR-кодов и проверки статуса оплаты.
|
||
|
||
---
|
||
|
||
## 3. Общий порядок работы
|
||
|
||
### 3.1. Оплата покупки (C2B)
|
||
Процесс проведения оплаты через динамический QR-код:
|
||
|
||
1. **Инициация:** Кассир вводит сумму (валюта и назначение платежа обычно подставляются автоматически).
|
||
2. **Запрос QR:** ТСП запрашивает динамический QR-код у Банка.
|
||
3. **Отображение:** ТСП выводит QR на экран или печатает пре-чек.
|
||
4. **Действия клиента:**
|
||
* Сканирует QR через банковское приложение.
|
||
* Подтверждает оплату.
|
||
5. **Проверка:** ТСП запрашивает подтверждение статуса платежа.
|
||
6. **Фискализация:** При получении статуса «Оплачено» ТСП печатает чек.
|
||
|
||
**Обязательные реквизиты в чеке оплаты:**
|
||
* `qrcId` (Идентификатор QR-кода)
|
||
* Код транзакции СБП
|
||
* Дата и время операции
|
||
|
||
---
|
||
|
||
### 3.2. Возврат покупки
|
||
Возврат средств имеет ряд технологических особенностей.
|
||
|
||
> [!IMPORTANT]
|
||
> **Ограничения возврата:**
|
||
> * Возможен только при наличии чека и кода транзакции СБП.
|
||
> * Осуществляется только по номеру телефона плательщика.
|
||
> * Средства возвращаются только в тот же Банк-участник СБП, с которого была оплата.
|
||
|
||
**Параметры для инициации возврата:**
|
||
* Сумма (полная или частичная) и валюта.
|
||
* Данные из чека: `qrcId`, Код транзакции, Дата оплаты.
|
||
|
||
**Процесс подтверждения:**
|
||
1. Хост Банка проверяет наличие исходной операции.
|
||
2. Кассир проходит аутентификацию (ввод одноразового кода SMS/Push или иная проверка полномочий).
|
||
3. ТСП отправляет финальный запрос на возврат.
|
||
|
||
**Реквизиты в чеке возврата:**
|
||
* Код транзакции `payrrn`
|
||
* Сумма возврата
|
||
|
||
---
|
||
|
||
## 4. Работа с кассовыми ссылками
|
||
|
||
Кассовая ссылка — это многоразовый QR-код, который активируется под конкретную покупку.
|
||
|
||
### Жизненный цикл ссылки
|
||
1. **Регистрация:** ТСП через Агента регистрирует ссылку в ОПКЦ СБП. QR-код размещается в кассовой зоне.
|
||
2. **Активация:** В момент покупки ТСП отправляет запрос на активацию ссылки, передавая `сумму`, `валюту` и `назначение платежа`.
|
||
* *Совет:* Для получения уведомлений передавайте адрес `callback-url`.
|
||
3. **Оплата:** Клиент считывает статическую ссылку, которая после активации ведет на оплату конкретного счета.
|
||
4. **Деактивация:** Если оплата не состоялась, ТСП отправляет запрос на деактивацию.
|
||
5. **Изменение счета:** ТСП может изменить расчетный счет, привязанный к ссылке, через запрос к Агенту ТСП (автоматические уведомления об изменении не поддерживаются).
|
||
|
||
---
|
||
|
||
## 5. Привязка счета и рекуррентные платежи
|
||
|
||
Сценарии для реализации оплат «в один клик» или подписок.
|
||
|
||
### Сценарии регистрации привязки
|
||
| Тип сценария | Описание |
|
||
| :--- | :--- |
|
||
| **Чистая привязка** | Регистрация QR-кода типа `03`. Клиент сканирует код только для привязки счета без оплаты. |
|
||
| **Оплата + Привязка** | При регистрации обычного QR на оплату передается параметр `subscriptionPurpose`. После оплаты банк предлагает клиенту привязать счет. |
|
||
|
||
### Оплата по инициативе ТСП (Списание без участия клиента)
|
||
1. ТСП регистрирует QR для оплаты с привязанного счета.
|
||
2. ТСП направляет запрос на оплату в НСПК.
|
||
3. НСПК запрашивает подтверждение у Банка Плательщика.
|
||
4. При положительном ответе инициируется C2B операция, и Агент ТСП получает уведомление о финальном статусе.
|
||
|
||
---
|
||
|
||
## Справочник параметров (Сниппеты данных)
|
||
|
||
При формировании запросов используйте следующие ключевые поля:
|
||
|
||
```json
|
||
// Пример ключевых полей для активации кассовой ссылки / оплаты
|
||
{
|
||
"TermNo": "12345678", // Номер терминала
|
||
"amount": 10000, // Сумма в копейках/единицах
|
||
"currency": "RUB", // Валюта
|
||
"qrcId": "AD100000...", // ID QR-кода
|
||
"payrrn": "3021...", // Код транзакции (для возвратов)
|
||
"callbackUrl": "https://..." // Адрес для уведомлений
|
||
}
|
||
```
|
||
|
||
# Статический QR-код (СБП)
|
||
|
||
Статический QR-код — это инструмент безналичной оплаты через Систему быстрых платежей (СБП), являющийся альтернативой эквайрингу. Изображение QR-кода остается неизменным, его можно распечатать и разместить в кассовой зоне.
|
||
|
||
### Особенности
|
||
* **Варианты реализации:**
|
||
* С открытой суммой (вводит покупатель).
|
||
* С фиксированной суммой (задает продавец при генерации).
|
||
* **Способы оплаты:** Сканирование камерой смартфона или использование NFC-метки.
|
||
* **Скорость:** Средства поступают на счет продавца мгновенно.
|
||
* **Оборудование:** Терминал не требуется.
|
||
|
||
---
|
||
|
||
## 1. Регистрация статического QR-кода
|
||
|
||
Метод `GetQRCd` используется для формирования платежной ссылки и получения изображения QR-кода.
|
||
|
||
### Параметры запроса
|
||
| Параметр | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String | Y | Константа `GetQRCd`. |
|
||
| `TermNo` | String(20) | Y | Уникальный идентификатор терминала. |
|
||
| `qrcType` | String(2) | Y | Тип QR-кода. Для статического — `01`. |
|
||
| `amount` | Number | O | Сумма в копейках. Если не указана — сумма открытая. |
|
||
| `currency` | String(3) | O | Код валюты (например, `RUB`). |
|
||
| `paymentPurpose` | String(140) | O | Назначение платежа. |
|
||
| `width` / `height` | String | O | Размеры изображения QR-кода в пикселях. |
|
||
| `redirectUrl` | String(1024)| O | Ссылка для возврата клиента в приложение/на сайт ТСП. |
|
||
| `messageID` | String(1024)| O | Уникальный ID сообщения (GUID). Только латиница. |
|
||
| `queryData.notificationUrl` | String(512) | O | URL для получения уведомления о статусе оплаты. |
|
||
|
||
### Пример запроса
|
||
```json
|
||
{
|
||
"command": "GetQRCd",
|
||
"TermNo": "90080567",
|
||
"qrcType": "01",
|
||
"width": "600",
|
||
"height": "600",
|
||
"amount": 10000,
|
||
"currency": "RUB",
|
||
"paymentPurpose": "Оплата заказа №123",
|
||
"messageID": "550e8400-e29b-41d4-a716-446655440000",
|
||
"queryData": {
|
||
"notificationUrl": "https://yourserver.com/sbp/notify"
|
||
},
|
||
"redirectUrl": "https://yourshop.ru/success"
|
||
}
|
||
```
|
||
|
||
### Параметры ответа
|
||
| Параметр | Тип данных | Назначение |
|
||
| :--- | :--- | :--- |
|
||
| `ErrorCode` | String | Код ответа (0 — успех). |
|
||
| `image` | String | Изображение QR-кода в формате BASE64. |
|
||
| `payload` | String | Платежная ссылка (содержимое QR-кода). |
|
||
| `qrcId` | String | Уникальный идентификатор QR-кода. |
|
||
| `status` | String | Статус регистрации ссылки (например, `CREATED`). |
|
||
|
||
---
|
||
|
||
## 2. Нотификация о статусе оплаты
|
||
|
||
После успешной оплаты Банк отправляет POST-запрос на `notificationUrl`, указанный при регистрации.
|
||
|
||
### Параметры уведомления
|
||
| Параметр | Тип данных | Назначение |
|
||
| :--- | :--- | :--- |
|
||
| `qrcId` | String | Идентификатор QR-кода. |
|
||
| `trxId` | String | Уникальный ID платежа в НСПК. |
|
||
| `status` | String | `ACWP` — успех, `RJCT` — отклонено. |
|
||
| `amount` | Number | Сумма платежа в копейках. |
|
||
| `timestamp` | String | Время операции по Гринвичу (GMT). |
|
||
| `payerId` | String | Маскированный номер телефона плательщика. |
|
||
|
||
### Пример уведомления
|
||
```json
|
||
{
|
||
"command": "qrc/notification",
|
||
"qrcId": "AS10000NJTDV88TN82CRT8CG1AU690OF",
|
||
"trxId": "A31040920067662400000550448AD7B3",
|
||
"status": "ACWP",
|
||
"amount": 10000,
|
||
"timestamp": "2023-04-14T09:20:06.000Z",
|
||
"payrrn": "000051992395",
|
||
"TermNo": "90080567"
|
||
}
|
||
```
|
||
*ТСП должно ответить HTTP-кодом `200 OK`.*
|
||
|
||
---
|
||
|
||
## 3. Проведение возврата
|
||
|
||
Возврат средств выполняется в два этапа.
|
||
|
||
### 3.1. Проверка возможности возврата (`GetQRCreversalData`)
|
||
Используется для получения данных о плательщике и проверки доступности операции.
|
||
|
||
**Запрос:**
|
||
| Параметр | Обяз. | Описание |
|
||
| :--- | :---: | :--- |
|
||
| `qrcId` | Y | ID QR-кода из оригинального платежа. |
|
||
| `trxId` | Y | ID транзакции НСПК. |
|
||
| `amount` | O | Сумма возврата. Если пусто — полный возврат. |
|
||
|
||
**Пример ответа:**
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"payerBnkName": "Альфа-Банк",
|
||
"payerId": "*1779",
|
||
"trxDT": "20230414062006",
|
||
"message": "OK"
|
||
}
|
||
```
|
||
|
||
### 3.2. Выполнение возврата (`QRCreversal`)
|
||
Непосредственная инициация перевода средств клиенту.
|
||
|
||
**Запрос:**
|
||
| Параметр | Обяз. | Описание |
|
||
| :--- | :---: | :--- |
|
||
| `messageID` | Y | GUID, полученный в ответе `GetQRCreversalData`. |
|
||
| `queryData.notificationUrl` | O | URL для уведомления о статусе возврата. |
|
||
|
||
---
|
||
|
||
## 4. Запрос статуса возврата
|
||
|
||
Метод `GetQRCreversalStatus` используется для уточнения финального статуса операции возврата (B2C).
|
||
|
||
### Параметры запроса
|
||
Для поиска операции необходимо передать одну из пар:
|
||
1. `payrrn` ИЛИ `originalTrxId` (для поиска исходного платежа).
|
||
2. `trxId` ИЛИ `messageID` (для идентификации самого возврата).
|
||
|
||
### Статусы возврата в ответе
|
||
* `ACWP` — Возврат успешно завершен.
|
||
* `RJCT` — Операция отклонена.
|
||
* `NTST` — Статус неизвестен (в обработке).
|
||
|
||
### Пример ответа
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"amount": 10000,
|
||
"status": "ACWP",
|
||
"originalTrxId": "A31040920067662400000550448AD7B3",
|
||
"trxId": "B31071502287201D00001650448AD7B3"
|
||
}
|
||
```
|
||
|
||
---
|
||
*Примечание: Все текстовые данные в запросах должны передаваться в кодировке UTF-8, формат передачи данных — JSON.*
|
||
|
||
# Интеграция динамических QR-кодов (СБП)
|
||
|
||
Оплата по динамическому QR-коду — это способ безналичной оплаты через Систему Быстрых Платежей (СБП). QR-код создается отдельно под каждую покупку, содержит сумму и реквизиты. Средства мгновенно поступают на счёт продавца.
|
||
|
||
## 1. Регистрация динамического QR-кода
|
||
**Метод:** `GetQRCd`
|
||
|
||
Используется для генерации QR-кода под конкретный заказ.
|
||
|
||
### Параметры запроса
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String | Y | Константа `GetQRCd` |
|
||
| `TermNo` | String(20) | Y | Уникальный идентификатор терминала |
|
||
| `qrcType` | String(2) | Y | Тип QR-кода. Для динамического — `02` |
|
||
| `amount` | Number | Y | Сумма в минорных единицах (копейках) |
|
||
| `currency` | String(3) | Y | Код валюты (для рублей — `RUB`) |
|
||
| `OrderNumber` | String(1000)| O | Номер заказа (только латиница и цифры) |
|
||
| `paymentPurpose`| String(140) | O | Назначение платежа |
|
||
| `qrTtl` | String(6) | O | Срок жизни ссылки в минутах (мин. 1, рек. от 5) |
|
||
| `queryData.notificationUrl` | String(512) | O | URL для уведомления о статусе оплаты |
|
||
| `redirectUrl` | String(1024)| O | Ссылка для возврата клиента в приложение/сайт |
|
||
| `extJsonParams` | Object | O | Блок дополнительных параметров (JsonParam1-10) |
|
||
|
||
**Для подписок (рекуррентных платежей):**
|
||
* `subscriptionServiceId`: Идентификатор привязки.
|
||
* `subscriptionServiceName`: Наименование привязки.
|
||
|
||
### Пример запроса
|
||
```json
|
||
{
|
||
"command": "GetQRCd",
|
||
"TermNo": "90080567",
|
||
"amount": "10000",
|
||
"currency": "RUB",
|
||
"qrcType": "02",
|
||
"qrTtl": "5",
|
||
"OrderNumber": "FYI123456",
|
||
"queryData": {
|
||
"notificationUrl": "https://sbp-payments.your-site.com/callback"
|
||
}
|
||
}
|
||
```
|
||
|
||
### Параметры ответа
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `ErrorCode` | String | Y | Код ответа (0 — успех) |
|
||
| `image` | String | Y | Изображение QR-кода в формате Base64 |
|
||
| `payload` | String | Y | Платежная ссылка СБП |
|
||
| `qrcId` | String | Y | Уникальный идентификатор QR-кода |
|
||
| `status` | String | Y | Статус регистрации (например, `CREATED`) |
|
||
|
||
---
|
||
|
||
## 2. Запрос статуса оплаты
|
||
**Метод:** `GetQRCstatus`
|
||
|
||
Направляется кассой/терминалом для проверки факта оплаты.
|
||
> **Важно:** Запрос следует направлять не ранее, чем через 10 секунд после формирования QR, и не чаще чем раз в 3 секунды.
|
||
|
||
### Параметры запроса
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String | Y | Константа `GetQRCstatus` |
|
||
| `TermNo` | String | Y | Идентификатор терминала |
|
||
| `qrcId` | String | Y/O | ID QR-кода (обязательно, если нет payrrn) |
|
||
| `payrrn` | String | Y/O | Референс запроса в системе Банка |
|
||
|
||
### Возможные статусы (`status`)
|
||
1. `ACWP` (ACCEPTED) — Операция завершена успешно.
|
||
2. `RJCT` (REJECTED) — Операция отклонена.
|
||
3. `NTST` (NOT_STARTED) — Операция не найдена (нужен повтор запроса).
|
||
4. `RCVD` (RECEIVED) — Операция в обработке.
|
||
|
||
### Пример ответа (Успех)
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"status": "ACWP",
|
||
"qrcId": "AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
|
||
"trxId": "A3013090427361010000057B3DA2D4A7",
|
||
"amount": 10000,
|
||
"payerId": "*********1234"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Нотификация о финальном статусе
|
||
**Метод:** `qrc/notification`
|
||
|
||
Запрос отправляется со стороны Банка на `notificationUrl` ТСП.
|
||
|
||
### Формат уведомления
|
||
```json
|
||
{
|
||
"command": "qrc/notification",
|
||
"qrcId": "AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
|
||
"status": "ACWP",
|
||
"amount": "10000",
|
||
"trxId": "A3013090427361010000057B3DA2D4A7",
|
||
"timestamp": "2022-10-27T14:33:49.000Z"
|
||
}
|
||
```
|
||
*ТСП должно ответить HTTP-кодом `200`.*
|
||
|
||
---
|
||
|
||
## 4. Проведение возврата
|
||
Возврат может быть выполнен в два этапа (проверка + выполнение) или в один этап (при передаче `messageID`).
|
||
|
||
### 4.1 Проверка возможности возврата (`GetQRCreversalData`)
|
||
Используется для получения данных о плательщике и проверки доступного остатка.
|
||
|
||
### 4.2 Выполнение возврата (`QRCreversal`)
|
||
**Параметры запроса:**
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String | Y | Константа `QRCreversal` |
|
||
| `amount` | Number | O | Сумма возврата (если не указана — полный возврат) |
|
||
| `qrcId`/`trxId` | String | Y | Идентификаторы оригинальной операции |
|
||
| `ReturnRestAmount`| Boolean| O | Вернуть остаток доступных средств в ответе |
|
||
|
||
### Пример ответа на возврат
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"message": "Возврат проведен",
|
||
"amount": 10000,
|
||
"trxId": "A3024113609260070000086B8426B817",
|
||
"restAmount": "99.87"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 5. История и статусы возвратов
|
||
|
||
### Запрос истории (`GetQRCreversalHistory`)
|
||
Позволяет получить список всех попыток возврата по одной транзакции оплаты.
|
||
|
||
**Пример структуры массива `refunds` в ответе:**
|
||
```json
|
||
"refunds": [
|
||
{
|
||
"status": "ACWP",
|
||
"amount": 10000,
|
||
"trxId": "B51390823097450W0000180011510503",
|
||
"trxDT": "20250519082345"
|
||
},
|
||
{
|
||
"status": "RJCT",
|
||
"amount": 10000,
|
||
"trxId": "A4327120041167130000020011381101"
|
||
}
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Нотификация о возврате
|
||
**Метод:** `b2c-refund/notification`
|
||
|
||
Банк уведомляет систему ТСП о финальном статусе операции возврата.
|
||
|
||
### Пример уведомления
|
||
```json
|
||
{
|
||
"command": "b2c-refund/notification",
|
||
"status": "ACWP",
|
||
"amount": "10000",
|
||
"originalTrxId": "X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
|
||
"trxId": "A3024113609260070000086B8426B817"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Примечания
|
||
* **Формат данных:** Все текстовые данные в ответах передаются в формате `urlencoded`.
|
||
* **Суммы:** Все суммы в запросах передаются как целые числа в копейках.
|
||
* **Ошибки:** Список кодов ошибок приведен в Приложении №2 (согласно основной документации Банка).
|
||
* **Успешная оплата:** Считается подтвержденной только при получении статуса `ACWP` и наличии `trxId`.
|
||
|
||
# Кассовая платёжная ссылка СБП: Техническая документация
|
||
|
||
**Кассовая платёжная ссылка** — это гибридное решение, объединяющее преимущества статического и динамического QR-кодов. QR-код остается неизменным (его можно распечатать один раз), но сумма оплаты передается с кассы в момент покупки, что исключает ошибки ручного ввода со стороны клиента.
|
||
|
||
## Общие положения
|
||
* Для каждой кассы/терминала создается уникальная ссылка.
|
||
* Сумма передается в **минорных единицах** (копейках).
|
||
* Текстовые данные в ответах передаются в формате `urlencoded`.
|
||
|
||
---
|
||
|
||
## 1. Регистрация кассовой платёжной ссылки
|
||
Метод `RegCashQRc` используется для генерации постоянного QR-кода для терминала.
|
||
|
||
### Параметры запроса
|
||
| Параметр | Тип | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String | Y | Константа `RegCashQRc` |
|
||
| `TermNo` | String | Y | Уникальный ID терминала (до 20 симв.) |
|
||
| `mediaType` | String | N | Тип картинки (напр., `image/png`) |
|
||
| `width` | String | N | Ширина изображения |
|
||
| `height` | String | N | Высота изображения |
|
||
| `redirectUrl` | String | N | Ссылка для возврата клиента в приложение ТСП |
|
||
| `qrcId` | String | N | ID для привязки предвыпущенных NFC-табличек |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "RegCashQRc",
|
||
"TermNo": "90080567",
|
||
"mediaType": "image/png",
|
||
"width": "600",
|
||
"height": "600",
|
||
"redirectUrl": "https://exampletsp.io/callback"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 2. Активация ссылки (Передача суммы)
|
||
Метод `ActivateCashQRc` вызывается кассой в момент совершения покупки для установки суммы и параметров платежа.
|
||
|
||
### Параметры запроса
|
||
| Параметр | Тип | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String | Y | Константа `ActivateCashQRc` |
|
||
| `TermNo` | String | Y | ID терминала |
|
||
| `qrcId` | String | Y | ID QR-кода |
|
||
| `amount` | Number | Y | Сумма в копейках |
|
||
| `currency` | String | N | Валюта (по умолчанию `RUB`) |
|
||
| `qrTtl` | String | N | Срок жизни активации (5–20 мин) |
|
||
| `queryData.notificationUrl` | String | N | URL для уведомления об оплате |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "ActivateCashQRc",
|
||
"TermNo": "90080567",
|
||
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
"amount": 10000,
|
||
"currency": "RUB",
|
||
"qrTtl": "5",
|
||
"queryData": {
|
||
"notificationUrl": "https://sbp-payments.your-site.ru"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Проверка статуса оплаты
|
||
Метод `GetQRCstatus` используется для получения финального статуса транзакции. Рекомендуется запрашивать не ранее 10 сек. после активации и не чаще раза в 3 сек.
|
||
|
||
### Статусы оплаты (поле `status`)
|
||
* **ACWP** (ACCEPTED) — Оплата успешно завершена.
|
||
* **RJCT** (REJECTED) — Операция отклонена.
|
||
* **NTST** (NOT_STARTED) — Оплата еще не инициирована.
|
||
* **RCVD** (RECEIVED) — В обработке.
|
||
|
||
**Пример ответа (Успех):**
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"status": "ACWP",
|
||
"trxId": "A30180803159571F0000097B3DA2D4A7",
|
||
"amount": 10000,
|
||
"payerId": "*********1234",
|
||
"payrrn": "000056251465"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Деактивация ссылки
|
||
Метод `DelCashQRc` используется для досрочной отмены ожидания оплаты (например, если клиент отказался от покупки).
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "DelCashQRc",
|
||
"TermNo": "90080567",
|
||
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 5. Возврат платежа
|
||
Возврат по СБП выполняется в два этапа (или в один при наличии `messageID`).
|
||
|
||
### Этап 1: Проверка возможности возврата (`GetQRCreversalData`)
|
||
Позволяет узнать доступный остаток и получить данные для проведения возврата.
|
||
|
||
### Этап 2: Проведение возврата (`QRCreversal`)
|
||
**Пример запроса на возврат:**
|
||
```json
|
||
{
|
||
"command": "QRCreversal",
|
||
"TermNo": "90080567",
|
||
"payrrn": "000056251465",
|
||
"amount": 10000,
|
||
"messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Нотификации (Webhooks)
|
||
Банк отправляет POST-запросы на ваш `notificationUrl` при изменении статуса оплаты или возврата.
|
||
|
||
### Уведомление об оплате (`qrc/notification`)
|
||
```json
|
||
{
|
||
"command": "qrc/notification",
|
||
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
"status": "ACWP",
|
||
"amount": 10000,
|
||
"trxId": "A30180803159571F0000097B3DA2D4A7"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 7. Изменение параметров ссылки
|
||
Метод `ChangeAccForCashQRc` позволяет перепривязать QR-код к другому счету, терминалу или изменить `redirectUrl`.
|
||
|
||
| Параметр | Назначение |
|
||
| :--- | :--- |
|
||
| `NewTermNo` | Перенос на новый ID терминала |
|
||
| `NewMerchantId` | Перенос на другую торговую точку |
|
||
| `account` | Смена расчетного счета |
|
||
|
||
---
|
||
|
||
## Приложение: Коды ошибок (ErrorCode)
|
||
| Код | Описание |
|
||
| :--- | :--- |
|
||
| `0` | Успешно |
|
||
| `3` | Не передан обязательный параметр |
|
||
| `16` | Некорректный TermNo |
|
||
| `41` | Некорректный qrcId |
|
||
| `301` | Превышен временной диапазон поиска |
|
||
| `RQ05019` | Не передан параметр amount при активации |
|
||
|
||
> **Примечание:** При получении статуса `NTST` необходимо продолжать опрос статуса до получения финального результата (`ACWP` или `RJCT`).
|
||
|
||
# Привязка счёта и подписки СБП: Техническая документация
|
||
|
||
Данный функционал позволяет ТСП (Торгово-сервисным предприятиям) выполнять привязку банковского счёта клиента для проведения последующих платежей без участия плательщика (рекуррентные платежи, оплата в один клик).
|
||
|
||
---
|
||
|
||
## 1. Привязка счёта без оплаты
|
||
Используется для регистрации QR-кода, целью которого является только установление связки между счётом клиента и ТСП.
|
||
|
||
### 1.1. Метод `RegQRcSub`
|
||
|
||
**Параметры запроса:**
|
||
|
||
| Параметр | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String | Да | Тип запроса. Константа: `RegQRcSub`. |
|
||
| `TermNo` | String | Да | Уникальный идентификатор терминала. |
|
||
| `qrcType` | String | Да | Тип QR-кода. Константа: `03`. |
|
||
| `subscriptionPurpose` | String | Да | Цель привязки. Отображается клиенту в приложении банка. |
|
||
| `queryData.notificationUrl` | String | Да | URL для получения уведомления о результате привязки. |
|
||
| `qrTtl` | String | Нет | Срок жизни ссылки в минутах (1 — 129 600). По умолчанию: 4320 (3 суток). |
|
||
| `redirectUrl` | String | Нет | Ссылка для возврата клиента в приложение/на сайт ТСП. |
|
||
| `subscriptionServiceId` | String(32) | Нет | Идентификатор сервиса подписки (используется с `subscriptionServiceName`). |
|
||
| `subscriptionServiceName`| String(70) | Нет | Наименование сервиса подписки. |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "RegQRcSub",
|
||
"TermNo": "90080567",
|
||
"qrTtl": "10",
|
||
"qrcType": "03",
|
||
"subscriptionPurpose": "Подписка на оплату услуг Интернет 500р./мес.",
|
||
"queryData": {
|
||
"notificationUrl": "https://sbp-subscription.example.com"
|
||
},
|
||
"redirectUrl": "https://exampletsp.io/callback"
|
||
}
|
||
```
|
||
|
||
**Параметры ответа:**
|
||
|
||
| Параметр | Описание |
|
||
| :--- | :--- |
|
||
| `ErrorCode` | Код ответа (0 или RQ00000 — успех). |
|
||
| `qrcId` | Идентификатор QR-кода. |
|
||
| `payload` | Платежная ссылка для формирования QR или перехода. |
|
||
| `payrrn` | Референс запроса в системе Банка. |
|
||
|
||
---
|
||
|
||
### 1.2. Нотификация о результате привязки (`subscription/notification`)
|
||
Банк отправляет POST-запрос на `notificationUrl` ТСП.
|
||
|
||
**Параметры нотификации:**
|
||
* `status`: `ACWP` (оформлено) или `RJCT` (отказ).
|
||
* `subscriptionToken`: Уникальный токен привязки (необходим для будущих оплат).
|
||
* `memberId`: Идентификатор банка плательщика.
|
||
|
||
> **Важно:** Значения `subscriptionToken` и `memberId` необходимо сохранить. Без них проведение платежей по инициативе ТСП невозможно.
|
||
|
||
---
|
||
|
||
## 2. Оплата с последующей привязкой счёта
|
||
Позволяет клиенту совершить первую покупку и одновременно разрешить ТСП списывать средства в будущем.
|
||
|
||
### 2.1. Метод `GetQRCd` (Тип 02)
|
||
|
||
Для этого сценария используется стандартный метод генерации QR, но с обязательным заполнением поля `subscriptionPurpose`.
|
||
|
||
**Ключевые параметры:**
|
||
* `qrcType`: `02` (динамический QR).
|
||
* `amount`: Сумма первого платежа в копейках.
|
||
* `subscriptionPurpose`: Описание подписки (наличие этого поля активирует сценарий привязки).
|
||
* `queryData.notificationUrl_sub`: (Опционально) Отдельный URL для уведомления именно о привязке.
|
||
|
||
**Логика уведомлений:**
|
||
1. При успешной операции ТСП получает **два** callback-уведомления:
|
||
- О статусе платежа (`qrc/notification`).
|
||
- О статусе привязки (`subscription/notification`).
|
||
2. Если платеж прошел, но клиент отказался от привязки — придет уведомление об успехе оплаты и уведомление об отказе в подписке.
|
||
|
||
---
|
||
|
||
## 3. Оплата с привязанного счёта (по инициативе ТСП)
|
||
Сценарий "бесшовной" оплаты без участия клиента. Проводится в два этапа.
|
||
|
||
### Этап 1: Генерация ссылки через `GetQRCd`
|
||
Создается технический QR-код (тип `02`), к которому будет "привязан" платеж.
|
||
* `paymentPurpose`: Обязательно для заполнения.
|
||
* `amount`: Сумма списания.
|
||
|
||
### Этап 2: Запрос на списание `QRCSubPayPetition`
|
||
ТСП отправляет команду банку на исполнение платежа, используя полученный ранее токен.
|
||
|
||
**Параметры запроса:**
|
||
| Параметр | Обяз. | Описание |
|
||
| :--- | :---: | :--- |
|
||
| `command` | Да | `QRCSubPayPetition` |
|
||
| `subscriptionToken` | Да | Токен, полученный при регистрации привязки. |
|
||
| `SenderMemberId` | Да | Идентификатор банка плательщика (`memberId`). |
|
||
| `qrcId` | Да | ID QR-кода, созданного на Этапе 1. |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "QRCSubPayPetition",
|
||
"TermNo": "90080567",
|
||
"subscriptionToken": "70LSS7DN18SJQRS10006DNPKLJL24B05",
|
||
"SenderMemberId": "100000000008",
|
||
"qrcId": "AD10000BBJKO23GB98LA1FGBRIHH3K89"
|
||
}
|
||
```
|
||
|
||
### 3.1. Статусы решения банка (`resolution/notification`)
|
||
После запроса на списание банк присылает уведомление с результатом:
|
||
|
||
| Код | Описание |
|
||
| :--- | :--- |
|
||
| `RQ00030` | **Успех.** Согласие на проведение платежа. |
|
||
| `RQ05031` | Отказ: Привязка не найдена (клиент мог её удалить). |
|
||
| `RQ05060` | Отказ: Недостаточно средств. |
|
||
| `RQ05061` | Отказ: Превышен лимит СБП. |
|
||
| `RQ05063` | Отказ: Подозрение на мошенничество. |
|
||
|
||
---
|
||
|
||
## 4. Запрос статуса привязки
|
||
Если ТСП не получило callback, можно запросить статус привязки вручную.
|
||
|
||
### Метод `GetQRCSubStatus`
|
||
|
||
**Запрос:**
|
||
```json
|
||
{
|
||
"command": "GetQRCSubStatus",
|
||
"TermNo": "90080567",
|
||
"qrcId": "BB1S002PRSK6SR3E9R7P0H077UKN1QVF"
|
||
}
|
||
```
|
||
|
||
**Ответ (успешная привязка):**
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"status": "ACWP",
|
||
"subscriptionToken": "70LSS7DN18SJQRS10006DNPKLJLAGT77",
|
||
"memberId": "600000000015",
|
||
"message": "OK"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Важные примечания для разработчиков
|
||
|
||
1. **Лимиты:** Оплата с привязанного счета возможна на сумму до **1 000 000 руб.** за одну операцию.
|
||
2. **Кодировка:** Текстовые данные в ответах могут передаваться в формате `urlencoded` (например, `%u0423%u0441%u043F%u0435%u0445` для слова "Успех").
|
||
3. **Безопасность:** Система ТСП должна игнорировать неизвестные дополнительные параметры в уведомлениях от НСПК/Банка, не считая их ошибкой.
|
||
4. **Хранение данных:** Потеря `subscriptionToken` делает невозможным рекуррентное списание. В этом случае потребуется повторная привязка через QR-код.
|
||
|
||
# Цифровой рубль: Техническая документация по интеграции
|
||
|
||
Цифровой рубль (ЦР) — это третья форма национальной валюты, дополняющая наличные и безналичные средства. Счета цифрового рубля открываются на платформе Центрального банка, а доступ к ним осуществляется через мобильные приложения и интернет-банки коммерческих банков.
|
||
|
||
Прием платежей в ЦР осуществляется в рамках **Универсального платёжного кода (УПК)**.
|
||
|
||
---
|
||
|
||
## 1. Динамический QR-код (Одноразовый УПК)
|
||
|
||
Динамический код формируется под конкретную операцию с фиксированной суммой.
|
||
|
||
### 1.1. Регистрация динамического УПК
|
||
Для генерации кода можно использовать существующий метод `GetQRCd` или специализированный метод `ReqUniQr`.
|
||
|
||
#### Метод `ReqUniQr`
|
||
Запрос направляется ТСП в Банк для регистрации универсальной платёжной ссылки в API СБП.
|
||
|
||
**Параметры запроса:**
|
||
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String | Y | Константа `ReqUniQr` |
|
||
| `TermNo` | String | Y | Уникальный идентификатор терминала |
|
||
| `amount` | Number | O* | Сумма в копейках (обязательна для `uniQrType = 02`) |
|
||
| `uniQrType` | String | Y | Тип ссылки: `01` — многоразовая, `02` — одноразовая |
|
||
| `mediaType` | String | O | Расширение QR-кода (напр., `image/png`) |
|
||
| `width` / `height` | String | O | Размеры изображения в пикселях |
|
||
| `paymentPurpose` | String | O | Назначение платежа |
|
||
| `redirectUrl` | String | O | URL для возврата в приложение ТСП (ASCII/RFC3986) |
|
||
| `messageID` | String | O | Уникальный GUID сообщения |
|
||
| `qrTtl` | String | O | Срок жизни ссылки в минутах |
|
||
| `queryData.notificationUrl` | String | O | URL для уведомления о статусе оплаты |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "ReqUniQr",
|
||
"TermNo": "90080567",
|
||
"amount": "10000",
|
||
"uniQrType": "02",
|
||
"redirectUrl": "https://alfabank.ru/sme/payservice/sbp/",
|
||
"mediaType": "image/png",
|
||
"width": "600",
|
||
"height": "600",
|
||
"messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
"queryData": {
|
||
"notificationUrl": "https://sbp-payments",
|
||
"SenderFIO": "Иванов Иван Иванович"
|
||
}
|
||
}
|
||
```
|
||
|
||
**Параметры ответа:**
|
||
- `ErrorCode`: `0` — успех.
|
||
- `payload`: Платёжная ссылка.
|
||
- `image`: Изображение QR-кода в Base64.
|
||
- `uniQrId`: Идентификатор ссылки.
|
||
- `status`: Статус (обычно `CREATED`).
|
||
|
||
---
|
||
|
||
### 1.2. Проверка статуса оплаты динамического УПК
|
||
Используется метод `GetUniQrStatus`.
|
||
|
||
**Специфические статусы для Цифрового рубля:**
|
||
* `ENDD`: Платёж в ЦР обработан, но финальный результат (успех/отказ) пока неизвестен.
|
||
* `ACDR`: Платёж в ЦР успешно выполнен (аналог `ACWP` для СБП).
|
||
|
||
**Структура блока `data` (массив Record) в ответе:**
|
||
|
||
| Ключ | Описание |
|
||
| :--- | :--- |
|
||
| `paymentServiceId` | `PS0000000001` (СБП) или `PS0000000002` (ЦР) |
|
||
| `status` | `NTST` (не начат), `RCVD` (в процессе), `ACWP` (успех СБП), `RJCT` (отказ), `ENDD` (ЦР в обработке), `ACDR` (успех ЦР) |
|
||
|
||
---
|
||
|
||
## 2. Кассовая платёжная ссылка (Многоразовый УПК)
|
||
|
||
Многоразовый код, который обычно размещается в кассовой зоне.
|
||
|
||
### 2.1. Регистрация кассового УПК
|
||
Метод: `RegCashUniQr`.
|
||
|
||
**Особенности:**
|
||
* Позволяет привязать конкретный `qrcId`.
|
||
* В настройках ТСП на стороне Банка должен быть обязательно указан счет ЦР (`accountDR`).
|
||
|
||
**Пример ответа:**
|
||
```json
|
||
{
|
||
"ErrorCode": "0",
|
||
"message": "OK",
|
||
"TermNo": "90080567",
|
||
"payload": "https://qr.nspk.ru/BS2R003FS8EFGAVM852PQS13N894HDLU?type=01...",
|
||
"image": "iVBORw0KGgoAAAANSUhEUgAAAlg...",
|
||
"qrcId": "BS2R003FS8EFGAVM852PQS13N894HDLU",
|
||
"status": "CREATED"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 2.2. Изменение параметров кассового УПК
|
||
Метод `ChangeAccForCashUniQr` позволяет обновить привязанные счета или параметры терминала без смены самого QR-кода.
|
||
|
||
**Ключевые параметры для изменения:**
|
||
* `account`: Новый счет для СБП.
|
||
* `accountDR`: Новый счет для Цифрового рубля (строго 55 символов).
|
||
* `NewTermNo`: Смена ID терминала.
|
||
* `NewMerchantId`: Смена ID мерчанта в НСПК.
|
||
|
||
---
|
||
|
||
### 2.3. Проверка статуса кассового УПК
|
||
Метод: `GetCashUniQrStatus`.
|
||
|
||
**Важные поля ответа:**
|
||
* `paymentServiceId`: Определяет, как заплатил клиент (`PS0000000002` — Цифровой рубль).
|
||
* `cashRegisterQrcStatus`: Статус самой ссылки (`WAITING_PAYMENT`, `IN_PROGRESS`, `DEACTIVATED`).
|
||
|
||
---
|
||
|
||
## 3. Нотификация об исполнении перевода (C2B)
|
||
|
||
Сообщение отправляется со стороны Банка на сервер ТСП при получении финального статуса платежа.
|
||
|
||
**Метод:** `paymentDR/notification` (POST запрос)
|
||
|
||
**Параметры запроса:**
|
||
|
||
| Код ключа | Тип данных | Назначение |
|
||
| :--- | :--- | :--- |
|
||
| `command` | String | `paymentDR/notification` |
|
||
| `uniQrId` | String | Идентификатор платежа |
|
||
| `operationId` | String | ID операции на платформе ЦР |
|
||
| `status` | String | Статус (напр. `ACWP` или `RCVD`) |
|
||
| `amount` | String | Сумма в рублях (с разделителем-точкой) |
|
||
| `timestamp` | ISO8601 | Дата и время операции |
|
||
| `payrrn` | String | Референс платежа |
|
||
|
||
**Пример нотификации:**
|
||
```json
|
||
{
|
||
"command": "paymentDR/notification",
|
||
"uniQrId": "AD2000670LSS7DN18SJQDNP4B05KLJL1",
|
||
"operationId": "546464AX45546",
|
||
"status": "ACWP",
|
||
"amount": "10241.21",
|
||
"timestamp": "2024-08-01T10:15:00.000Z",
|
||
"payrrn": "102345678912",
|
||
"TermNo": "90080567",
|
||
"merchantName": "Рога и Копыта",
|
||
"purpose": "Кофе и булочка"
|
||
}
|
||
```
|
||
|
||
**Ожидаемый ответ от ТСП:**
|
||
* `HTTP 200 OK` — уведомление успешно принято.
|
||
* `HTTP 500` — внутренняя ошибка (будет произведена повторная попытка).
|
||
|
||
---
|
||
|
||
## Приложение: Справочник статусов (status)
|
||
|
||
| Код | Описание | Применимость |
|
||
| :--- | :--- | :--- |
|
||
| **NTST** | Платёж не начат | СБП / ЦР |
|
||
| **RCVD** | Платёж инициирован / в обработке | СБП / ЦР |
|
||
| **ACWP** | Платёж успешно выполнен | СБП |
|
||
| **RJCT** | Платёж отклонён | СБП |
|
||
| **ENDD** | Платёж обработан (результат уточняется) | **ЦР** |
|
||
| **ACDR** | Платёж успешно выполнен | **ЦР** |
|
||
|
||
# Дополнительные методы API СБП (Альфа-Банк)
|
||
|
||
Данный документ содержит описание дополнительных методов API для работы с Системой Быстрых Платежей (СБП) через платежный шлюз (ПШ) Альфа-Банка.
|
||
|
||
> **Примечание:** Таблицы кодов ответов (`ErrorCode`) и их расшифровок приведены в Приложении №2 к основной документации.
|
||
|
||
---
|
||
|
||
## 1. Запрос списка банков-участников СБП (`GetBankList`)
|
||
|
||
Метод используется ТСП для получения актуального списка банков, поддерживающих оплату через СБП.
|
||
|
||
### 1.1. Параметры запроса
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String (an-1..50) | **Y** | Тип запроса. Константа: `GetBankList` |
|
||
| `messageID` | String (ans-1..1024) | N | Уникальный идентификатор сообщения (GUID) |
|
||
| `BankMemberIdFilter` | String (n-11) | N | Фильтр по ID участника СБП (если нужен только один банк) |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "GetBankList"
|
||
}
|
||
```
|
||
|
||
### 1.2. Параметры ответа
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `ErrorCode` | String (an-20) | **Y** | Код ответа |
|
||
| `message` | String (ans-1024) | **Y** | Расшифровка кода ответа |
|
||
| `BankList` | Array | N | Коллекция банков-участников |
|
||
| `BankList.BankName` | String (an-50) | N | Наименование банка |
|
||
| `BankList.BankID` | String (an-12) | N | Идентификатор участника СБП в НСПК |
|
||
| `BankList.BankBIK` | String (n-9) | N | БИК банка (если передан из НСПК) |
|
||
|
||
**Пример успешного ответа:**
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"message": "Запрос обработан успешно",
|
||
"BankList": [
|
||
{
|
||
"BankName": "Наименование банка 1",
|
||
"BankID": "10000001100",
|
||
"BankBIK": "044525823"
|
||
},
|
||
{
|
||
"BankName": "Наименование банка N",
|
||
"BankID": "10000001145",
|
||
"BankBIK": "044525829"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 2. Блокирование QR-кода (`BlockQRcId`)
|
||
|
||
Запрос направляется для блокировки ранее сгенерированного QR-кода любого типа.
|
||
|
||
### 2.1. Параметры запроса
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String (an-1..50) | **Y** | Тип запроса. Константа: `BlockQRcId` |
|
||
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
|
||
| `qrcId` | String (an-32) | **Y** | Идентификатор QR-кода |
|
||
| `reason` | String (ans-1024) | N | Причина блокировки |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "BlockQRcId",
|
||
"TermNo": "90080567",
|
||
"qrcId": "BS1R003FN6RS6HL48QMBFVO5C4K9GQRV",
|
||
"reason": "Заказ 12345 направлен в стоп-лист"
|
||
}
|
||
```
|
||
|
||
### 2.2. Параметры ответа
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `ErrorCode` | String (an-20) | **Y** | Код ответа |
|
||
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
|
||
| `message` | String (ans-1024) | **Y** | Расшифровка кода ответа |
|
||
|
||
**Пример успешного ответа (200 OK):**
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"TermNo": "90080567",
|
||
"message": "OK"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Разблокирование QR-кода (`UnblockQRcId`)
|
||
|
||
Запрос используется для восстановления активности ранее заблокированного QR-кода.
|
||
|
||
### 3.1. Параметры запроса
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String (an-1..50) | **Y** | Тип запроса. Константа: `UnblockQRcId` |
|
||
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
|
||
| `qrcId` | String (an-32) | **Y** | Идентификатор QR-кода |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "UnblockQRcId",
|
||
"TermNo": "90080567",
|
||
"qrcId": "BS1R003FN6RS6HL48QMBFVO5C4K9GQRV"
|
||
}
|
||
```
|
||
|
||
### 3.2. Параметры ответа
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `ErrorCode` | String (an-20) | **Y** | Код ответа |
|
||
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
|
||
| `message` | String (ans-1024) | **Y** | Расшифровка кода ответа |
|
||
|
||
**Пример успешного ответа:**
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"TermNo": "90080567",
|
||
"message": "OK"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Список заблокированных QR-кодов (`GetBlockedQRcIdList`)
|
||
|
||
Запрос позволяет получить перечень всех заблокированных QR-кодов по конкретному терминалу или кассе.
|
||
|
||
### 4.1. Параметры запроса
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `command` | String (an-1..50) | **Y** | Тип запроса. Константа: `GetBlockedQRcIdList` |
|
||
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
|
||
|
||
**Пример запроса:**
|
||
```json
|
||
{
|
||
"command": "GetBlockedQRcIdList",
|
||
"TermNo": "90080567"
|
||
}
|
||
```
|
||
|
||
### 4.2. Параметры ответа
|
||
| Код ключа | Тип данных | Обяз. | Назначение |
|
||
| :--- | :--- | :---: | :--- |
|
||
| `ErrorCode` | String (an-20) | **Y** | Код ответа |
|
||
| `message` | String (ans-1024) | **Y** | Расшифровка кода ответа |
|
||
| `TermNo` | String (an-20) | **Y** | Уникальный идентификатор терминала |
|
||
| `QRcIdList` | Collection | N | Список заблокированных QR-кодов |
|
||
| `QRcIdList.qrcId` | String (an-32) | **Y** | Идентификатор QR-кода |
|
||
| `QRcIdList.reason` | String (ans-1024) | N | Причина блокировки |
|
||
| `QRcIdList.date` | String (an-20) | **Y** | Дата и время блокировки |
|
||
|
||
**Пример успешного ответа:**
|
||
```json
|
||
{
|
||
"ErrorCode": 0,
|
||
"TermNo": "90080567",
|
||
"message": "OK",
|
||
"QRcIdList": [
|
||
{
|
||
"date": "2024-04-18 17:17:45",
|
||
"qrcId": "BD100000K5II0G369JHR3KBA6SM3FD3V",
|
||
"reason": "Заказ 12345 направлен в стоп-лист"
|
||
},
|
||
{
|
||
"date": "2024-05-01 19:07:15",
|
||
"qrcId": "BD100002JN871TSC9SJB7HPVRFD3HQ8T",
|
||
"reason": "Заказ 96780 направлен в стоп-лист"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Обработка ошибок (Общий формат)
|
||
|
||
В случае ошибки (например, `400 Bad Request`), шлюз возвращает JSON следующего вида:
|
||
|
||
```json
|
||
{
|
||
"ErrorCode": "Код ошибки",
|
||
"message": "Расшифровка причины ошибки"
|
||
}
|
||
```
|
||
|
||
# Приложения к технической спецификации СБП
|
||
|
||
## Приложение 1. Формат Payload
|
||
|
||
В Системе быстрых платежей (СБП) используется формат двухмерного кода **QR Code (ISO/IEC 18004-2015)**. Payload (полезная нагрузка) может быть представлен в двух вариантах.
|
||
|
||
### Варианты Payload
|
||
* **Короткий вариант:** `https://{HOST}/{QR_ID}`
|
||
* **Длинный вариант:** `https://{HOST}/{QR_ID}?type={QR_TYPE}&bank={MEMBER_ID}&sum={SUM}&cur={CUR}&crc={CRC}`
|
||
|
||
### Описание параметров URL-based payload
|
||
|
||
| Параметр | Описание | Обяз. | Формат |
|
||
| :--- | :--- | :---: | :--- |
|
||
| **HOST** | `qr.nspk.ru` — для QR_TYPE 01 и 02<br>`sub.nspk.ru` — для QR_TYPE 03 | y | String |
|
||
| **QR_ID** | Идентификатор зарегистрированного QR-кода в СБП | y | String (32 симв.) |
|
||
| **QR_TYPE** | Тип QR-кода:<br>01 — QR Static (наклейка)<br>02 — QR Dynamic (на кассе)<br>03 — QR-Subscription (привязка счета) | y | String (2 цифры) |
|
||
| **MEMBER_ID** | Идентификатор Банка Получателя (ТСП) | y | String (12 симв.) |
|
||
| **SUM** | Сумма в копейках. Обязательна для типа 02. Отсутствует для типа 03. | y/o | String (до 12 цифр) |
|
||
| **CUR** | Валюта операции (обязательна, если присутствует SUM) | y/o | String (3 симв.) |
|
||
| **CRC** | Значение контрольной суммы | y | String (4 симв.) |
|
||
|
||
---
|
||
|
||
## Приложение 2. Описание кодов ответа
|
||
|
||
Полный перечень кодов представлен на сайте НСПК. Коды, не описанные ниже, следует обрабатывать как **техническую (системную) ошибку**.
|
||
|
||
### Общие коды ошибок системы
|
||
|
||
| Код | Сообщение / Описание |
|
||
| :--- | :--- |
|
||
| **0** | **OK** (Успешно) |
|
||
| **-999** | Прочее сообщение FSCryptoProxy |
|
||
| **-71** | Неверные данные Basic-авторизации запроса |
|
||
| **-9** | Система перегружена. Повторите запрос позже |
|
||
| **-7** | Неверная подпись сообщения (ошибка ключей) |
|
||
| **-6** | Не передана подпись в заголовке Authorization |
|
||
| **-1** | Возникли проблемы при обработке запроса |
|
||
| **1** | Внутренняя ошибка |
|
||
| **2** | Терминал не обнаружен |
|
||
| **8** | Таймаут ответа |
|
||
| **25** | Терминал заблокирован |
|
||
| **1001** | Сервис временно недоступен |
|
||
|
||
### Коды ОПКЦ СБП (RQ-серия)
|
||
|
||
| Код | Описание |
|
||
| :--- | :--- |
|
||
| **RQ00000** | Запрос обработан успешно |
|
||
| **RQ03001** | Ошибка валидации. Неверный формат запроса |
|
||
| **RQ05002** | Участник (memberId) не найден в СБП |
|
||
| **RQ05005** | ТСП (merchantId) не зарегистрировано в СБП |
|
||
| **RQ05009** | Сумма (amount) меньше минимально допустимой |
|
||
| **RQ05010** | Сумма (amount) больше максимально допустимой |
|
||
| **RQ05014** | Идентификатор qrcId не найден |
|
||
| **RQ05032** | Отказ Банка Плательщика в выполнении платежа |
|
||
| **RQ05040** | Сумма возврата превышает сумму исходной операции |
|
||
| **RQ07999** | Техническая ошибка |
|
||
|
||
---
|
||
|
||
### Ошибки по конкретным методам
|
||
|
||
#### Метод `GetQRCd` (Запрос QR-кода)
|
||
| Код | Описание |
|
||
| :--- | :--- |
|
||
| **3** | Не заполнены данные запроса |
|
||
| **28** | Запрос QR-кода не удался, не получен QR_ID |
|
||
| **301** | Некорректно заполнены данные |
|
||
| **999*** | Неизвестная ошибка. Требуется уточнение статуса |
|
||
|
||
#### Метод `GetQRCstatus` (Статус платежа)
|
||
| Код | Описание |
|
||
| :--- | :--- |
|
||
| **4** | Не передан qrcId или payrrn |
|
||
| **5** | Не получены данные от СБП |
|
||
| **18** | Платеж не найден в запросах B07, B23 |
|
||
|
||
#### Методы возврата (`GetQRCreversalData`, `QRCreversal`)
|
||
| Код | Описание |
|
||
| :--- | :--- |
|
||
| **12** | Не найдены данные для возврата |
|
||
| **20** | Получен отказ на запрос возврата |
|
||
| **22** | Несоответствие payrrn и qrcId в запросе |
|
||
| **27** | Возврат невозможен: счет зачисления не равен счету списания |
|
||
| **121** | Операция оплаты еще не имеет финального статуса |
|
||
| **201** | Отказ: Недостаточно средств на счете для возврата |
|
||
|
||
---
|
||
|
||
### Коды callback-уведомлений (Оплата с привязанного счета)
|
||
|
||
Используются в методе `resolution/notification`.
|
||
|
||
| Код | Описание |
|
||
| :--- | :--- |
|
||
| **RQ05060** | Недостаточно денежных средств |
|
||
| **RQ05061** | Превышен лимит по сумме операций СБП |
|
||
| **RQ05063** | Подозрение в мошенничестве (Anti-fraud) |
|
||
| **RQ05065** | Счет заблокирован |
|
||
| **RQ05067** | Запрещено по требованию законодательства |
|
||
|
||
> **Примечание:** Использование кода `RQ05032` допускается не более чем в 20% случаев от общего числа отказов Банка Плательщика.
|
||
|
||
---
|
||
|
||
## Приложение 3. Пояснение для колонки «Required»
|
||
|
||
| Метка | Значение |
|
||
| :---: | :--- |
|
||
| **y** | **Yes** — обязательное поле |
|
||
| **o** | **Optional** — опциональное поле |
|
||
| **y/o** | **Conditional** — условно обязательное (зависит от условий запроса) |
|
||
|
||
---
|
||
|
||
## Приложение 4. Типы данных
|
||
|
||
| Нотация | Описание |
|
||
| :--- | :--- |
|
||
| **a** | Символы латинского (A-Z, a-z) и русского (А-Я, а-я) алфавитов. |
|
||
| **n** | Цифры 0-9. |
|
||
| **an** | Буквенно-цифровой формат (смесь **a** и **n**). |
|
||
| **ans** | Буквенно-цифровой формат со спецсимволами (пробел, пунктуация, знаки `№`, `%` и т.д.). |
|
||
|
||
**Кодировка:** Все данные передаются в кодировке **UTF-8**.
|
||
|
||
]]>
|
||
</_0_full_md>
|
||
<_1_main_md>
|
||
<![CDATA[
|
||
Главная
|
||
|
||
Добро пожаловать на портал с инструкцией по интеграции СБП C2B
|
||
|
||
Здесь есть вся необходимая информация, которая поможет успешно провести прямую интеграцию с платёжным шлюзом Альфа-Ба
|
||
|
||
Важное объявление
|
||
С 1.11.2024 адрес тестового стенда будет изменён на новый URL — https://217.12.103.132:2443/fsCryptoProxy
|
||
Старые адреса http://217.12.103.147:9914/fsCryptoProxy и https://217.12.103.147:443/fsCryptoProxy станут недоступны
|
||
В случае если ваши запросы перестанут успешно отрабатываться ПШ банка до 1.11.2024, необходимо заменить URL на новый, не д
|
||
Для направления запросов на новый URL обязательно устанавливается MTLS соединение
|
||
В случае если у вас нет ключевой пары для поднятия MTLS соединения на тестовой среде, вам необходимо обратиться в банк по
|
||
Информация о том, как направлять запросы с установлением MTLS соединения на тестовой среде, находится по ссылке в разделе
|
||
|
||
Обзор API
|
||
|
||
• API позволяет направлять запросы на платёжный шлюз Альфа-Банка (далее — ПШ), чтобы совершать операции с помощью сервис
|
||
|
||
• Взаимодействие с платёжным шлюзом Альфа-Банка происходит по протоколу HTTPS
|
||
|
||
• API использует REST-архитектуру, методы POST
|
||
|
||
• POST-запросы используют JSON-аргументы
|
||
|
||
• API всегда возвращает ответ в формате JSON
|
||
|
||
• Ответ от платежного шлюза всегда содержит код ответа — ErrorCode
|
||
|
||
• Если в процессе обработки запроса произойдёт логическая ошибка, API вернёт её описание в поле message
|
||
|
||
• Текстовые данные возвращаются в ответе на запрос в формате urlencoded
|
||
|
||
• Все вопросы по процессу имплементации через данный протокол API можно направлять на адрес сопровождения — acquiring@alfa
|
||
|
||
Процесс аутентификации
|
||
|
||
Аутентификация на тестовой среде
|
||
|
||
Взаимодействие с платёжным шлюзом Альфа-Банка (далее — ПШ) на тестовой среде происходит через интернет по протоколу HTTP
|
||
|
||
Чтобы установить MTLS-соединение на тестовой среде, банк выдаёт клиенту ключевую пару RSA/TLS: сертификат и приватный клю
|
||
|
||
MTLS-соединение позволяет произвести двустороннюю аутентификацию.
|
||
|
||
Внимание
|
||
|
||
ПШ не обрабатывает запросы с сертификатом MTLS-соединения, по которому истёк срок жизни
|
||
|
||
Если ПО клиента пытается верифицировать серверный сертификат банка, необходимо добавить в доверенные сертификат удостове
|
||
|
||
Клиентский самоподписанный сертификат подписывает каждое тело запроса, которое клиент направляет на тестовой среде с помо
|
||
|
||
Чтобы получить этот сертификат, необходимо самостоятельно сгенерировать ключевую пару client.crt и client.key:
|
||
|
||
• client.crt — сертификат, который клиент передаёт в банк, чтобы зарегистрировать на тестовой среде
|
||
|
||
• client.key — приватный ключ, который клиент оставляет у себя, чтобы подписывать тело запроса на тестовой среде
|
||
|
||
Пример генерации запроса на ключевую пару client.crt и client.key с помощью OpenSSL:
|
||
|
||
openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 3650
|
||
|
||
12/23/25, 11:20 AM Главная
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 1/7
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/?rp-menuOpen=1
|
||
https://217.12.103.132:2443/fsCryptoProxy
|
||
http://217.12.103.147:9914/fsCryptoProxy
|
||
https://217.12.103.147/fsCryptoProxy
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/?rp-menuOpen=1#authentication_process
|
||
mailto:acquiring@alfabank.ru
|
||
|
||
Пример заполнения полей:
|
||
|
||
• Country Name (2 letter code) []: RU
|
||
|
||
• State or Province Name (full name) []:
|
||
|
||
• Locality Name (eg, city) []: Moscow
|
||
|
||
• Organization Name (eg, company) []: COMPANY
|
||
|
||
• Organizational Unit Name (eg, section) []: IT
|
||
|
||
• Common Name (eg, fully qualified host name) []: Company Pay C2B
|
||
|
||
• Email Address []: admin@test.ru
|
||
|
||
Примечание
|
||
|
||
• Длина RSA ключа может быть 2048 или 4096 бит
|
||
|
||
• Ключевую пару генерируют на срок не менее 10 лет
|
||
|
||
Файл client.crt необходимо направить в банк, чтобы зарегистрировать его на тестовой среде по адресу acquiring@alfabank.ru
|
||
|
||
Вместе с файлом client.crt нужно указать:
|
||
|
||
1. ИНН, наименование организации, на которую регистрируете сертификат
|
||
|
||
2. Тип среды, для которой выпущен сертификат: тестовая или промышленная
|
||
|
||
3. Информацию о том, как регистрируете сертификат: первично или повторно взамен истёкшего с alias…
|
||
|
||
4. К письму обязательно приложите файл client.crt в архиве без пароля
|
||
|
||
Пример письма:
|
||
|
||
• Тема письма:
|
||
Регистрация сертификата на тестовом стенде СБП C2B
|
||
|
||
• Тело письма:
|
||
Просим зарегистрировать сертификат, чтобы направлять запросы на тестовый стенд банка по продукту СБП C2B.
|
||
Сертификат выпущен впервые / повторно взамен истёкшего с alias…
|
||
Название организации:
|
||
ИНН:
|
||
Сертификат — во вложении.
|
||
|
||
Письмо на регистрацию сертификата можно направить, если кликнуть на email-адрес acquiring@alfabank.ru. Тогда откроется предзап
|
||
|
||
После регистрации сертификата на тестовой среде банк передаёт клиенту:
|
||
|
||
1. Аlias — имя сертификата, который зарегистрирован на тестовой среде. Оно должно быть указано в headers — key-name при напра
|
||
|
||
2. Клиентский сертификат RSA/TLS — он нужен, чтобы поднять MTLS-соединение на тестовой среде
|
||
|
||
3. Сертификат удостоверяющего центра c2b-ca-test.crt вместе с промежуточным и удостоверяющим сертификатом root для тестово
|
||
|
||
4. Тестовый номер терминала TermNo
|
||
Аутентификация на промышленной среде
|
||
|
||
Взаимодействие с платёжным шлюзом Альфа-Банка на промышленной среде происходит через интернет по протоколу HTTPS, при
|
||
|
||
Чтобы установить MTLS-соединение на промышленной среде, банк выдаёт клиенту ключевую пару RSA/TLS — сертификат и приватн
|
||
|
||
Внимание
|
||
|
||
ПШ не обрабатывает запросы с сертификатом MTLS-соединения, по которому истёк срок жизни
|
||
|
||
Если ПО клиента пытается верифицировать серверный сертификат банка, необходимо добавить в доверенные сертификат удостове
|
||
|
||
Клиентский самоподписанный сертификат подписывает каждое тело запроса, которое клиент направляет на промышленной среде
|
||
|
||
Чтобы получить этот сертификат, клиенту необходимо самостоятельно сгенерировать ключевую пару client.crt и client.key:
|
||
|
||
• client.crt — сертификат, который клиент передаёт в банк, чтобы зарегистрировать на промышленной среде
|
||
|
||
12/23/25, 11:20 AM Главная
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 2/7
|
||
|
||
mailto:admin@test.ru
|
||
mailto:acquiring@alfabank.ru
|
||
mailto:acquiring@alfabank.ru
|
||
|
||
• client.key — приватный ключ, который клиент оставляет у себя, чтобы подписывать тело запроса на промышленной среде
|
||
|
||
Пример генерации запроса на ключевую пару client.crt и client.key с помощью OpenSSL:
|
||
|
||
Пример заполнения полей
|
||
|
||
• Country Name (2 letter code) []: RU
|
||
|
||
• State or Province Name (full name) []:
|
||
|
||
• Locality Name (eg, city) []: Moscow
|
||
|
||
• Organization Name (eg, company) []: COMPANY
|
||
|
||
• Organizational Unit Name (eg, section) []: IT
|
||
|
||
• Common Name (eg, fully qualified host name) []: Company Pay C2B
|
||
|
||
• Email Address []: admin@test.ru
|
||
|
||
Примечание
|
||
|
||
• Длина RSA ключа может быть 2048 или 4096 бит
|
||
|
||
• Ключевую пару генерируют на срок не менее 10 лет
|
||
|
||
Файл client.crt необходимо направить в банк, чтобы зарегистрировать его на промышленной среде по адресу acquiring@alfabank.ru
|
||
|
||
Вместе с файлом client.crt необходимо указать:
|
||
|
||
1. ИНН, наименование организации, на которую регистрируете сертификат
|
||
|
||
2. Тип среды, для которой выпущен сертификат: тестовая или промышленная
|
||
|
||
3. Информацию о том, как регистрируете сертификат: первично или повторно взамен истёкшего с alias…
|
||
|
||
4. К письму обязательно приложите файл client.crt в архиве без пароля
|
||
|
||
• Тема письма:
|
||
Регистрация сертификата на промышленном (боевом) стенде СБП C2B
|
||
|
||
• Тело письма:
|
||
Просим зарегистрировать сертификат, чтобы направлять запросы на промышленный (боевой) стенд банка по продукту СБП C2B.
|
||
Сертификат выпущен впервые / повторно взамен истёкшего с alias…
|
||
Название организации:
|
||
ИНН:
|
||
Сертификат во вложении.
|
||
|
||
Письмо на регистрацию сертификата можно направить, если кликнуть на email-адрес acquiring@alfabank.ru. Тогда откроется предзап
|
||
|
||
После регистрации сертификата на промышленной среде банк передаёт клиенту:
|
||
|
||
1. Аlias — имя сертификата, который зарегистрирован на промышленной среде. Оно должно быть указано в headers — key-name при
|
||
|
||
2. Клиентский сертификат RSA/TLS — он нужен, чтобы поднять MTLS-соединение на промышленной среде
|
||
|
||
3. Сертификат удостоверяющего центра c2b-ca.crt вместе с промежуточным и удостоверяющим сертификатом root для промышлен
|
||
|
||
4. Эндпойнт промышленной среды
|
||
|
||
Тестирование
|
||
|
||
Чтобы провести тестирование, клиент может использовать тестовый стенд.
|
||
|
||
Эндпойнт тестовой среды (маршрут отправки) — https://217.12.103.132:2443/fsCryptoProxy
|
||
|
||
Для направления запросов обязательны следующие headers:
|
||
|
||
openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 3650
|
||
|
||
12/23/25, 11:20 AM Главная
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 3/7
|
||
|
||
mailto:admin@test.ru
|
||
mailto:acquiring@alfabank.ru
|
||
mailto:acquiring@alfabank.ru
|
||
https://217.12.103.132:2443/fsCryptoProxy
|
||
|
||
• Content-Type — application/x-www-form-urlencoded
|
||
|
||
• Authorization — помещается hash полученного тела запроса
|
||
|
||
• key-name — помещается alias зарегистрированного самоподписанного клиентского сертификата
|
||
|
||
На тестовой среде взаимодействие происходит по протоколу HTTPS.
|
||
|
||
Пример, как можно направить запрос на тестовом стенде
|
||
|
||
1. Составить тестовый запрос.
|
||
|
||
Порядок параметров в строке для вычисления hash должен соответствовать порядку, в котором параметры передаются в запрос
|
||
|
||
Пример, как сформировать блок данных:
|
||
|
||
Обязательно
|
||
|
||
В блоке данных для подписи сообщения нужно исключить все пробелы, символы табуляции и переноса строки между ключа
|
||
|
||
Примечание по полю «paymentPurpose»:
|
||
|
||
• Максимальная длина значения paymentPurpose — 140 символов
|
||
|
||
• Для значения paymentPurpose можно использовать такие символы:
|
||
|
||
• Символы латинского алфавита (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
|
||
|
||
• Символы ё с кодом 1105 и Ё с кодом 1025 не входят в допустимый диапазон для методов СБП API. Если paymentPurpose исполь
|
||
|
||
• Нельзя переводить каретку и знак табуляции НСПК допускает символы \ и n, но, чтобы совместно использовать их в JSON, н
|
||
|
||
• paymentPurpose: Платеж по дог\nовору… — неправильно
|
||
|
||
• paymentPurpose: Платеж по дог\\nовору… — правильно
|
||
|
||
{
|
||
|
||
"command":"GetQRCd",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"qrcType":"01",
|
||
|
||
"amount":"100",
|
||
|
||
"currency":"RUB",
|
||
|
||
"paymentPurpose":"Назначение платежа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:20 AM Главная
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 4/7
|
||
|
||
2. Из готового запроса необходимо вычислить hash по функции sha256 и зашифровать его приватным ключом тестовой среды
|
||
|
||
Рассчитать и закрыть hash приватным ключом с помощью такой команды:
|
||
|
||
Рассмотрим пример с использованием библиотеки OpenSSL:
|
||
|
||
• client.key — имя файла приватного ключа
|
||
|
||
• signature.txt — имя файла, в который будет записан зашифрованный hash
|
||
|
||
• block.txt — имя файла с блоком данных, необходимых, чтобы рассчитать hash
|
||
|
||
Десериализовать полученные байты в base64 при помощи команды:
|
||
|
||
• signature64.txt — имя файла, в который будет записан зашифрованный hash по стандарту base64
|
||
|
||
Готовую строку нужно поместить в заголовок Authorization.
|
||
|
||
3. Проверить результат можно так:
|
||
|
||
Извлечь открытый ключ из сертификата client.crt командой:
|
||
|
||
• client.crt — имя файла клиентского сертификата
|
||
|
||
• signing-pub.key — имя файла, который получает открытый ключ
|
||
|
||
С открытым ключом можно проверить данные командой:
|
||
|
||
• signature.txt — имя файла, в который записан зашифрованный hash
|
||
|
||
• signing-pub.key — имя файла открытого ключа
|
||
|
||
• block.txt — имя файла с блоком данных, по которому рассчитан hash
|
||
|
||
Если проверка прошла успешно, придёт ответ Verified OK.
|
||
|
||
Примечание
|
||
|
||
• Команда для проверки кодировки: file -bi block.txt
|
||
|
||
• Команда для проверки символа новой строки в конце: cat -e block.txt
|
||
|
||
• Команда для удаления символа новой строки в конце: truncate -s -1 block.txt
|
||
|
||
Пример поля в составе запроса:
|
||
|
||
Клиент отправляет запрос с заголовком autorization и сообщением, которое подписано приватным ключом клиента client.key и загол
|
||
|
||
openssl dgst -sha256 -sign client.key -out signature.txt block.txt
|
||
|
||
base64 signature.txt > signature64.txt
|
||
|
||
openssl x509 -in client.crt -pubkey -noout > signing-pub.key
|
||
|
||
openssl dgst -sha256 -signature signature.txt -verify signing-pub.key block.txt
|
||
|
||
Content-Type: application/x-www-form-urlencoded
|
||
|
||
Authorization: QMm5QWnAAj8Tp1hoIvGf1Hv7RPBoGgsDyGiR5GQ2v/MaS7Yaix6LDwAcry0UBWDZzqle2hx2fC7WbWkxXGvxK2Hcx
|
||
|
||
key-name: c2b-tsp-test
|
||
|
||
12/23/25, 11:20 AM Главная
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 5/7
|
||
|
||
Body:
|
||
|
||
Как провести тестовую оплату
|
||
|
||
1. Откройте на смартфоне ссылку https://testpay.alfabank.ru/sbp-page и нажмите Сканировать QR
|
||
|
||
2. Наведите камеру смартфона на QR-код
|
||
|
||
3. Нажмите Произвести оплату.
|
||
Готово: оплата на тестовом контуре выполнена. Переходить в выбор банков не надо.
|
||
|
||
{"command":"GetQRCd","TermNo":"30000018","qrcType":"01","amount":"100","currency":"RUB","paymentPurpose"
|
||
|
||
12/23/25, 11:20 AM Главная
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 6/7
|
||
|
||
https://testpay.alfabank.ru/sbp-page
|
||
|
||
Получение статуса платежа по QR-коду, который уже оплачен
|
||
|
||
Получить статус платежа по QR-коду можно с помощью запроса GetQRCstatus или callback-уведомления от ПШ.
|
||
|
||
Запрос GetQRCstatus позволяет получить статус по оплаченному динамическому QR-коду, кассовой платёжной ссылке или при опла
|
||
|
||
Callback-уведомление уходит по оплаченному статическому и динамическому QR-коду, по кассовой платёжной ссылке или при опла
|
||
|
||
Чтобы получать callback-уведомления, торгово-сервисному предприятию (далее — ТСП) необходимо направить на email acquiring@alf
|
||
|
||
Сервер на стороне ТСП должен быть публичным, иметь протокол HTTPS и 443 порт.
|
||
|
||
Адреса, с которых ПШ отправляет callback-уведомления: 217.12.97.124, 217.12.101.32.
|
||
|
||
Дополнительная информация по вызову метода GetQRCstatus
|
||
|
||
• В интеграционном тестовом окружении для метода GetQRCstatus введено ограничение частоты запросов: не более 4 запросов в м
|
||
|
||
• Ограничение введено в связи с лимитами на стороне НСПК (Национальная система платёжных карт): общий лимит — 60 запросов в
|
||
|
||
• Чтобы исключить паразитический/избыточный трафики обеспечить стабильность работы тестового контура, мы выделили для да
|
||
|
||
• При превышении лимита запросы будут отвергаться кодом 429 (Too Many Requests).
|
||
|
||
Переход на промышленную среду
|
||
|
||
Чтобы перейти на промышленную среду, необходимо заключить сделку по СБП с Альфа-Банком и запросить боевые доступы — для
|
||
|
||
Пример письма есть в разделе Аутентификация на промышленной среде
|
||
|
||
Срок, за который банк предоставит боевые данные, — до трёх рабочих дней.
|
||
|
||
12/23/25, 11:20 AM Главная
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/welcome/ 7/7
|
||
|
||
mailto:acquiring@alfabank.ru
|
||
|
||
|
||
]]>
|
||
</_1_main_md>
|
||
<_2_general_provisions_md>
|
||
<![CDATA[
|
||
|
||
Общие положения
|
||
|
||
Каналы взаимодействия
|
||
|
||
1. Взаимодействие с хостом Альфа-Банка осуществляется через сеть Интернет по протоколу HTTP(S) с использованием клиентских
|
||
сертификатов RSA/TLS.
|
||
|
||
2. Порядок выпуска, установки и применения сертификатов определяется Удостоверяющим Центром Заказчика и не является пред
|
||
данных ТУ, за исключением требований к имени (алиас) сертификатов на прокси-сервере Заказчика:
|
||
|
||
• Имя (алиас) сертификата должно соответствовать коду терминала запроса и реквизиту заголовка запроса key-name;
|
||
|
||
• При проверке соединения используется сертификат с именем равным обязательному параметру TermNo тела запроса и реквиз
|
||
заголовка запроса key-name.
|
||
|
||
Идентификация Виртуального терминала
|
||
|
||
Описание по идентификации
|
||
|
||
1. Каждый виртуальный терминал получает регистрационный номер (далее — «TermNo»).
|
||
|
||
2. TermNo требуется для определения виртуального терминала, кассы или системы.
|
||
|
||
3. Для каждого адреса ТСП присваивается минимум 1 виртуальный терминал и максимум по запросу.
|
||
|
||
4. TermNo определяет принадлежность терминала ЮЛ и конкретному ТСП, а также расчетный счет ЮЛ в системе Заказчика, на кото
|
||
будут поступать средства покупателей.
|
||
|
||
5. TermNo сохраняется в настройках виртуального терминала и с клиентским сертификатом используется в информационном обмен
|
||
на прикладном уровне протокола взаимодействия.
|
||
|
||
6. Оплата производится покупателями самостоятельно, необходимая для оплаты информация передается покупателю посредством
|
||
кода СБП, отображаемом на экране Агент ТСПа, или распечатанном на чеке или кассе или ссылке и т. д.
|
||
|
||
7. Получение динамических QR-кодов СБП и проверка их оплаты осуществляются с обязательным использованием TermNo.
|
||
|
||
Общий порядок работы
|
||
|
||
Оплата покупки через СБП
|
||
|
||
1. Кассир указывает на терминале (в случае кассового решения получает из ПО кассы) следующие параметры:
|
||
|
||
• Сумма;
|
||
|
||
• Валюта (подставляются автоматически);
|
||
|
||
• Назначение платежа (подставляется автоматически).
|
||
|
||
2. ТСП запрашивает динамический QR-код;
|
||
|
||
3. ТСП отображает полученное изображение (или печатает предварительный чек с изображением);
|
||
|
||
4. Покупатель:
|
||
|
||
• сканирует QR-код в приложении своего смартфона;
|
||
|
||
• получает и проверяет необходимую для подтверждения доп. информацию;
|
||
|
||
• подтверждает оплату;
|
||
|
||
• сообщает о проведении оплаты кассиру.
|
||
|
||
5. Кассир на терминале запрашивает подтверждение оплаты;
|
||
|
||
6. ТСП запрашивает подтверждение оплаты полученного ранее QR-кода
|
||
|
||
12/23/25, 11:21 AM Общие положения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/general/?rp-menuOpen=1 1/4
|
||
|
||
7. Получив подтверждение, ТСП печатает чек оплаты QR-кода с указанием:
|
||
|
||
• qrcId
|
||
|
||
• кода транзакции СБП
|
||
|
||
• даты и времени оплаты QR-кода
|
||
Возврат покупки через СБП
|
||
|
||
Особенность возврата покупки через ТСП:
|
||
|
||
1. Требует обязательного наличия чека и указания кода транзакции СБП;
|
||
|
||
2. Может производиться исключительно:
|
||
|
||
• по идентификатору плательщика (номеру телефона), осуществившего оплату;
|
||
|
||
• возврат средств возможен только в Банк-участник СБП из которого проводилась оплата;
|
||
|
||
• возврат осуществляется на счет плательщика, предназначенный для приема переводов СБП (счет по умолчанию для номера
|
||
телефона получателя).
|
||
|
||
Кассир указывает на терминале следующие параметры:
|
||
|
||
1. Сумма возврата покупки (частичного возврата);
|
||
|
||
2. Валюта;
|
||
|
||
3. Назначение платежа;
|
||
|
||
4. Данные из чека оплаты QR-кода покупателя:
|
||
|
||
• Код транзакции СБП;
|
||
|
||
• qrcId;
|
||
|
||
• Дату оплаты QR-кода.
|
||
|
||
ТСП запрашивает возможность возврата оплаты QR-кода;
|
||
|
||
После подтверждения возможности возврата:
|
||
|
||
• На хосте Банка найдена исходная операция и имеются все необходимые данные для возврата, кассир указывает на терминале
|
||
одноразовый код подтверждения возврата (порядок получения кассиром одноразового кода подтверждения (SMS/PUSH сообще
|
||
или производится иная аутоинтефикация ответственного пользователя, обладающего правом выполнения подобны действий.
|
||
|
||
• Любой способ проверки полномочий сотрудника ЮЛ совершать возвраты, если таковой необходим оговаривается отдельно.
|
||
|
||
ТСП запрашивает возврат и печатает чек возврата с указанием:
|
||
|
||
Данные из чека оплаты QR-кода покупателя: * Код транзакции «payrnn»; * Сумма возврата, может быть меньше или равна сумме,
|
||
указанной в чеке оплаты; * Конечный список используемых при возврате параметров может быть измен, оговаривается отдельно.
|
||
|
||
Регистрация кассовой ссылки
|
||
|
||
• ТСП отправляет запрос на создание кассовой ссылки Агенту ТСП;
|
||
|
||
• Агент ТСП отправляет запрос на создание кассовой ссылки в ОПКЦ СБП;
|
||
|
||
• ОПКЦ СБП возвращает данные новой Кассовой ссылки Агенту ТСП;
|
||
|
||
• Агент ТСП передает данные Кассовой ссылки в ТСП
|
||
|
||
• Агент ТСП размещает QR-код с данными Кассовой ссылки у кассы или иными аналогичными способами для возможности считыва
|
||
его электронными устройствами клиентов (смартфон, планшет и т. п.) в процессе оплаты ими покупок.
|
||
|
||
Активация кассовой ссылки
|
||
|
||
1. ТСП направляет запрос на активацию Кассовой ссылки Агенту ТСП;
|
||
|
||
• В запросе активации ТСП передает идентификатор ранее зарегистрированной кассовой ссылки и параметры оплаты;
|
||
|
||
• В параметрах оплаты обязательно следует передавать сумму платежа, валюту платежа и назначение платежа, а также другие
|
||
служебные параметры запроса, описанные в спецификации.
|
||
|
||
• Для получения уведомлений о статусе оплаты по активированной ссылке ТСП должно передать в специальном параметре запр
|
||
активации адрес для коллбеков с уведомлением от НСПК о статусе операций оплаты.
|
||
|
||
2. Агент ТСП передает запрос на активацию Кассовой ссылки в ОПКЦ СБП;
|
||
|
||
12/23/25, 11:21 AM Общие положения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/general/?rp-menuOpen=1 2/4
|
||
|
||
3. ОПКЦ СБП передает Агенту ТСП уведомление об активации Кассовой ссылки;
|
||
|
||
4. Агент ТСП передает в ТСП уведомление об активации Кассовой ссылки;
|
||
|
||
5. ТСП сообщает клиенту о возможности оплаты по QR-коду, полученного в процессе создания (регистрации) кассовой ссылки, кото
|
||
клиент может считать с помощью своего электронного устройства;
|
||
|
||
6. Клиент производит оплату C2B с помощью своего электронного устройства;
|
||
|
||
7. Агент ТСП получает уведомление от НСПК о финальном статусе операции C2B;
|
||
|
||
8. ТСП запрашивает статус операции у Агента ТСП или получает уведомление о статусе операции в случае, если ранее в запросе
|
||
активации кассовой ссылки был передан адрес для коллбеков с уведомлением о статусе оплат.
|
||
|
||
Деактивация кассовой ссылки
|
||
|
||
1. Клиент или ТСП принимает решение об отсутствии возможности или необходимости оплаты по ранее активированной кассовой
|
||
ссылке;
|
||
|
||
2. ТСП отправляет запрос Агенту ТСП на деактивацию кассовой ссылки;
|
||
|
||
3. Агент ТСП передает запрос на деактивацию Кассовой ссылки в ОПКЦ СБП;
|
||
|
||
4. ОПКЦ деактивирует ссылку и передает Агенту ТСП оповещение об этом;
|
||
|
||
5. Агент ТСП передает оповещение о деактивации ссылки в ТСП.
|
||
|
||
Возврат по ранее оплаченной кассовой ссылке
|
||
|
||
a) Для возврата по ранее оплаченной кассовой ссылке отличий от ранее реализованных процессов возврата по операциям C2B нет
|
||
за исключением того, что обязательно требуется передавать значение параметра «payrrn» без «qrcid».
|
||
|
||
Изменение счета ТСП для ранее зарегистрированной кассовой ссылки
|
||
|
||
a) ТСП принимает решение о необходимости смены счета, который был использован в процессе создания (регистрации) кассовой
|
||
платежной ссылки;
|
||
|
||
b) ТСП обращается с запросом о изменении счета по ранее зарегистрированной кассовой ссылке к Агенту ТСП;
|
||
|
||
c) Агент ТСП передает запрос о смене счета в НСПК;
|
||
|
||
d) НСПК сообщает о результате выполнения запроса Агенту ТСП;
|
||
|
||
e) ТСП уточняет статус операции смены счета у Агента ТСП. Автоматического уведомления ТСП о смене счета по ранее
|
||
зарегистрированной кассовой ссылки не поддерживается.
|
||
|
||
Регистрация QR-кода для привязки счета
|
||
|
||
1. ТСП регистрирует QR-код с типом «03» для привязки счета клиента к функциональности оплат по инициативе ТСП;
|
||
|
||
2. Агент ТСП передает запрос на регистрацию QR-кода для привязки счета в НСПК;
|
||
|
||
3. Клиент считывает QR-код при помощи своего электронного устройства;
|
||
|
||
4. Банк Плательщика получает данные QR-кода из запроса в НСПК;
|
||
|
||
5. Банк Плательщика отображает детали привязки счета на электронном устройстве Клиенту;
|
||
|
||
6. Клиент принимает решение о привязке счета;
|
||
|
||
7. Банк плательщика сообщает о решении клиента в НСПК;
|
||
|
||
8. НСПК сообщает Агенту ТСП о решении по привязке счета;
|
||
|
||
9. ТСП получает уведомление о статусе совершенной Плательщиком привязки счета в случае, если в запросе на регистрацию QR-ко
|
||
был передан адрес для коллбеков.
|
||
|
||
Регистрация QR-кода для оплаты с привязкой счета
|
||
|
||
1. ТСП регистрирует QR-код для оплаты как описано в пункте «Оплата покупки через СБП», но с дополнительным параметром
|
||
«subscriptionPurpose»;
|
||
|
||
2. После успешного завершения оплаты по QR-коду Банк Плательщика должен инициировать на электронном устройстве клиента
|
||
сценарий получения решения клиента по привязке счета для оплат по инициативе ТСП, оплату в пользу которого только что сов
|
||
клиент;
|
||
|
||
3. Банк Плательщика отображает детали привязки счета на электронном устройстве Клиенту;
|
||
|
||
12/23/25, 11:21 AM Общие положения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/general/?rp-menuOpen=1 3/4
|
||
|
||
4. Клиент принимает решение о привязке счета;
|
||
|
||
5. Банк плательщика сообщает о решении клиента в НСПК;
|
||
|
||
6. НСПК сообщает Агенту ТСП о решении по привязке счета;
|
||
|
||
7. ТСП получает уведомление о статусе совершенной Плательщиком привязки счета в случае, если в запросе на регистрацию QR-ко
|
||
был передан адрес для коллбеков.
|
||
|
||
Оплата с привязанного счета по инициативе ТСП
|
||
|
||
1. ТСП регистрирует QR-код для оплаты с привязанного счета;
|
||
|
||
2. Агент ТСП передает запрос регистрации QR в НСПК;
|
||
|
||
3. ТСП направляет запрос оплаты с привязанного счета в НСПК;
|
||
|
||
4. НСПК направляет запрос оплаты с привязанного счета в Банк Плательщика;
|
||
|
||
5. Банк Плательщика сообщает о своем решении по оплате с привязанного счета своего клиента в пользу ТСП из запроса НСПК;
|
||
|
||
6. НСПК Сообщает Агенту ТСП о решении Банка плательщика об оплате с привязанного счета;
|
||
|
||
7. Банк Плательщика начинает операцию C2B;
|
||
|
||
8. НСПК уведомляет Агента ТСП о финальном статусе операции C2B.
|
||
|
||
12/23/25, 11:21 AM Общие положения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/general/?rp-menuOpen=1 4/4
|
||
|
||
|
||
]]>
|
||
</_2_general_provisions_md>
|
||
<_3_static_QR_cods_md>
|
||
<![CDATA[
|
||
Статический QR-код
|
||
|
||
Статический QR-код
|
||
|
||
Оплата по статическому QR-коду — это один из способов безналичной оплаты, альтернатива платежам совершаемых банковскими к
|
||
|
||
Статический QR-код представляет из себя изображение, которое можно распечатать и разместить на видном месте возле кассовой
|
||
|
||
Изображение такого QR-кода всегда остается неизменным.
|
||
|
||
Данный вид QR-кода реализован в двух вариантах:
|
||
|
||
• с открытой суммой, которую вводит сам покупатель;
|
||
|
||
• с фиксированной суммой, заполняемой продавцом.
|
||
|
||
Совершить оплату по статическому QR-коду возможно следующими способами:
|
||
|
||
• отсканировать изображение QR-кода камерой смартфона и далее перейти в приложение мобильного банка или отсканировать не
|
||
приложения банка;
|
||
|
||
• в случае если изображение QR-кода содержит NFC-метку, то приложить смартфона с включенным NFC-модулем и совершить опл
|
||
|
||
Если QR-код уже с фиксированной суммой, то произвести оплату по цене, указанной в реквизитах платежа, если сумма открытая, то
|
||
|
||
Средства мгновенно поступают на счёт продавца.
|
||
|
||
Терминал или дополнительное устройство в данном случае не требуется.
|
||
|
||
1. Запрос на регистрацию статического QR-кода
|
||
|
||
Метод GetQRCd
|
||
|
||
• Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…
|
||
|
||
50)
|
||
|
||
y Тип запроса. Константа «GetQRCd».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcType String (n-2) y Тип запрашиваемого QR-кода — «01».
|
||
|
||
amount Number o Сумма платежа в минорных единицах (копейках).
|
||
|
||
Значение не указывается, если сумма по платежу вводится плательщиком (сумма открыта).
|
||
|
||
width String o Ширина картинки QR-кода (только числовое значение).
|
||
|
||
height String o Высота картинки QR-кода (только числовое значение).
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
paymentPurpose String (ans-
|
||
140)
|
||
|
||
o Назначение платежа.
|
||
|
||
redirectUrl String (ans-
|
||
|
||
1024)
|
||
|
||
о Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаются только си
|
||
|
||
соответствовать правилам кодировки URL.
|
||
|
||
Если все же требуется использовать в redirectUrl кириллические символы, необходимо перекодировать
|
||
|
||
encoded octets согласно RFC3986.
|
||
|
||
messageID String (ans-
|
||
|
||
1024)
|
||
|
||
o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 1/9
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
queryData.notificationUrl String (ans-
|
||
|
||
512)
|
||
|
||
o Полный URL для получения уведомления о финальном статусе оплаты QR-кода. Если параметр отсутс
|
||
|
||
• Примерный формат запроса:
|
||
|
||
• Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
image String (an)
|
||
|
||
Длинна зависит от формата, порядок 7000 символов.
|
||
|
||
y Изображение QR-кода содержит энкодированный BASE64 файл из
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
payload String (1…999) y Платежная ссылка***.
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
|
||
|
||
status String (an-20) y Статус регистрации Платежной ссылки СБП.
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
*** Формат payload может быть двух видов:
|
||
|
||
- https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF
|
||
|
||
- https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF?type=01&bank=100000000008&sum=100&cur=RUB&crc=2D0D
|
||
|
||
• Примерный формат ответа:
|
||
|
||
• 200 ОК
|
||
|
||
1 {
|
||
|
||
2 "command":"GetQRCd",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "qrcType":"01",
|
||
|
||
5 "width":"600",
|
||
|
||
6 "height":"600",
|
||
|
||
7 "amount":"10000",
|
||
|
||
8 "currency":"RUB",
|
||
|
||
9 "paymentPurpose":"Назначение платежа",
|
||
|
||
10 "messageID":"message",
|
||
|
||
11 "queryData":
|
||
|
||
12 {
|
||
|
||
13 "notificationUrl":"https://sbp-payments"
|
||
|
||
14 },
|
||
|
||
15 "redirectUrl": " https://exampletsp.io/qwertyui "
|
||
|
||
16 }
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "image": "iVBORw0KGgoAAAANSUhEUgAABEoAAARKCAIKFIRoUEQWVNAAAQA/w…...YII",
|
||
|
||
5 "message": "OK",
|
||
|
||
6 "messageID": "message",
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 2/9
|
||
|
||
https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF
|
||
https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF?type=01&bank=100000000008&sum=100&cur=RUB&crc=2D0D
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
2. Нотификация о финальном статусе оплаты статического QR-кода
|
||
|
||
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
|
||
|
||
Метод «qrc/notification»
|
||
|
||
• Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
|
||
|
||
status String (an-10) y Статус оплаты QR-кода в НСПК.
|
||
|
||
Возможные значения:
|
||
|
||
— ACWP — ACCEPTED операция завершена успешно;
|
||
|
||
— RJCT — REJECTED операция отклонена.
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
timestamp YYYY-MMDDThh: mm: ss[.SSS]
|
||
|
||
или
|
||
|
||
YYYY-MMDDThh: mm:
|
||
|
||
ss[.SSSZ]
|
||
|
||
y Метка времени НСПК по Гринвичу (GMT).
|
||
|
||
payerId String (ans) y Идентификатор плательщика (маскированный номер телефона плательщика).
|
||
|
||
kzo String (ans 1-128) y Контрольное Значение Операции СБП.
|
||
|
||
Формируется ОПКЦ СБП. Присутствует при условии, что Операция СБП C2B по запрашиваемом
|
||
|
||
="ACWP»).
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
CreditDatePos String (ans 1-256) o Дата операции, установленная Банком Получателя в ходе обработки уведомления НСПК.
|
||
|
||
• Примерный формат запроса:
|
||
|
||
7 "payload": "https://qr.nspk.ru/AS10000NJTDV88TN82CRT8CG1AU690OF",
|
||
|
||
8 "payrrn": "000051992395",
|
||
|
||
9 "qrcId": "AS10000NJTDV88TN82CRT8CG1AU690OF",
|
||
|
||
10 "status": "CREATED"
|
||
|
||
11 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "command":"qrc/notification",
|
||
|
||
3 "qrcId":"AS10000NJTDV88TN82CRT8CG1AU690OF",
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 3/9
|
||
|
||
• ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
|
||
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП сейчас находится в разработк
|
||
В случае добавления со стороны НСПК дополнительных параметров уведомления, система, принимающая их от шлюза Альфа-Банк
|
||
неожиданные параметры как ошибочный запрос.
|
||
|
||
3. Запрос проведения возврата по успешной оплате по статическому QR-коду
|
||
|
||
Возврат по СБП состоит из 2х последовательных запросов:
|
||
|
||
• GetQRCreversalData — проверка возможности проведения возврата;
|
||
|
||
• QRCreversal — выполнение непосредственно самого возврата.
|
||
|
||
В случае если ТСП инициирует выполнение повторных операций СБП B2C по одной и той же операции СБП C2B, то допускается не б
|
||
операций СБП B2C в течение одного операционного дня.
|
||
|
||
3.1. Запрос возможности проведения возврата
|
||
|
||
Запрос GetQRCreversalData направляется ТСП в Банк для проверки возможности возврата по ранее оплаченному QR-коду и получен
|
||
|
||
Метод GetQRCreversalData
|
||
|
||
• Описание параметров запроса:
|
||
|
||
Код
|
||
ключа Тип данных required Назначение
|
||
|
||
command String (an-1…
|
||
50)
|
||
|
||
y Тип запроса. Константа GetQRCreversalData».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
|
||
|
||
trxDT String (n-14) o Дата и время отменяемого платежа.
|
||
|
||
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата не передана, то значение будет принято зн
|
||
|
||
возвратов.
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого значения валюта будет взята из данных о
|
||
|
||
messageID String (ans-
|
||
|
||
1024)
|
||
|
||
o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
Примечание: Терминалы с подключенным сканером и распознаванием QR-кодов могут получить «qrcId», распарсив строку QR-кода
|
||
соответствует полю «payload».
|
||
|
||
• Примерный формат запроса:
|
||
|
||
4 "trxId":"A31040920067662400000550448AD7B3",
|
||
|
||
5 "status":"ACWP",
|
||
|
||
6 "amount":"10000",
|
||
|
||
7 "timestamp":"2023-04-14T09:20:06.000Z",
|
||
|
||
8 "payerId":"\*\*\*\*\*\*\*\*\*1779",
|
||
|
||
9 "kzo":"580d2f38370f378db5915c047ba7b72014327ce455caa927b2488f224926daac85e82984c889d66e79dad8039ccdefd
|
||
|
||
10 "payrrn":"000051992395",
|
||
|
||
11 "TermNo":"90080567",
|
||
|
||
12 "CreditDatePos":"20230414"
|
||
|
||
13 }
|
||
|
||
{
|
||
|
||
` `"command":"GetQRCreversalData",
|
||
|
||
` `"TermNo":"90080567",
|
||
|
||
` `"qrcId":"AS10000NJTDV88TN82CRT8CG1AU690OF",
|
||
|
||
` `"trxId":"A31040920067662400000550448AD7B3",
|
||
|
||
` `"trxDT":"20230414062006",
|
||
|
||
` `"amount":"10000",
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 4/9
|
||
|
||
• Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
|
||
|
||
Значение параметра возвращается в случае, если оно указано в запр
|
||
|
||
payerBnkBIC String (n-9) y БИК банка получателя.
|
||
|
||
payerBnkName String (an-50) y Наименование банка получателя.
|
||
|
||
payerId String (n-13) y Идентификатор получателя (маскированный номер телефона получате
|
||
|
||
payerPam String (ans 1…140) y PAM получателя.
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
trxDT String (n-14) y Дата и время платежа по Гринвичу (GMT).
|
||
|
||
Формат времени — ГГГГММДДччммсс.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
• Примерный формат ответа:
|
||
|
||
• 200 ОК
|
||
|
||
Примечание:
|
||
|
||
• Текстовые данные передаются в формате urlencoded;
|
||
|
||
• В случае получения "message»: «Получен отказ на запрос возврата. Статус Recall, ErrDebetMerchant: KSM0284 Invalid special cond
|
||
счёт ТСП. Он должен быть положительным и без ограничений.
|
||
|
||
• 400 Bad Request
|
||
|
||
` `"currency":"RUB",
|
||
|
||
` `"messageID":"message"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "message": "OK",
|
||
|
||
5 "messageID": "message",
|
||
|
||
6 "payerBnkBIC": "044525593",
|
||
|
||
7 "payerBnkName": "%u0410%u043B%u044C%u0444%u0430%20%u0411%u0430%u043D%u043A",
|
||
|
||
8 "payerId": "*1779",
|
||
|
||
9 "payerPam": "%u0424%u0421%u0418",
|
||
|
||
10 "payrrn": "000051992395",
|
||
|
||
11 "qrcId": "AS10000NJTDV88TN82CRT8CG1AU690OF",
|
||
|
||
12 "trxDT": 20230414062006
|
||
|
||
13 "trxId": "A31040920067662400000550448AD7B3"
|
||
|
||
14 }
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 5/9
|
||
|
||
3.2. Запрос возврата оплаты по QR-коду
|
||
|
||
Запрос QRCreversal направляется ТСП в Банк для возврата по ранее произведенной оплате QR. Возврат производится только на сче
|
||
возврата (метод GetQRCreversalData).
|
||
|
||
Метод QRCreversal.
|
||
|
||
• Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…
|
||
50)
|
||
|
||
y Тип запроса. Константа «QRCreversal».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
|
||
|
||
trxDT String (n-14) o Дата и время отменяемого платежа.
|
||
|
||
amount Number o Сумма платежа в минорных единицах (копейках). Если сумма возврата не передана, то значение будет
|
||
|
||
совершенных возвратов.
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого значения валюта будет взята
|
||
|
||
messageID String (ans-
|
||
|
||
1024)
|
||
|
||
o Уникальный идентификатор сообщения, GUID из сообщения «GetQRCreversalData». Обязательно если
|
||
|
||
queryData.notificationUrl String (ans-512) o Полный URL для получения уведомления о финальном статусе возврата QR-кода. Уведомление не про
|
||
|
||
* messageID — необходимо передавать точное значение, которые было указано в ответе на запрос GetQRCreversalData. Если значени
|
||
запрос GetQRCreversalData с указанием messageID и затем использовать полученный GUID при запросе на возврат.
|
||
|
||
• Примерный формат запроса:
|
||
|
||
• Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответ*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "command":"QRCreversal",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "qrcId":"AS10000NJTDV88TN82CRT8CG1AU690OF",
|
||
|
||
5 "trxId":"A31040920067662400000550448AD7B3",
|
||
|
||
6 "trxDT":"20230414062006",
|
||
|
||
7 "amount":"10000",
|
||
|
||
8 "currency":"RUB",
|
||
|
||
9 "messageID":"message"
|
||
|
||
10 "queryData":
|
||
|
||
11 {
|
||
|
||
12 "notificationUrl":"http://sbp-refunds"
|
||
|
||
13 }
|
||
|
||
14 }
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 6/9
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа.
|
||
|
||
messageID String (ans-1024) y/o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
trxDT String (n-14) y Дата и время совершенного возврата по Московскому времени (MSK).
|
||
|
||
Формат времени — ГГГГММДДччммсс.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор операции возврата в НСПК.
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
• Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
{ "ErrorCode":"Код ответа", "message":"Расшифровка кода ответа" }
|
||
|
||
4. Запрос статуса возврата СБП (B2C)
|
||
|
||
Метод «GetQRCreversalStatus» необходим ТСП для уточнения статуса операции B2C (метод QRCreversal).
|
||
|
||
В запросе «GetQRCreversalStatus» обязательно должна быть передана пара параметров:
|
||
|
||
1. «payrrn» или «originalTrxId»
|
||
|
||
Один из параметров «payrrn» или «originalTrxId» используется для нахождения исходного платежа C2B.
|
||
|
||
2. «trxId» или «messageID».
|
||
|
||
Один из параметров «trxId» или «messageID» используется для нахождения операции возврата B2C, по которому требуется уточнит
|
||
|
||
Метод «GetQRCreversalStatus»
|
||
|
||
• Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «Ge
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "amount": 10000,
|
||
|
||
5 "currency": "RUB",
|
||
|
||
6 "message": "%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043F%u0440%u043E%u0432%u0435%u0434%u043
|
||
|
||
7 "messageID": "message",
|
||
|
||
8 "payrrn": "000051992395",
|
||
|
||
9 "trxDT": 20230414093406,
|
||
|
||
10 "trxId": "B31071502287201D00001650448AD7B3"
|
||
|
||
11 }
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 7/9
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
payrrn String (n-12) y/o
|
||
|
||
(обязательно, если не передан параметр «originalTrxId»)
|
||
|
||
Значение параметра «payrrn
|
||
|
||
originalTrxId String (an-32) y/o
|
||
|
||
(обязательно, если не передан параметр «payrrn»)
|
||
|
||
Идентификатор исходной оп
|
||
|
||
trxId String (an-32) y/o
|
||
|
||
(обязательно, если не передан «messageID»)
|
||
|
||
Уникальный идентификатор
|
||
|
||
messageID String (ans-1024) y/o
|
||
|
||
(обязательно, если не передан «trxId»)
|
||
|
||
Значение параметра «messa
|
||
|
||
• Примерный формат запроса:
|
||
|
||
• Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ошибки*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
Url String (ans 1-512) o Полный URL получения уведомления для ТСП -значение параметра, переданного при запросе возврата Q
|
||
|
||
amount Number y Сумма Операции СБП в копейках. Целое, положительное число. Валюта операции — рубли РФ.
|
||
|
||
message String (ans-1024) y Описание результата выполнения запроса**.
|
||
|
||
messageID String (an-32) o Значение параметра «messageID» из запроса «QRCreversal».
|
||
|
||
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежной ссылки СБП, по которому была выполнена исходная Опе
|
||
|
||
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B.
|
||
|
||
payerId String (an-13) y Маскированный номер телефона Клиента-Получателя (Плательщика в исходной Операции C2B, кому дел
|
||
|
||
status String (an-4) y Статус операции возврата СБП (B2C):
|
||
|
||
ACWP — ACCEPTED операция завершена успешно;
|
||
|
||
RJCT — REJECTED операция отклонена;
|
||
|
||
NTST — Статус операции неизвестен.
|
||
|
||
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C по сценарию «Возврат по Операции СБП C2B» (ГГГГММДД
|
||
|
||
trxId String (an-32) y Уникальный идентификатор операции возврата в НСПК.
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
• Примерный формат ответа:
|
||
|
||
{
|
||
|
||
"command": "GetQRCreversalStatus",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"payrrn": "000051992395",
|
||
|
||
"originalTrxId": "A31040920067662400000550448AD7B3",
|
||
|
||
"trxId": "B31071502287201D00001650448AD7B3",
|
||
|
||
"messageID":"message"
|
||
|
||
}
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 8/9
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "amount": 10000,
|
||
|
||
5 "message": "OK",
|
||
|
||
6 "messageID":"123Rersal_Num567",
|
||
|
||
7 "originalQrcId": "AS10000NJTDV88TN82CRT8CG1AU690OF",
|
||
|
||
8 "originalTrxId": "A31040920067662400000550448AD7B3",
|
||
|
||
9 "payerId": "*********1779",
|
||
|
||
10 "URL":"http://sbp-payment/status",
|
||
|
||
11 "status": "ACWP",
|
||
|
||
12 "trxDT": 20230414093406,
|
||
|
||
13 "trxId": "B31071502287201D00001650448AD7B3"
|
||
|
||
14 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:22 AM Статический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/static/?rp-menuOpen=1 9/9
|
||
|
||
|
||
]]>
|
||
</_3_static_QR_cods_md>
|
||
<_4_dynamic_QR_cods_md>
|
||
<![CDATA[
|
||
|
||
Динамический QR-код
|
||
|
||
Динамический QR-код
|
||
|
||
Оплата по динамическому QR-коду — это один из способов безналичной оплаты, альтернатива платежам совершаемых банковскими
|
||
|
||
Динамический QR-код создается отдельно под каждую конкретную покупку, поэтому он сразу содержит стоимость покупки и все не
|
||
|
||
Для генерации динамического QR-кода необходимо устройство: компьютер, смартфон или терминал. Чтобы провести оплату касси
|
||
мобильного телефона или через банковское приложение, подтверждает оплату. Средства мгновенно поступают на счёт продавца.
|
||
|
||
1. Запрос на регистрацию динамического QR-кода
|
||
|
||
Метод GetQRCd
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «GetQRCd».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcType String (n-2) y Тип запрашиваемого QR-кода — «02».
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
OrderNumber String (ans-1000) o Номер заказа.
|
||
|
||
В параметре должны передаваться только английские буквы и/или арабские
|
||
|
||
width String o Ширина картинки QR-кода (только числовое значение).
|
||
|
||
height String o Высота картинки QR-кода (только числовое значение).
|
||
|
||
paymentPurpose String (ans-140) o Назначение платежа.
|
||
|
||
messageID String (an-1…1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
qrTtl String (an-1…6) o Срок жизни Платежной ссылки СБП в минутах.
|
||
|
||
Минимальное допустимое значение — «1». Максимальное допустимое значен
|
||
|
||
Рекомендация: устанавливать срок жизни Платежной ссылки СБП не менее «
|
||
|
||
queryData.notificationUrl String (ans-512) o Полный URL для получения уведомления о финальном статусе оплаты QR-ко
|
||
|
||
Если параметр отсутствует, уведомление не производится.
|
||
|
||
redirectUrl String (ans-1024) о Содержит ссылку для автоматического возврата в приложение или на сайт ТСП
|
||
|
||
Если все же требуется использовать в redirectUrl кириллические символы, необх
|
||
|
||
Блок для внесения д
|
||
|
||
Код ключа Тип данных required
|
||
|
||
extJsonParams Object o
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 1/16
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1
|
||
|
||
Код ключа Тип данных required
|
||
|
||
JsonParam1 String (ans-250) o
|
||
|
||
JsonParam2 String (ans-250) o
|
||
|
||
... ... ...
|
||
|
||
JsonParam10 String (ans-250) o
|
||
|
||
Если требуется сформировать динамический QR-ко
|
||
|
||
Код ключа Тип
|
||
данных required Назначение
|
||
|
||
subscriptionServiceId String (32) o Идентификатор привязки. Обязательно при наличии subscriptionServiceName, т. к. параметры subscriptionS
|
||
|
||
их в ходе проверки данных привязки счёта на уникальность.
|
||
|
||
subscriptionServiceName String (70) o Наименование привязки. Обязательно при наличии subscriptionServiceId, т. к. параметры subscriptionServic
|
||
|
||
их в ходе проверки данных привязки счёта на уникальность.
|
||
|
||
Если требуется сформировать динамический QR-код под о
|
||
|
||
Код ключа Тип данных required Назначен
|
||
|
||
queryData.SenderFIO String (an-140) o Фамилия,
|
||
|
||
queryData.SenderID String (an-11.13) o Идентифи
|
||
|
||
queryData.SenderBankBIC String (n-9) o БИК Банка
|
||
|
||
* Блок для передачи дополнительных идентификаторов ТСП в ежедневные реестры СБП. Функционал потребует дополнительной н
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
1 {
|
||
|
||
2 "command":"GetQRCd",
|
||
|
||
3 "TermNo":"90080567 ",
|
||
|
||
4 "qrTtl":"5",
|
||
|
||
5 "amount":"10000",
|
||
|
||
6 "currency":"RUB",
|
||
|
||
7 "qrcType":"02",
|
||
|
||
8 "width":"600",
|
||
|
||
9 "height":"600",
|
||
|
||
10 "paymentPurpose":"Назаначение платежа",
|
||
|
||
11 "OrderNumber":"FYI123456",
|
||
|
||
12 "subscriptionServiceId":"3842ca282aea11e88feca860b60304d5",
|
||
|
||
13 "subscriptionServiceName":"Подписка на онлайн-кинотеатр",
|
||
|
||
14 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
15 "redirectUrl": "https://alfabank.ru/sme/payservice/sbp/",
|
||
|
||
16 "extJsonParams":
|
||
|
||
17 {
|
||
|
||
18 "JsonParam1":"Value",
|
||
|
||
19 "JsonParam2":"Value",
|
||
|
||
20 "JsonParam3":"Value",
|
||
|
||
21 "JsonParam4":"Value",
|
||
|
||
22 "JsonParam5":"Value",
|
||
|
||
23 "JsonParam6":"Value",
|
||
|
||
24 "JsonParam7":"Value",
|
||
|
||
25 "JsonParam8":"Value",
|
||
|
||
26 "JsonParam9":"Value",
|
||
|
||
27 "JsonParam10":"Value"
|
||
|
||
28 },
|
||
|
||
29 "queryData":
|
||
|
||
30 {
|
||
|
||
31 "notificationUrl":"https://sbp-payments",
|
||
|
||
32 "SenderFIO":"Иванов|Иван|Иванович",
|
||
|
||
33 "SenderID":"0079123456789",
|
||
|
||
34 "SenderBankBIC":"44525593"
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 2/16
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначен
|
||
|
||
ErrorCode String (an-20) y Код ответа
|
||
|
||
TermNo String (an-20) y Уникальны
|
||
|
||
image String (an)
|
||
|
||
Длинна зависит от формата, порядок 7000 символов.
|
||
|
||
y Изображен
|
||
|
||
message String (ans-1024) y Расшифро
|
||
|
||
messageID String (ans-1024) o Уникальны
|
||
|
||
Значение
|
||
|
||
payload String (1…999) y Платежная
|
||
|
||
payrrn String (n-12) y Референс
|
||
|
||
qrcId String (an-32) y Идентифи
|
||
|
||
status String (n-7) y Статус рег
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
*** Формат payload может быть двух видов:
|
||
|
||
- https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM
|
||
|
||
- https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM?type=02&bank=100000000008&sum=10000&cur=RUB&crc=4244
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request { "ErrorCode":"Код ответа", "message":"Расшифровка кода ответа" }
|
||
|
||
2. Запрос статуса оплаты по динамическому QR-коду
|
||
|
||
Запрос статуса GetQRCstatus направляется кассой/терминалом ТСП в Банк для получения статуса Операции оплаты выпущенного ра
|
||
|
||
Запрос статуса направляется не ранее, чем через 10 секунд после формирования QR-кода и не чаще чем каждые 3 секунды.
|
||
|
||
Успешный ответ на запрос статуса можно получить в течении 30 дней после совершения оплаты по данному QR-коду.
|
||
|
||
В случае, если срок хранения данных истек, то в ответе на запрос вернется:
|
||
|
||
35 }
|
||
|
||
36 }
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "image":"iVBORw0KGgoAAAANSUhEUgAAghjysAAAAgjjafggkqqBEoAAARKCAIAAAQA/w……………..................Y
|
||
|
||
5 "message": "OK",
|
||
|
||
6 "messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
7 "payload": "https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
|
||
|
||
8 "payrrn": "000000022154",
|
||
|
||
9 "qrcId": "AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
|
||
|
||
10 "status": "CREATED"
|
||
|
||
11 }
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 3/16
|
||
|
||
https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM
|
||
https://qr.nspk.ru/AD100026KQ0ESJBV8OFPCG0U9K1H52UM?type=02&bank=100000000008&sum=10000&cur=RUB&crc=4244
|
||
|
||
Метод GetQRCstatus
|
||
|
||
• Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «GetQRCstatus».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcId String (an-32) y/o Идентификатор QR-кода (обязательно, есл
|
||
|
||
payrrn String (n-12) y/o Референсный идентификатор запроса в си
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, G
|
||
|
||
• Примерный формат запроса:
|
||
|
||
• Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
status String(an-10) y Статус оплаты QR-кода в НСПК***.
|
||
|
||
Возможные значения:
|
||
|
||
1. ACWP — ACCEPTED операция завершена успешно;
|
||
|
||
2. RJCT — REJECTED операция отклонена;
|
||
|
||
3. NTST — NOT_STARTED операции по QR коду не существует;
|
||
|
||
4. RCVD — RECEIVED операция в обработке.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
|
||
|
||
trxDT String (n-14) y Дата и время платежа по Гринвичу.
|
||
|
||
Формат — ГГГГММДДччммсс.
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
|
||
|
||
CreditDatePos String (ans 1-256) y Дата операции, установленная Банком Получателя (ГГГГММДД)
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
{
|
||
|
||
"ErrorCode":999,
|
||
|
||
"message":"Неизвестный код проблемы 999RQ05014"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":"GetQRCstatus",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"qrcId":"AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
|
||
|
||
"payrrn":"000000022154",
|
||
|
||
"messageID": "message"
|
||
|
||
}
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 4/16
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
Url String (ans 1-512) o Полный URL для получения уведомления ТСП о финальном статусе оплаты QR-кода. Зн
|
||
|
||
payerId String (n-13) y Идентификатор плательщика (маскированный номер телефона плательщика).
|
||
|
||
Kzo String (ans 1-128) o Контрольное Значение Операции СБП.
|
||
|
||
Формируется на стороне НСПК.
|
||
|
||
Присутствует при условии, что Операция СБП C2B по запрашиваемому qrcId заверше
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
|
||
|
||
Значение параметра возвращается в случае, если оно указано в запросе.
|
||
|
||
merchantId String (12) o ID мерчанта (ТСТ) в Банке
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
Примечание:
|
||
|
||
• Успешно оплаченным считается только QR-код, для которого получен «status» = «ACWP» с идентификатором платежа «trxId» и «E
|
||
|
||
• В случае если получен «status» = «NTST» — означает необходимость повтора запроса до получения одного из финальных статусов
|
||
|
||
• Получение «status» = «RJCT» означает отказ в оплате данного QR-кода.
|
||
|
||
— Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание:
|
||
|
||
• Текстовые данные передаются в формате urlencoded.
|
||
|
||
• В поле " trxDT» содержится дата и время транзакции на ПШ Банка в формате ГГГГММДДччммсс.
|
||
|
||
В случае получения значения trxId = null необходимо повторить запрос. Отсутствие значения означает, что в СБП еще нет успешного
|
||
|
||
• 400 Bad Request
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "message": "OK",
|
||
|
||
4 "qrcId": "AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
|
||
|
||
5 "status": "ACWP",
|
||
|
||
6 "trxId": "A3013090427361010000057B3DA2D4A7",
|
||
|
||
7 "trxDT": "20230113090427",
|
||
|
||
8 "payrrn": "000000022154",
|
||
|
||
9 "CreditDatePos": "20230113",
|
||
|
||
10 "TermNo": 90080567,
|
||
|
||
11 "amount": 10000,
|
||
|
||
12 "currency": "RUB",
|
||
|
||
13 "Url":"https://sbp-payments",
|
||
|
||
14 "payerId": "*********1234",
|
||
|
||
15 "kzo": "212b906a810f2562fd88e145199b30f4b4ea5c7cd7d0261236a73a6152f07f56b7feb915712a055522ee9b76
|
||
|
||
16 "messageID": "message",
|
||
|
||
17 "merchantId": "MB0000009603"
|
||
|
||
18 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 5/16
|
||
|
||
3. Нотификация ТСП о финальном статусе оплаты по динамическому QR-коду
|
||
|
||
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
|
||
|
||
Метод «qrc/notification»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1...50) y Тип запроса. Константа «qrc/notification»
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
|
||
|
||
status String (an-10) y Статус оплаты QR-кода в НСПК.
|
||
|
||
Возможные значения:
|
||
|
||
— ACWP — ACCEPTED операция завершена успешно;
|
||
|
||
— RJCT — REJECTED операция отклонена.
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках)
|
||
|
||
timestamp YYYY-MMDDThh: mm: ss[.SSS]
|
||
|
||
или
|
||
|
||
YYYY-MMDDThh: mm: ss[.SSSZ]
|
||
|
||
y Метка времени НСПК по Гринвичу (GMT).
|
||
|
||
payerId String (n-13) y Идентификатор плательщика (маскированный номер те
|
||
|
||
kzo String (ans 1-128) o Контрольное Значение Операции СБП.
|
||
|
||
Формируется ОПКЦ СБП. Присутствует при условии, чт
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка
|
||
|
||
TermNo String (an-20) Y Уникальный идентификатор терминала.
|
||
|
||
CreditDatePos String (ans 1-256) o Дата операции, установленная Банком Получателя в хо
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
|
||
|
||
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП находится в разработке.
|
||
|
||
В случае добавления со стороны НСПК дополнительных параметров уведомления, система, принимающая их от шлюза Альфа-Банка,
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "command":"qrc/notification",
|
||
|
||
3 "qrcId":"AD100026KQ0ESJBV8OFPCG0U9K1H52UM",
|
||
|
||
4 "trxId":"A3013090427361010000057B3DA2D4A7",
|
||
|
||
5 "status":"ACWP",
|
||
|
||
6 "amount":"10000",
|
||
|
||
7 "timestamp":"2022-10-27T14:33:49.000Z ",
|
||
|
||
8 "payerId":"*********1779",
|
||
|
||
9 "kzo":"580d2f38370f378db5915c047ba7b72014327ce455caa927b2488f224926daac85e82984c889d66e79dad8039cc
|
||
|
||
10 "payrrn":"000000022154",
|
||
|
||
11 "TermNo":"90080567",
|
||
|
||
12 "CreditDatePos":"20221027"
|
||
|
||
13 }
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 6/16
|
||
|
||
4. Запрос проведения возврата по успешной оплате по динамическому QR-коду
|
||
|
||
Возврат по СБП состоит из 2х последовательных запросов:
|
||
|
||
• GetQRCreversalData — проверка возможности проведения возврата;
|
||
|
||
• QRCreversal — выполнение непосредственно самого возврата.
|
||
|
||
В случае если ТСП инициирует выполнение повторных операций СБП B2C по одной и той же операции СБП C2B, то допускается не б
|
||
|
||
Возврат в один этап. При направлении запроса «QRCReversal», с заполненным полем messageID будет произведен возврат в один
|
||
|
||
4.1. Запрос возможности проведения возврата
|
||
|
||
Запрос GetQRCreversalData направляется ТСП в Банк для проверки возможности возврата по ранее оплаченному QR-коду и получен
|
||
|
||
Метод GetQRCreversalData
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «GetQRCreversalData».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcId String (an-32) y/o Идентификатор QR-кода (обязательно, если не передан «payrrn» или «trxId»).
|
||
|
||
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка (обязательно, если не
|
||
|
||
trxId String (an-32) y/o Уникальный идентификатор платежа в НСПК (обязательно, если не передан «q
|
||
|
||
trxDT String (n-14) o Дата и время отменяемого платежа.
|
||
|
||
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата не пер
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого значе
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
ReturnRestAmount Boolean o Проверка доступного остатка для совершения возврата.
|
||
|
||
Доступные значения:
|
||
|
||
— true
|
||
|
||
— false
|
||
|
||
Примечание:
|
||
|
||
• Для поиска оригинальной транзакции обязательным является один из параметров: «qrcId», «payrrn» или «trxId»;
|
||
|
||
• Терминалы с подключенным сканером и распознаванием QR-кодов могут получить «qrcId», распарсив строку QR-кода с чека опла
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
1 {
|
||
|
||
2 "command":"GetQRCreversalData",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "qrcId":"AS1000670LSS7DN18SJQDNP4B05KLJL2",
|
||
|
||
5 "payrrn":"000063441405",
|
||
|
||
6 "trxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
|
||
|
||
7 "trxDT":"20230313052005",
|
||
|
||
8 "amount":"10000",
|
||
|
||
9 "currency":"RUB",
|
||
|
||
10 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
11 "ReturnRestAmount":true
|
||
|
||
12 }
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 7/16
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
payerBnkBIC String (n-9) y БИК банка получателя.
|
||
|
||
payerBnkName String (an-50) y Наименование банка получателя
|
||
|
||
payerId String (n-13) y Идентификатор получателя (маскированный номер телефона получателя).
|
||
|
||
payerPam String (ans 1…140) y PAM получателя
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
trxDT String (n-14) y Дата и время платежа по Гринвичу (GMT).
|
||
|
||
Формат времени — ГГГГММДДччммсс.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
|
||
|
||
restAmount Number (с двумя знаками после точки) o Сумма доступного остатка к возврату.
|
||
|
||
Если в запросе передано значение "ReturnRestAmount" : true, то в ответе д
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание:
|
||
|
||
• Текстовые данные передаются в формате urlencoded;
|
||
|
||
• В случае получения «message»: «Получен отказ на запрос возврата. Статус Recall, ErrDebetMerchant: KSM0284 Invalid special cond
|
||
|
||
• 400 Bad Request
|
||
|
||
4.2. Запрос возврата оплаты QR-кода
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "message": "OK",
|
||
|
||
5 "payerBnkBIC": "044525593",
|
||
|
||
6 "payerBnkName": "Альфа-Банк",
|
||
|
||
7 "payerId": "*1234",
|
||
|
||
8 "payerPam": "ФСИ",
|
||
|
||
9 "payrrn": "000063441405",
|
||
|
||
10 "qrcId": "AS1000670LSS7DN18SJQDNP4B05KLJL2",
|
||
|
||
11 "trxDT": 20200728114531,
|
||
|
||
12 "trxId": "X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
|
||
|
||
13 "restAmount":"99.87"
|
||
|
||
14 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 8/16
|
||
|
||
Запрос QRCreversal направляется ТСП в Банк для возврата по ранее произведенной оплате QR. Возврат производится только на сче
|
||
|
||
Метод QRCreversal
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «QRCreversal».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcId String (an-32) y/o Идентификатор QR-кода (обязательно, если не передан «payrrn» или «trx
|
||
|
||
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка (обязательно, есл
|
||
|
||
trxId String (an-32) y/o Уникальный идентификатор платежа в НСПК (обязательно, если не перед
|
||
|
||
trxDT String (n-14) o Дата и время отменяемого платежа.
|
||
|
||
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата н
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого
|
||
|
||
messageID String (an-1…50) y/o Уникальный идентификатор сообщения, GUID из сообщения «GetQRCrev
|
||
|
||
queryData.notificationUrl String (ans-512) o Полный URL для получения уведомления о финальном статусе возврата
|
||
|
||
ReturnRestAmount Boolean o Проверка доступного остатка для совершения возврата.
|
||
|
||
Доступные значения:
|
||
|
||
— true
|
||
|
||
— false
|
||
|
||
Блок для внесения д
|
||
|
||
Код ключа Тип данных required
|
||
|
||
extJsonParams Object o
|
||
|
||
JsonParam1 String (ans-250) o
|
||
|
||
JsonParam2 String (ans-250) o
|
||
|
||
... ... ...
|
||
|
||
JsonParam10 String (ans-250) o
|
||
|
||
* messageID — необходимо передавать точное значение, которые было указано в ответе на запрос GetQRCreversalData. Если значени
|
||
на возврат.
|
||
|
||
** Блок для передачи дополнительных идентификаторов ТСП в ежедневные реестры СБП. Функционал потребует дополнительной
|
||
|
||
Примечание: Для поиска оригинальной транзакции обязательным является один из параметров: «qrcId», «payrrn» или «trxId».
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
1 {
|
||
|
||
2 "command":"QRCreversal",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "qrcId":"AS1000670LSS7DN18SJQDNP4B05KLJL2",
|
||
|
||
5 "payrrn":"000063441405",
|
||
|
||
6 "trxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
|
||
|
||
7 "trxDT":"20230313052005",
|
||
|
||
8 "amount":"10000",
|
||
|
||
9 "currency":"RUB",
|
||
|
||
10 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 9/16
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
trxDT String(n-14) y Дата и время операции возврата (ГГГГММДДччммсс).
|
||
|
||
trxId String(an-32) y Уникальный идентификатор операции возврата в НСПК.
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
|
||
|
||
restAmount Number (с двумя знаками после точки) o Сумма доступного остатка к возврату.
|
||
|
||
Если в запросе передано значение "ReturnRestAmount" : true, то в ответе дол
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
11 "extJsonParams":
|
||
|
||
12 {
|
||
|
||
13 "JsonParam1":"Value",
|
||
|
||
14 "JsonParam2":"Value",
|
||
|
||
15 "JsonParam3":"Value",
|
||
|
||
16 "JsonParam4":"Value",
|
||
|
||
17 "JsonParam5":"Value",
|
||
|
||
18 "JsonParam6":"Value",
|
||
|
||
19 "JsonParam7":"Value",
|
||
|
||
20 "JsonParam8":"Value",
|
||
|
||
21 "JsonParam9":"Value",
|
||
|
||
22 "JsonParam10":"Value"
|
||
|
||
23 },
|
||
|
||
24 "queryData":
|
||
|
||
25 {
|
||
|
||
26 "notificationUrl":"http://sbp-refunds/"
|
||
|
||
27 },
|
||
|
||
28 "ReturnRestAmount": true
|
||
|
||
29 }
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "amount": 10000,
|
||
|
||
5 "currency": "RUB",
|
||
|
||
6 "message": "%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043F%u0440%u043E%u0432%u0435%u0434%
|
||
|
||
7 "messageID":"message"
|
||
|
||
8 "payrrn": "000063441405",
|
||
|
||
9 "trxDT": 20230624143642,
|
||
|
||
10 "trxId": "A3024113609260070000086B8426B817",
|
||
|
||
11 "restAmount": "99.87"
|
||
|
||
12 }
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 10/16
|
||
|
||
5. Запрос статуса возврата СБП (B2C)
|
||
|
||
Метод «GetQRCreversalStatus» необходим ТСП для уточнения статуса операции B2C (метод QRCreversal).
|
||
|
||
В запросе «GetQRCreversalStatus» обязательно должна быть передана пара параметров:
|
||
|
||
1. «payrrn» или «originalTrxId» Один из параметров «payrrn» или «originalTrxId» используется для нахождения исходного платежа C2
|
||
|
||
2. «trxId» или «messageID». Один из параметров «trxId» или «messageID» используется для нахождения операции возврата B2C, по
|
||
|
||
Метод «GetQRCreversalStatus»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
command String (an-1…50) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
payrrn String (n-12) y/o
|
||
|
||
(обязательно, если не передан параметр «originalTrxId»)
|
||
|
||
originalTrxId String (an-32) y/o
|
||
|
||
(обязательно, если не передан параметр «payrrn»)
|
||
|
||
trxId String (an-32) y/o
|
||
|
||
(обязательно, если не передан messageID,)
|
||
|
||
messageID String (ans-1…1024) y/o
|
||
(обязательно, если не передан trxId)
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ошибки*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
Url String (ans 1-512) o Полный URL получения уведомления для ТСП — значение параметра,
|
||
|
||
amount Number y Сумма Операции СБП в копейках. Целое, положительное число. Валют
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":"GetQRCreversalStatus",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"payrrn":"000063441405",
|
||
|
||
"originalTrxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
|
||
|
||
"trxId":"A3024113609260070000086B8426B817",
|
||
|
||
"messageID":"message"
|
||
|
||
}
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 11/16
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
message String (ans-1024) y Описание результата выполнения запроса**.
|
||
|
||
messageID String (ans-1024) o Значение параметра «messageID» из запроса «QRCreversal».
|
||
|
||
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежной ссылки СБП, по которо
|
||
|
||
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B.
|
||
|
||
payerId String (an-13) y Маскированный номер телефона Клиента-Получателя (Плательщика в
|
||
|
||
status String (an-4) y Статус операции возврата СБП (B2C):
|
||
|
||
ACWP — ACCEPTED операция завершена успешно;
|
||
|
||
RJCT — REJECTED операция отклонена;
|
||
|
||
NTST — Статус операции неизвестен.
|
||
|
||
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C по сценарию «Возврат п
|
||
|
||
trxId String (an-32) y Уникальный идентификатор операции возврата в НСПК.
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 ОК
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
6. Запрос истории возвратов по определённой транзакции СБП C2B
|
||
|
||
Запрос позволяет ТСП проверить все совершённые возвраты по определённой транзакции СБП C2B.
|
||
|
||
В ответе на запрос возвращаются как успешные, так и неуспешные попытки возвратов.
|
||
|
||
Метод GetQRCreversalHistory
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "amount": 10000,
|
||
|
||
5 "message": "OK",
|
||
|
||
6 "messageID": "message"
|
||
|
||
7 "originalQrcId": "AS1000670LSS7DN18SJQDNP4B05KLJL2",
|
||
|
||
8 "originalTrxId": "X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
|
||
|
||
9 "payerId": "*********1234",
|
||
|
||
10 "status": "ACWP",
|
||
|
||
11 "trxDT": 20230624143642,
|
||
|
||
12 "trxId": "A3024113609260070000086B8426B817"
|
||
|
||
13 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 12/16
|
||
|
||
Код ключа Тип данных required
|
||
|
||
command String (an-1…50) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
payrrn String (n-12) y
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**
|
||
|
||
Refunds Array y Массив объектов, содержащих информацию о возвратах по плат
|
||
|
||
При отсутствии возвратов, будет возвращён ответ с сообщением
|
||
|
||
refunds.TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
refunds.amount Number y Сумма Операции СБП B2C (возврат) в копейках. Целое, положител
|
||
|
||
refunds.originalQrcId String (an-32) y Идентификатор зарегистрированной Платёжной ссылки СБП (QR-к
|
||
|
||
refunds.originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B в НСПК
|
||
|
||
refunds.payerId String (an-15) y Маскированный номер телефона Клиента-Получателя (Плательщи
|
||
|
||
refunds.status String (an-4) y Статус операции возврата СБП (B2C):
|
||
|
||
1. ACWP — ACCEPTED возврат успешно выполнен
|
||
|
||
2. RJCT — REJECTED возврат отклонён
|
||
|
||
3. NTST — NOT_STARTED возврат не инициирован (получен успе
|
||
|
||
refunds.trxId String (an-32) y Идентификатор Операции возврата СБП B2C по сценарию «Возвра
|
||
|
||
refunds.trxDT String (n-4) y Дата и время выполнения Операции возврата СБП B2C по сцена
|
||
|
||
Формат: ГГГГММДДччммсс, UTC +0
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа «ACWP» и «RJCT»:
|
||
|
||
• 200 ОК
|
||
|
||
{
|
||
|
||
"command":"GetQRCreversalHistory",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"payrrn":"000000002212"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "message": "OK",
|
||
|
||
4 "refunds": [
|
||
|
||
5 {
|
||
|
||
6 "TermNo": 90080567,
|
||
|
||
7 "amount": 10000,
|
||
|
||
8 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 13/16
|
||
|
||
• 400 Bad Request
|
||
|
||
e) Примерный формат ответа «NTST»:
|
||
|
||
• 200 ОК
|
||
|
||
• 400 Bad Request
|
||
|
||
f) Примерный формат ответа при отсутствии возвратов по транзакции СБП C2B:
|
||
|
||
• 200 OK
|
||
|
||
Декодирование значения поля «message» - «По данной оплате возвраты не найдены».
|
||
|
||
• 400 Bad Request
|
||
|
||
9 "originalTrxId": "B51390819586020Z0000120011510503",
|
||
|
||
10 "payerId": "*********1234",
|
||
|
||
11 "status": "ACWP",
|
||
|
||
12 "trxDT": 20250519082345,
|
||
|
||
13 "trxId": "B51390823097450W0000180011510503"
|
||
|
||
14 },
|
||
|
||
15 {
|
||
|
||
16 "TermNo": 90080567,
|
||
|
||
17 "amount": 10000,
|
||
|
||
18 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
|
||
|
||
19 "originalTrxId": "B51390819586020Z0000120011510503",
|
||
|
||
20 "payerId": "*********1234",
|
||
|
||
21 "status": "RJCT",
|
||
|
||
22 "trxDT": 20250519083836,
|
||
|
||
23 "trxId": "A4327120041167130000020011381101"
|
||
|
||
24 }
|
||
|
||
25 ]
|
||
|
||
26 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "message": "OK",
|
||
|
||
4 "refunds": [
|
||
|
||
5 {
|
||
|
||
6 "TermNo": 90080567,
|
||
|
||
7 "amount": 10000,
|
||
|
||
8 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
|
||
|
||
9 "originalTrxId": "B51390819586020Z0000120011510503",
|
||
|
||
10 "payerId": "*********1234",
|
||
|
||
11 "status": "NTST",
|
||
|
||
12 "trxId": "B51390835362750D0000100011510503"
|
||
|
||
13 }
|
||
|
||
14 ]
|
||
|
||
15 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"message": "%u041F%u043E%20%u0434%u0430%u043D%u043D%u043E%u0439%20%u043E%u043F%u043B%u0430%u0442
|
||
|
||
}
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 14/16
|
||
|
||
7. Нотификация о финальном статусе возврата по динамическому QR-коду
|
||
|
||
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
|
||
|
||
Метод «b2c-refund/notification»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «b2c-refund/notification»
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежно
|
||
|
||
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B
|
||
|
||
trxId String (an-32) y Идентификатор Операции СБП B2C по сценар
|
||
|
||
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C
|
||
|
||
status String (an-4) y Финальный статус Операции СБП B2C:
|
||
|
||
«ACWP» — ACCEPTED операция завершена у
|
||
|
||
«RJCT» — REJECTED операция отклонена;
|
||
|
||
amount Number y Сумма операции в копейках
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**
|
||
|
||
payerId String (an-15) y Маскированный номер телефона Клиента-Полу
|
||
|
||
agentRefundRequestId String (an-32) y Уникальный идентификатор запроса, назначае
|
||
|
||
opkcRefundRequestId String (an-32) y Уникальный идентификатор запроса на возвра
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
b) Примерный формат запроса (по успешному возврату):
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "command":"b2c-refund/notification",
|
||
|
||
3 "messageID":" message",
|
||
|
||
4 "TermNo":"90080567",
|
||
|
||
5 "originalQrcId":"AS1000670LSS7DN18SJQDNP4B05KLJL2",
|
||
|
||
6 "originalTrxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
|
||
|
||
7 "trxId":" A3024113609260070000086B8426B817",
|
||
|
||
8 "trxDT":"20230624143642",
|
||
|
||
9 "status":"ACWP",
|
||
|
||
10 "amount":"10000",
|
||
|
||
11 "ErrorCode":"0",
|
||
|
||
12 "message":"OK",
|
||
|
||
13 "payerId":"*********1234",
|
||
|
||
14 "agentRefundRequestId":"00000000000000000182_abcd1994383",
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 15/16
|
||
|
||
В ответ ожидается:
|
||
|
||
• http-код «200» — Успешный ответ (Уведомление получено);
|
||
|
||
• http-код «500» — Внутренняя ошибка.
|
||
|
||
c) Примерный формат запроса (по отклоненному возврату):
|
||
|
||
В ответ ожидается:
|
||
|
||
• http-код «200» — Успешный ответ (Уведомление получено);
|
||
|
||
• http-код «500» — Внутренняя ошибка.
|
||
|
||
d) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
|
||
|
||
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП находится в разработке.
|
||
|
||
В случае добавления со стороны НСПК дополнительных параметров уведомления, система, принимающая их от шлюза Альфа-Банка,
|
||
|
||
15 "opkcRefundRequestId":"BR10000OKEISOIPM8ST8TBLQHIN9R185"
|
||
|
||
16 }
|
||
|
||
1 {
|
||
|
||
2 "command":"b2c-refund/notification",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "originalQrcId":"AS1000670LSS7DN18SJQDNP4B05KLJL2",
|
||
|
||
5 "originalTrxId":"X1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K2",
|
||
|
||
6 "trxId":"A3024113609260070000086B8426B817",
|
||
|
||
7 "trxDT":"20230624143642",
|
||
|
||
8 "status":"RJCT",
|
||
|
||
9 "amount":"10000",
|
||
|
||
10 "ErrorCode":"0",
|
||
|
||
11 "message":"OK",
|
||
|
||
12 "payerId":"*********1234"
|
||
|
||
13 }
|
||
|
||
12/23/25, 11:23 AM Динамический QR-код
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1 16/16
|
||
|
||
|
||
]]>
|
||
</_4_dynamic_QR_cods_md>
|
||
<_5_cache_payment_link_SBP_md>
|
||
<![CDATA[
|
||
Кассовая платёжная ссылка
|
||
|
||
Кассовая платёжная ссылка СБП
|
||
|
||
Кассовая платёжная ссылка — это гибридное решение, которое объединяет в себе преимущества статического и динамического QR-
|
||
|
||
Благодаря данному решению сам QR-код не меняется, но в то же время сумма оплаты передаётся с кассы, плательщик не может её и
|
||
|
||
Для совершения оплаты по кассовой платёжной ссылке достаточно один раз распечатать QR-код и разместить его в удобной прикас
|
||
покупки перед оплатой.
|
||
|
||
Для каждой кассы/терминала создается своя кассовая платёжная ссылка.
|
||
|
||
При каждой активации кассовой платёжной ссылки передаются значения параметров, соответствующие очередной покупке.
|
||
|
||
1. Запрос на регистрацию Кассовой платёжной ссылки СБП
|
||
|
||
Данный метод позволяет сгенерировать кассовую платёжную ссылку, которую в дальнейшем ТСП может распечатать в необходимо
|
||
|
||
Кроме того, метод предоставляет возможность привязывать, полученные от Банка NFC-таблички, к нужным кассам/терминалам.
|
||
|
||
Метод RegCashQRc
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «RegCashQRc».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
mediaType String o Тип картинки QR-кода
|
||
|
||
width String o Ширина картинка QR-кода
|
||
|
||
height String o Высота картинка QR-кода
|
||
|
||
redirectUrl String (ans-1024) о Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаю
|
||
|
||
Если все же требуется использовать в redirectUrl кириллические символы, необходимо пе
|
||
|
||
qrcId String (an-32) o Идентификатор QR-кода. Используется в случае, если необходимо привязать заранее зар
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назн
|
||
|
||
ErrorCode String (an-20) y Код от
|
||
|
||
TermNo String (an-20) y Уникал
|
||
|
||
content String y Base6
|
||
|
||
{
|
||
|
||
"command":"RegCashQRc",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"mediaType":"image/png",
|
||
|
||
"width":"600",
|
||
|
||
"height":"600",
|
||
|
||
"redirectUrl": "https://exampletsp.io/qwertyui"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 1/28
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1
|
||
|
||
Код ключа Тип данных required Назн
|
||
|
||
mediaType String y Тип ка
|
||
|
||
message String (ans-1024) y Расши
|
||
|
||
payload String (1…999) y Плате
|
||
|
||
qrcId String (an-32) y Идент
|
||
|
||
status String (an-20) y Статус
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
*** Формат payload может быть двух видов:
|
||
|
||
• https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9;
|
||
|
||
• https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9?type=01&bank=100000000008&crc=2557
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 ОК
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
2. Запрос на активацию Кассовой платёжной ссылки СБП
|
||
|
||
Запрос ActivateCashQRc направляется кассой/терминалом ТСП в Банк для активации Кассовой ссылки в целях ожидания оплаты пла
|
||
|
||
Метод ActivateCashQRc
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…
|
||
|
||
50)
|
||
|
||
y Тип запроса. Константа «ActivateCashQRc».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90080567,
|
||
|
||
"content": "iVBORw0KGgoAAAANSUhEUgVXne/ /B2Pwbvw1OqlrAAAAAElFTk…………………………....SuQmCC",
|
||
|
||
"mediaType": "image/png",
|
||
|
||
"message": "OK",
|
||
|
||
"payload": "https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"status": "CREATED"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 2/28
|
||
|
||
https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9
|
||
https://qr.nspk.ru/BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9?type=01&bank=100000000008&crc=2557
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). Необязательный параметр, при отсутствии его з
|
||
|
||
OrderNumber String (ans-
|
||
|
||
1000)
|
||
|
||
o Номер заказа.
|
||
|
||
В параметре должны передаваться только английские буквы и/или арабские цифры, подчеркивание
|
||
|
||
paymentPurpose String (ans-
|
||
|
||
140)
|
||
|
||
o Назначение платежа.
|
||
|
||
queryData.notificationUrl String (ans-
|
||
|
||
512)
|
||
|
||
o Полный URL для получения уведомления о финальном статусе оплаты QR-кода
|
||
|
||
Если параметр отсутствует, уведомление не производится.
|
||
|
||
qrTtl String (an-1…
|
||
|
||
2)
|
||
|
||
o Период использования Кассовой ссылки в минутах. Необязательное поле.
|
||
|
||
Допустимый диапазон: 5-20.
|
||
|
||
Если поле «qrTtl» не передано, то за период использования Кассовой ссылки берется значение по ум
|
||
|
||
redirectUrl String (ans-
|
||
|
||
1024)
|
||
|
||
o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаются только
|
||
|
||
перекодировать их в соответствующий ASCII код, используя percent-encoded octets согласно RFC398
|
||
|
||
Блок для внесения д
|
||
|
||
Код ключа Тип данных required
|
||
|
||
extJsonParams Object o
|
||
|
||
JsonParam1 String (ans-250) o
|
||
|
||
JsonParam2 String (ans-250) o
|
||
|
||
... ... ...
|
||
|
||
JsonParam10 String (ans-250) o
|
||
|
||
* Блок для передачи дополнительных идентификаторов ТСП в ежедневные реестры СБП. Функционал потребует дополнительной н
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
1 {
|
||
|
||
2 "command":"ActivateCashQRc",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "qrTtl":"5",
|
||
|
||
5 "amount":"10000",
|
||
|
||
6 "currency":"RUB",
|
||
|
||
7 "paymentPurpose":"Назаначение платежа",
|
||
|
||
8 "OrderNumber":"FYI123456",
|
||
|
||
9 "redirectUrl": "https://alfabank.ru/sme/payservice/sbp/",
|
||
|
||
10 "extJsonParams":
|
||
|
||
11 {
|
||
|
||
12 "JsonParam1":"Value",
|
||
|
||
13 "JsonParam2":"Value",
|
||
|
||
14 "JsonParam3":"Value",
|
||
|
||
15 "JsonParam4":"Value",
|
||
|
||
16 "JsonParam5":"Value",
|
||
|
||
17 "JsonParam6":"Value",
|
||
|
||
18 "JsonParam7":"Value",
|
||
|
||
19 "JsonParam8":"Value",
|
||
|
||
20 "JsonParam9":"Value",
|
||
|
||
21 "JsonParam10":"Value"
|
||
|
||
22 },
|
||
|
||
23 "queryData":
|
||
|
||
24 {
|
||
|
||
25 "notificationUrl":"https://sbp-payments",
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 3/28
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных
|
||
|
||
ErrorCode String (an-20)
|
||
|
||
TermNo String (an-20)
|
||
|
||
amount Number
|
||
|
||
currency String (ans-3)
|
||
|
||
message String (ans-1024)
|
||
|
||
paramsId String
|
||
|
||
paymentPurpose String (ans-140)
|
||
|
||
payrrn String (an-12)
|
||
|
||
qrcId String (an-32)
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 ОК
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
Примечание:
|
||
|
||
• При повторной активации прежние значения параметров Кассовой ссылки СБП заменяются на новые;
|
||
|
||
• Если Плательщик отсканирует QR-код активированной Кассовой ссылки СБП и перейдёт в Приложение Плательщика и при этом К
|
||
совершить оплату;
|
||
|
||
• Если в запросе на активацию Кассовой ссылки СБП не будет передан параметр «amount», то ответ вернется с ошибкой — " RQ05019
|
||
|
||
• Если при активации Кассовой ссылки СБП значение периода использования выходит за пределы допустимого диапазона 1-20 мин
|
||
значение периода использования Кассовой ссылки СБП — 1 минута, максимальное — 20.
|
||
|
||
• Если оплата с использованием Кассовой ссылки СБП имеет финальный статус RJCT (оплата не прошла), то ТСП может повторно а
|
||
|
||
26 }
|
||
|
||
27 }
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "amount": 10000,
|
||
|
||
5 "currency": "RUB",
|
||
|
||
6 "message": "OK",
|
||
|
||
7 "paramsId": "BP10001UMBREG8GI9AFRVAD7S7GJEK6E",
|
||
|
||
8 "paymentPurpose": "%u041D%u0430%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435 %u043F%u043B%u
|
||
|
||
9 "payrrn": "000056251465",
|
||
|
||
10 "qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
|
||
|
||
11 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 4/28
|
||
|
||
• Оплата с использованием Кассовой ссылки СБП невозможна, если:
|
||
а) истек период использования активированной Кассовой ссылки СБП;
|
||
б) кассовая ссылка СБП не была активирована вовсе или была деактивирована и не активирована вновь;
|
||
в) оплата по ней уже происходит, при этом для очередной оплаты она не была активирована вновь.
|
||
|
||
3. Запрос деактивации Кассовой платёжной ссылки СБП
|
||
|
||
Запрос DelCashQRc направляется кассой/терминалом ТСП в Банк для досрочной деактивации Кассовой ссылки.
|
||
|
||
Если Плательщик решил отказаться от покупки и не намерен совершать оплату, когда кассовая ссылка уже была активирована, то о
|
||
процедура оплаты. Деактивация Кассовой ссылки СБП влечет за собой отмену всех дальнейших действий для оплаты по активиров
|
||
|
||
Если кассовая ссылка была активирована, и по ней происходит оплата, то в ответе на запрос «Деактивация Кассовой ссылки СБП» ве
|
||
|
||
Метод DelCashQRc
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
command String (an-1…50) y
|
||
|
||
TermNo String (an-10) y
|
||
|
||
qrcId String(an-32) y
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
ErrorCode String (an-20) y
|
||
|
||
message String (ans-140) y
|
||
|
||
TermNo String (an-10) y
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
{
|
||
|
||
"command":"DelCashQRc",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90080567,
|
||
|
||
"message": "%u0417%u0430%u043F%u0440%u043E%u0441 %u043E%u0431%u0440%u0430%u0431%u043E%u0442%u043
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 5/28
|
||
|
||
4. Запрос статуса Кассовой платёжной ссылки СБП
|
||
|
||
• Направляется ТСП в Банк для проверки статуса ранее зарегистрированной кассовой ссылки, например, в целях проверки готовно
|
||
|
||
• Может быть направлен для проверки статуса после попытки активации, в случае, если на запрос активации не получен ответ от Н
|
||
|
||
• Успешный ответ содержит статус самой Кассовой ссылки, но не операции ее оплаты.
|
||
|
||
Метод GetCashQRCstatus
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
command String (an-1…50) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
qrcId String (an-32) y
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных
|
||
|
||
ErrorCode String (an-20)
|
||
|
||
message String (ans-140)
|
||
|
||
status String
|
||
|
||
paramsId String (an-32)
|
||
|
||
merchantId String (12)
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command": "GetCashQRCstatus",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"merchantId":"MB0000009603",
|
||
|
||
"message":"Запрос обработан успешно",
|
||
|
||
"qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"status": "WAITING_PAYMENT",
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 6/28
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
5. Запрос изменения параметров для зарегистрированной Кассовой платёжной ссылки СБП
|
||
|
||
Запрос позволяет изменить следующие параметры Кассовой ссылки СБП:
|
||
|
||
• Номер счёта юридического лица — «account»
|
||
|
||
• Номер терминала — «TermNo»
|
||
|
||
• Торгово-сервисную точку (ТСТ) — «merchantId»
|
||
|
||
• Ссылку для автоматического возврата в приложение или на сайт ТСП — «redirectUrl»
|
||
|
||
Смена счёта юридического лица
|
||
|
||
Метод ChangeAccForCashQRc
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «ChangeAccForC
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала,
|
||
|
||
qrcId String (an-32) y Идентификатор Кассовой ссылки СБП
|
||
|
||
account String (n-32) y Новый счёт юридического лица
|
||
|
||
b) Примерный формат запроса для смены номера счёта Кассовой ссылки СБП:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
ErrorCode String (an-20) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
account String (an-20) y
|
||
|
||
merchantId String (an-12) y
|
||
|
||
message String (ans-1024) y
|
||
|
||
"paramsId": "BP10001UMBREG8GI9AFRVAD7S7GJEK6E"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":"ChangeAccForCashQRc",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"account":"00000000000000001111"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 7/28
|
||
|
||
Код ключа Тип данных required
|
||
|
||
qrcId String(an-32) y
|
||
|
||
status String (an-4) o
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
Смена номера терминала/мерчанта для Кассовой ссылки СБП
|
||
|
||
При успешном выполнении запроса Кассовая ссылка СБП будет перенесена на новый терминал/мерчант
|
||
|
||
Метод ChangeAccForCashQRc
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «ChangeAccForCashQRc»
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала, на который Кассовая с
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
account String (n-32) y Счёт юридического лица, установленный для нового терминал
|
||
|
||
NewTermNo String (an-20) y Новый уникальный идентификатор терминала
|
||
|
||
NewMerchantId String (an-12) y/o Идентификатор новой ТСТ.
|
||
|
||
Поле обязательно, если терминал, на который переносится
|
||
|
||
b) Примерный формат запроса для переноса КС на новый терминал, зарегистрированный в рамках одной ТСТ:
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90080567,
|
||
|
||
"account": "00000000000000001111",
|
||
|
||
"merchantId": " MA0001111111",
|
||
|
||
"message": "OK",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"status": "UPDATED"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":"ChangeAccForCashQRc",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"account":"00000000000000001111",
|
||
|
||
"qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"NewTermNo":"90011111"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 8/28
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
ErrorCode String (an-20) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
account String (an-20) y
|
||
|
||
merchantId String (an-12) y
|
||
|
||
message String (ans-1024) y
|
||
|
||
qrcId String(an-32) y
|
||
|
||
status String (an-4) o
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
e) Примерный формат запроса для переноса КС на новый терминал, зарегистрированный в другой ТСТ или в другом юридическом
|
||
|
||
f) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
ErrorCode String (an-20) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
account String (an-20) y
|
||
|
||
merchantId String (an-12) y
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90011111,
|
||
|
||
"account": "00000000000000001111",
|
||
|
||
"merchantId": " MA0001111111",
|
||
|
||
"message": "OK",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"status": "UPDATED"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command": "ChangeAccForCashQRc",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"account": "00000000000000002222",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"NewTermNo": "90022222",
|
||
|
||
"NewMerchantId": "MA0002222222"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 9/28
|
||
|
||
Код ключа Тип данных required
|
||
|
||
message String (ans-1024) y
|
||
|
||
qrcId String(an-32) y
|
||
|
||
status String (an-4) o
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
g) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
h) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
ErrorCode String (an-20) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
account String (an-20) y
|
||
|
||
merchantId String (an-12) y
|
||
|
||
message String (ans-1024) y
|
||
|
||
qrcId String(an-32) y
|
||
|
||
status String (an-4) o
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
Перенос кассовой ссылки на нового мерчанта со старым номером терминала
|
||
|
||
При успешном выполнении запроса Кассовая ссылка СБП будет перенесена на нового мерчанта вместе со старым терминало
|
||
|
||
Метод ChangeAccForCashQRc
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «ChangeAccForC
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала,
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90022222,
|
||
|
||
"account": "00000000000000002222",
|
||
|
||
"merchantId": " MA0002222222",
|
||
|
||
"message": "OK",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"status": "UPDATED"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 10/28
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
account String (n-32) y Счёт юридического лица, используемый
|
||
|
||
NewMerchantId String (an-12) y Идентификатор новой ТСТ
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
ErrorCode String (an-20) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
account String (an-20) y
|
||
|
||
merchantId String (an-12) y
|
||
|
||
message String (ans-1024) y
|
||
|
||
qrcId String(an-32) y
|
||
|
||
status String (an-4) o
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
Смена ссылки для автоматического возврата в приложение или на сайт ТСП
|
||
|
||
При успешном выполнении запроса будет изменено значение поля «redirectUrl», указанное при первоначальной регистрации К
|
||
|
||
{
|
||
|
||
"command": "ChangeAccForCashQRc",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"account": "00000000000000002222",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"NewMerchantId": "MA0002222222"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90080567,
|
||
|
||
"account": "00000000000000002222",
|
||
|
||
"merchantId": " MA0002222222",
|
||
|
||
"message": "OK",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"status": "UPDATED"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 11/28
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «ChangeAccForCashQRc».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала, на который кассовая ссылка/NFC-табличка была
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
redirectUrl String (ans-1024) y Новая ссылка для автоматического возврата в приложение или на сайт ТСП.
|
||
|
||
Допускаются только символы в кодировке ASCII. Формат должен соответствовать пра
|
||
|
||
Если требуется использовать в redirectUrl кириллические символы, необходимо перек
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
ErrorCode String (an-20) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
account String (an-20) y
|
||
|
||
merchantId String (an-12) y
|
||
|
||
message String (ans-1024) y
|
||
|
||
qrcId String(an-32) y
|
||
|
||
status String (an-4) o
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
{
|
||
|
||
"command": "ChangeAccForCashQRc",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"redirectUrl": " https://alfabank.ru/sme/payservice/sbp/"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90080567,
|
||
|
||
"account": "00000000000000002222",
|
||
|
||
"merchantId": " MA0002222222",
|
||
|
||
"message": "OK",
|
||
|
||
"qrcId": " BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
"status": "UPDATED"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 12/28
|
||
|
||
6. Запрос на изменение номера терминала (TermNo) для зарегистрированной Кассовой платё
|
||
|
||
Данный запрос позволяет ТСП произвести смену номера терминала по ранее зарегистрированной Кассовой ссылке СБП на любой д
|
||
может быть использован и для перепривязки кассовой ссылки на новое ЮЛ, ИП.
|
||
|
||
Метод ChangeTermNoForCashQRc
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
command String (an-1…50) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
qrcId String (an-32) y
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терми
|
||
|
||
message String (ans-140) y Расшифровка кода ответа**
|
||
|
||
status String (an-4) y Статус выполнения перерегистрац
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command": "ChangeTermNoForCashQRc",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90080567,
|
||
|
||
"message": "OK",
|
||
|
||
"status": "UPDATED"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": "Код ответа",
|
||
|
||
"message": "Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 13/28
|
||
|
||
7. Запрос статуса оплаты по Кассовой платёжной ссылке СБП
|
||
|
||
Запрос статуса GetQRCstatus направляется кассой/терминалом ТСП в Банк для получения статуса Операции оплаты выпущенного ра
|
||
|
||
Запрос статуса направляется не ранее, чем через 10 секунд после формирования QR-кода и не чаще чем каждые 3 секунды.
|
||
|
||
Успешный ответ на запрос статуса можно получить в течении 30 дней после совершения оплаты по данному QR-коду.
|
||
|
||
В случае, если срок хранения данных истек, то в ответе на запрос вернется:
|
||
|
||
Метод GetQRCstatus
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «GetQRCstatus».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка.
|
||
|
||
qrcId String (an-32) y/o Идентификатор QR-кода (обязательно, если не передан «pa
|
||
|
||
paramsId String (an-32) y/o Идентификатор параметров ссылки СБП (если передан qrcId
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латин
|
||
|
||
Примечание: для кассовой платежной ссылки должен быть передан один из параметров: payrrn или qrcId + paramsId. Передавать в з
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
1-й вариант запроса:
|
||
|
||
2-й вариант запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
{
|
||
|
||
"ErrorCode":999,
|
||
|
||
"message":"Неизвестный код проблемы 999RQ05014"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":"GetQRCstatus",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"payrrn":"000056251465",
|
||
|
||
"messageID":"message"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":"GetQRCstatus",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"qrcId": "AS1R005G9DAOLK5L8S5OPR6HB23HSN0I",
|
||
|
||
"paramsId": "BP10001UMBREG8GI9AFRVAD7S7GJEK6E",
|
||
|
||
"messageID":"message"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 14/28
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
status String(an-10) y Статус оплаты QR-кода в НСПК*
|
||
|
||
Возможные значения:
|
||
|
||
1. ACWP — ACCEPTED операция завершена успешно;
|
||
|
||
2. RJCT — REJECTED операция отклонена;
|
||
|
||
3. NTST — NOT_STARTED операции по QR коду не существует;
|
||
|
||
4. RCVD — RECEIVED операция в обработке.
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК.
|
||
|
||
trxDT String (n-14) y Дата и время платежа по Гринвичу.
|
||
|
||
Формат — ГГГГММДДччммсс.
|
||
|
||
payrrn String (n-12) o Референсный идентификатор запроса в системе Банка. Значение возвращается если зап
|
||
|
||
CreditDatePos String (ans 1-256) o Дата операции, установленная Банком Получателя (ГГГГММДД)
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
Url String (ans 1-512) o Полный URL для получения уведомления ТСП о финальном статусе оплаты QR-кода. Зн
|
||
|
||
paramsId String (an-32) o Идентификатор активных значений параметров Платежной ссылки СБП. Передается, есл
|
||
|
||
payerId String (ans) y Идентификатор плательщика (маскированный номер телефона плательщика).
|
||
|
||
Kzo String (ans 1-128) o Контрольное Значение Операции СБП. Формируется ОПКЦ СБП.
|
||
|
||
Присутствует при условии, что Операция СБП C2B по запрашиваемому qrcId завершена
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
|
||
|
||
Значение параметра возвращается в случае, если оно указано в запросе.
|
||
|
||
merchantId String (12) o ID мерчанта (ТСТ) в Банке
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
Примечание:
|
||
|
||
• Успешно оплаченным считается только QR-код, для которого получен «status» = «ACWP» с идентификатором платежа «trxId» и «E
|
||
|
||
• В случае если получен «status» = «NTST» — означает необходимость повтора запроса до получения одного из финальных статусов
|
||
|
||
• Получение «status» = «RJCT» означает отказ в оплате данного QR-кода.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "message": "OK",
|
||
|
||
4 "qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
5 "status": "ACWP",
|
||
|
||
6 "trxId": "A30180803159571F0000097B3DA2D4A7",
|
||
|
||
7 "trxDT": "20230118080315",
|
||
|
||
8 "payrrn": "000056251465",
|
||
|
||
9 "CreditDatePos": "20230118",
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 15/28
|
||
|
||
Примечание:
|
||
|
||
• Текстовые данные передаются в формате urlencoded.
|
||
|
||
• В поле " trxDT» содержится дата и время транзакции на ПШ Банка в формате ГГГГММДДччммсс.
|
||
|
||
В случае получения значения trxId = null необходимо повторить запрос. Отсутствие значения означает, что в СБП еще нет успешного
|
||
|
||
• 400 Bad Request
|
||
|
||
8. Нотификация ТСП о финальном статусе оплаты по Кассовой платёжной ссылке СБП
|
||
|
||
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
|
||
|
||
Метод «qrc/notification»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «qrc/notification»
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
trxId String(an-32) y Уникальный идентификатор платежа в Н
|
||
|
||
paramsId String (an-32) y Идентификатор активных значений пара
|
||
|
||
status String(an-10) y Статус оплаты QR-кода в НСПК.
|
||
|
||
Возможные значения:
|
||
|
||
— ACWP — ACCEPTED операция заверш
|
||
|
||
— RJCT — REJECTED операция отклоне
|
||
|
||
amount Number y Сумма платежа в минорных единицах (ко
|
||
|
||
timestamp YYYY-MMDDThh: mm: ss[.SSS]
|
||
|
||
или
|
||
|
||
YYYY-MMDDThh: mm: ss[.SSSZ]
|
||
|
||
y Метка времени НСПК по Гринвичу (GMT)
|
||
|
||
payerId String (ans) y Идентификатор плательщика (маскирова
|
||
|
||
kzo String (ans 1-128) o Контрольное Значение Операции СБП. Ф
|
||
|
||
Присутствует при условии, что Операция
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
10 "TermNo": 90080567,
|
||
|
||
11 "amount": 10000,
|
||
|
||
12 "currency": "RUB",
|
||
|
||
13 "Url":"https://sbp-payments",
|
||
|
||
14 "paramsId": "BP10001UMBREG8GI9AFRVAD7S7GJEK6E",
|
||
|
||
15 "payerId": "*********1234",
|
||
|
||
16 "kzo": "b02bf0fb819dcc6249f1f6be81da28062236febcb25774a29ebdd770f2a35ba29fa038e459c0845ade1ef2
|
||
|
||
17 "messageID ":"message"
|
||
|
||
18 "merchantId": "MB0000009603"
|
||
|
||
19 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 16/28
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
CreditDatePos String (ans 1-256) o Дата операции, установленная Банком П
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) ВС отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
|
||
|
||
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП находится в разработке.
|
||
|
||
В случае добавления со стороны НСПК дополнительных параметров уведомления, система принимающая их от шлюза Альфа-Банка
|
||
|
||
9. Запрос операций по Кассовой платёжной ссылке СБП
|
||
|
||
• Запрос позволяет выполнить поиск всех операций оплаты и возвратов, произведенных по определенной кассовой платежной ссы
|
||
|
||
• В ответе платежный шлюз Банка возвращает результат обработки запроса с разбивкой по массивам payments (оплаты) и refunds (в
|
||
|
||
Метод «GetCashQrcId»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
command String (an-1…50) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
qrcId String (an-32) y
|
||
|
||
dateFrom date-time y
|
||
|
||
dateTo date-time y
|
||
|
||
Примечание: Временной диапазон dateFrom — dateTo не должен быть более семи календарных дней. Время в параметре dateFrom д
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
1 {
|
||
|
||
2 "command":"qrc/notification",
|
||
|
||
3 "qrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
4 "trxId":"A30180803159571F0000097B3DA2D4A7",
|
||
|
||
5 "paramsId":"BP10001UMBREG8GI9AFRVAD7S7GJEK6E",
|
||
|
||
6 "status":"ACWP",
|
||
|
||
7 "amount":"10000",
|
||
|
||
8 "timestamp":"2023-02-07T08:35:31.102Z",
|
||
|
||
9 "payerId":"*********1234",
|
||
|
||
10 "kzo":"d4d45d9db80b29fec2aacbfaf778edc49ff615c13021a2bf5a05f35d8afbcc76f84ceda7598695956c1d5168b1f
|
||
|
||
11 "payrrn":"000056251465",
|
||
|
||
12 "TermNo":"90080567",
|
||
|
||
13 "CreditDatePos":"20230207"
|
||
|
||
14 }
|
||
|
||
{
|
||
|
||
"command": "GetCashQrcId",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"qrcId": "BS10005FR8SV6EI9931BIQGPSUEG8ELL",
|
||
|
||
"dateFrom": "2023-03-12T17:30:09",
|
||
|
||
"dateTo": "2023-03-12T23:25:15"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 17/28
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный
|
||
|
||
payments array o **Массив пла
|
||
|
||
operationId string y id платежа в
|
||
|
||
status string (enum) y Статус оплат
|
||
|
||
— SUCCESS,
|
||
|
||
— REJECTED
|
||
|
||
reason string o Описание со
|
||
|
||
amount number y Сумма в коп
|
||
|
||
date date-time y Формат YYY
|
||
|
||
refunds array o **Массив воз
|
||
|
||
refundId string y id возврата в
|
||
|
||
date date-time y Формат YYY
|
||
|
||
status string (enum) y Статус возвр
|
||
|
||
— SUCCESS,
|
||
|
||
REJECTED,
|
||
|
||
reason string o Описание пр
|
||
|
||
amount number y Сумма в коп
|
||
|
||
* Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "payments": [
|
||
|
||
5 {
|
||
|
||
6 "amount": 10000,
|
||
|
||
7 "date": "2024-02-07T14:08:13",
|
||
|
||
8 "operationId": "A4038110812414010000020011180902",
|
||
|
||
9 "reason": "Запрос обработан успешно",
|
||
|
||
10 "status": "SUCCESS"
|
||
|
||
11 }
|
||
|
||
12 ],
|
||
|
||
13 "refunds": [
|
||
|
||
14 {
|
||
|
||
15 "amount": 10000,
|
||
|
||
16 "date": "2024-02-07T14:19:36",
|
||
|
||
17 "reason": "Платёж проведён",
|
||
|
||
18 "refundId": "A4038111858413010000020011180902",
|
||
|
||
19 "status": "SUCCESS"
|
||
|
||
20 }
|
||
|
||
21 ]
|
||
|
||
22 }
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 18/28
|
||
|
||
e) При проверке обязательности заполнения параметров запроса, в случае, если какой-либо параметр не заполнен в ответе вернуть
|
||
|
||
ErrorCode message
|
||
|
||
"3" Не передан обязательный параметр dateFrom/dateTo
|
||
|
||
"16" Не передан параметр TermNo
|
||
|
||
"41" Не передан параметр qrcId
|
||
|
||
"301" Превышен временной диапазон dateFrom-dateTo
|
||
|
||
10. Запрос проведения возврата по успешной оплате по Кассовой платёжной ссылке СБП
|
||
|
||
Возврат по СБП состоит из 2х последовательных запросов:
|
||
|
||
• GetQRCreversalData — проверка возможности проведения возврата;
|
||
|
||
• QRCreversal — выполнение непосредственно самого возврата.
|
||
|
||
В случае если ТСП инициирует выполнение повторных операций СБП B2C по одной и той же операции СБП C2B, то допускается не б
|
||
|
||
Возврат в один этап. При направлении запроса «QRCReversal», с заполненным полем messageID будет произведен возврат в один
|
||
|
||
10.1. Запрос возможности проведения возврата
|
||
|
||
Запрос GetQRCreversalData направляется ТСП в Банк для проверки возможности возврата по ранее оплаченному QR-коду и получен
|
||
|
||
Метод GetQRCreversalData
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «GetQRCreversalData».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка (обязательно, если не
|
||
|
||
trxId String (an-32) y/o Уникальный идентификатор платежа в НСПК (обязательно, если не передан «p
|
||
|
||
trxDT String (n-14) o Дата и время отменяемого платежа.
|
||
|
||
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата не пер
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого значе
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
ReturnRestAmount Boolean o Проверка доступного остатка для совершения возврата.
|
||
|
||
Доступные значения:
|
||
|
||
— true
|
||
|
||
— false
|
||
|
||
Примечание:
|
||
|
||
• Для поиска оригинальной транзакции обязательным является один из параметров: «payrrn» или «trxId»;
|
||
|
||
• Терминалы с подключенным сканером и распознаванием QR-кодов могут получить «qrcId», распарсив строку QR-кода с чека опла
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 19/28
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
message String (ans-140) y Расшифровка кода ответа**.
|
||
|
||
messageID String (an-1…50) y/o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
payerBnkBIC String (n-9) y БИК банка получателя
|
||
|
||
payerBnkName String (an-50) y Наименование банка получателя
|
||
|
||
payerId String (n-13) y Идентификатор получателя (маскированный номер телефона получателя).
|
||
|
||
payerPam String (ans 1…140) y PAM получателя
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка
|
||
|
||
qrcId String(an-32) y Идентификатор QR-кода.
|
||
|
||
trxDT String (n-14) y Дата и время платежа в AnyWay (ГГГГММДДччммсс)
|
||
|
||
trxId String (an-32) y Уникальный идентификатор платежа в НСПК
|
||
|
||
restAmount Number (с двумя знаками после точки) o Сумма доступного остатка к возврату.
|
||
|
||
Если в запросе передано значение "ReturnRestAmount" : true, то в ответе д
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
1 {
|
||
|
||
2 "command":"GetQRCreversalData",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "payrrn":"000056251465",
|
||
|
||
5 "trxId": "A30180803159571F0000097B3DA2D4A7",
|
||
|
||
6 "trxDT":"20230416082214",
|
||
|
||
7 "amount":"10000",
|
||
|
||
8 "currency":"RUB",
|
||
|
||
9 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
10 "ReturnRestAmount": true
|
||
|
||
11 }
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "message": "OK",
|
||
|
||
5 "messageID":"message",
|
||
|
||
6 "payerBnkBIC": "044525225",
|
||
|
||
7 "payerBnkName": "Альфа-Банк",
|
||
|
||
8 "payerId": "*1234",
|
||
|
||
9 "payerPam": "ИИИ",
|
||
|
||
10 "payrrn": "000056251465",
|
||
|
||
11 "qrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
12 "trxDT": 20230118124954,
|
||
|
||
13 "trxId": "A3018124954175080000087B3DA2D4A7",
|
||
|
||
14 "restAmount":"99.87"
|
||
|
||
15 }
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 20/28
|
||
|
||
Примечание:
|
||
|
||
• Текстовые данные передаются в формате urlencoded;
|
||
|
||
• В случае получения "message»: «Получен отказ на запрос возврата. Статус Recall, ErrDebetMerchant: KSM0284 Invalid special cond
|
||
|
||
• 400 Bad Request
|
||
|
||
10.2. Запрос возврата оплаты
|
||
|
||
Запрос QRCreversal направляется ТСП в Банк для возврата по ранее произведенной оплате QR. Возврат производится только на сче
|
||
|
||
Метод QRCreversal.
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «QRCreversal».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
payrrn String (n-12) y/o Референсный идентификатор запроса в системе Банка (обязательно, есл
|
||
|
||
trxId String (an-32) y/o Уникальный идентификатор платежа в НСПК (обязательно, если не перед
|
||
|
||
trxDT String (n-14) o Дата и время отменяемого платежа.
|
||
|
||
amount Number o Сумма возврата в минорных единицах (копейках). Если сумма возврата н
|
||
|
||
currency String (ans-3) o Код валюты (для рублей должен передаваться «RUB»). В случае пустого
|
||
|
||
messageID String (an-1…50) y/o Уникальный идентификатор сообщения, GUID из сообщения «GetQRCrev
|
||
|
||
queryData.notificationUrl String (ans-512) o Полный URL для получения уведомления о финальном статусе возврата
|
||
|
||
ReturnRestAmount Boolean o Проверка доступного остатка для совершения возврата.
|
||
|
||
Доступные значения:
|
||
|
||
— true
|
||
|
||
— false
|
||
|
||
Блок для внесения д
|
||
|
||
Код ключа Тип данных required
|
||
|
||
extJsonParams Object o
|
||
|
||
JsonParam1 String (ans-250) o
|
||
|
||
JsonParam2 String (ans-250) o
|
||
|
||
... ... ...
|
||
|
||
JsonParam10 String (ans-250) o
|
||
|
||
* messageID — необходимо передавать точное значение, которые было указано в ответе на запрос GetQRCreversalData. Если значени
|
||
на возврат.
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 21/28
|
||
|
||
** Блок для передачи дополнительных идентификаторов ТСП в ежедневные реестры СБП. Функционал потребует дополнительной
|
||
|
||
Примечание: Для поиска оригинальной транзакции обязательным является один из параметров: «payrrn» или «trxId».
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
trxDT String(n-14) y Дата и время операции возврата (ГГГГММДДччммсс).
|
||
|
||
trxId String(an-32) y Уникальный идентификатор операции возврата в НСПК.
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
|
||
|
||
restAmount Number (с двумя знаками после точки) o Сумма доступного остатка к возврату.
|
||
|
||
Если в запросе передано значение "ReturnRestAmount" : true, то в ответе дол
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
1 {
|
||
|
||
2 "command":"QRCreversal",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "payrrn":"000056251465",
|
||
|
||
5 "trxId":"A30180803159571F0000097B3DA2D4A7",
|
||
|
||
6 "trxDT":"20230416082214",
|
||
|
||
7 "amount":"10000",
|
||
|
||
8 "currency":"RUB",
|
||
|
||
9 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
10 "extJsonParams":
|
||
|
||
11 {
|
||
|
||
12 "JsonParam1":"Value",
|
||
|
||
13 "JsonParam2":"Value",
|
||
|
||
14 "JsonParam3":"Value",
|
||
|
||
15 "JsonParam4":"Value",
|
||
|
||
16 "JsonParam5":"Value",
|
||
|
||
17 "JsonParam6":"Value",
|
||
|
||
18 "JsonParam7":"Value",
|
||
|
||
19 "JsonParam8":"Value",
|
||
|
||
20 "JsonParam9":"Value",
|
||
|
||
21 "JsonParam10":"Value"
|
||
|
||
22 },
|
||
|
||
23 "queryData":
|
||
|
||
24 {
|
||
|
||
25 "notificationUrl":"http://sbp-refunds/"
|
||
|
||
26 },
|
||
|
||
27 "ReturnRestAmount": true
|
||
|
||
28 }
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 22/28
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
11. Запрос статуса возврата СБП (B2C)
|
||
|
||
Метод «GetQRCreversalStatus» необходим ТСП для уточнения статуса операции B2C (метод QRCreversal).
|
||
|
||
В запросе «GetQRCreversalStatus» обязательно должна быть передана пара параметров:
|
||
|
||
1. «payrrn» или «originalTrxId» Один из параметров «payrrn» или «originalTrxId» используется для нахождения исходного платежа C2
|
||
|
||
2. «trxId» или «messageID». Один из параметров «trxId» или «messageID» используется для нахождения операции возврата B2C, по
|
||
|
||
Метод «GetQRCreversalStatus»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
command String (an-1…50) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
payrrn String (n-12) y/o
|
||
|
||
(обязательно, если не передан параметр «originalTrxId»)
|
||
|
||
originalTrxId String (an-32) y/o
|
||
|
||
(обязательно, если не передан параметр «payrrn»)
|
||
|
||
trxId String (an-32) y/o
|
||
|
||
(обязательно, если не передан messageID,)
|
||
|
||
messageID String (ans-1…1024) y/o
|
||
(обязательно, если не передан trxId)
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
4 "amount": 10000,
|
||
|
||
5 "currency": "RUB",
|
||
|
||
6 "message": "%u0421%u0442%u0430%u0442%u0443%u0441%20%u0432%u044B%u044F%u0441%u043D%u0435%u043D%
|
||
|
||
7 "messageID":"message"
|
||
|
||
8 "payrrn": "000056251465",
|
||
|
||
9 "trxDT": 20230614061308,
|
||
|
||
10 "trxId": "B3018130524291090000167B3DA2D4A7",
|
||
|
||
11 "restAmount": "99.87"
|
||
|
||
12 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":"GetQRCreversalStatus",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"payrrn":"000056251465",
|
||
|
||
"originalTrxId":"A30180803159571F0000097B3DA2D4A7",
|
||
|
||
"trxId":"B3018130524291090000167B3DA2D4A7",
|
||
|
||
"messageID":"message"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 23/28
|
||
|
||
c) Примерный формат ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ошибки*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
Url String (ans 1-512) o Полный URL получения уведомления для ТСП — значение параметра,
|
||
|
||
amount Number y Сумма Операции СБП в копейках. Целое, положительное число. Валют
|
||
|
||
message String (ans-1024) y Описание результата выполнения запроса**.
|
||
|
||
messageID String (ans-1024) o Значение параметра «messageID» из запроса «QRCreversal».
|
||
|
||
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежной ссылки СБП, по которо
|
||
|
||
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B.
|
||
|
||
payerId String (an-13) y Маскированный номер телефона Клиента-Получателя (Плательщика в
|
||
|
||
status String (an-4) y Статус операции возврата СБП (B2C):
|
||
|
||
ACWP — ACCEPTED операция завершена успешно;
|
||
|
||
RJCT — REJECTED операция отклонена;
|
||
|
||
NTST — Статус операции неизвестен.
|
||
|
||
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C по сценарию «Возврат п
|
||
|
||
trxId String (an-32) y Уникальный идентификатор операции возврата в НСПК.
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 ОК
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "amount": 10000,
|
||
|
||
5 "message": "OK",
|
||
|
||
6 "messageID": "message"
|
||
|
||
7 "originalQrcId": "BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
8 "originalTrxId": "A30180803159571F0000097B3DA2D4A7",
|
||
|
||
9 "payerId": "*********1234",
|
||
|
||
10 "status": "ACWP",
|
||
|
||
11 "trxDT": 20230614061308,
|
||
|
||
12 "trxId": "B3018130524291090000167B3DA2D4A7"
|
||
|
||
13 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 24/28
|
||
|
||
12. Запрос истории возвратов по определённой транзакции СБП C2B
|
||
|
||
Запрос позволяет ТСП проверить все совершённые возвраты по определённой транзакции СБП C2B.
|
||
|
||
В ответе на запрос возвращаются как успешные, так и неуспешные попытки возвратов.
|
||
|
||
Метод GetQRCreversalHistory
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required
|
||
|
||
command String (an-1…50) y
|
||
|
||
TermNo String (an-20) y
|
||
|
||
payrrn String (n-12) y
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**
|
||
|
||
Refunds Array y Массив объектов, содержащих информацию о возвратах по плат
|
||
|
||
При отсутствии возвратов, будет возвращён ответ с сообщением
|
||
|
||
refunds.TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
refunds.amount Number y Сумма Операции СБП B2C (возврат) в копейках. Целое, положител
|
||
|
||
refunds.originalQrcId String (an-32) y Идентификатор зарегистрированной Платёжной ссылки СБП (QR-к
|
||
|
||
refunds.originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B в НСПК
|
||
|
||
refunds.payerId String (an-15) y Маскированный номер телефона Клиента-Получателя (Плательщи
|
||
|
||
refunds.status String (an-4) y Статус операции возврата СБП (B2C):
|
||
|
||
1. ACWP — ACCEPTED возврат успешно выполнен
|
||
|
||
2. RJCT — REJECTED возврат отклонён
|
||
|
||
3. NTST — NOT_STARTED возврат не инициирован (получен успе
|
||
|
||
refunds.trxId String (an-32) y Идентификатор Операции возврата СБП B2C по сценарию «Возвра
|
||
|
||
refunds.trxDT String (n-4) y Дата и время выполнения Операции возврата СБП B2C по сцена
|
||
|
||
Формат: ГГГГММДДччммсс, UTC +0
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа «ACWP» и «RJCT»:
|
||
|
||
{
|
||
|
||
"command":"GetQRCreversalHistory",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"payrrn":"000000002212"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 25/28
|
||
|
||
• 200 ОК
|
||
|
||
• 400 Bad Request
|
||
|
||
e) Примерный формат ответа «NTST»:
|
||
|
||
• 200 ОК
|
||
|
||
• 400 Bad Request
|
||
|
||
f) Примерный формат ответа при отсутствии возвратов по транзакции СБП C2B:
|
||
|
||
• 200 OK
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "message": "OK",
|
||
|
||
4 "refunds": [
|
||
|
||
5 {
|
||
|
||
6 "TermNo": 90080567,
|
||
|
||
7 "amount": 10000,
|
||
|
||
8 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
|
||
|
||
9 "originalTrxId": "B51390819586020Z0000120011510503",
|
||
|
||
10 "payerId": "*********1234",
|
||
|
||
11 "status": "ACWP",
|
||
|
||
12 "trxDT": 20250519082345,
|
||
|
||
13 "trxId": "B51390823097450W0000180011510503"
|
||
|
||
14 },
|
||
|
||
15 {
|
||
|
||
16 "TermNo": 90080567,
|
||
|
||
17 "amount": 10000,
|
||
|
||
18 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
|
||
|
||
19 "originalTrxId": "B51390819586020Z0000120011510503",
|
||
|
||
20 "payerId": "*********1234",
|
||
|
||
21 "status": "RJCT",
|
||
|
||
22 "trxDT": 20250519083836,
|
||
|
||
23 "trxId": "A4327120041167130000020011381101"
|
||
|
||
24 }
|
||
|
||
25 ]
|
||
|
||
26 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "message": "OK",
|
||
|
||
4 "refunds": [
|
||
|
||
5 {
|
||
|
||
6 "TermNo": 90080567,
|
||
|
||
7 "amount": 10000,
|
||
|
||
8 "originalQrcId": "AS1F004F30VC6B4A9GRBENS0HI6LGRJM",
|
||
|
||
9 "originalTrxId": "B51390819586020Z0000120011510503",
|
||
|
||
10 "payerId": "*********1234",
|
||
|
||
11 "status": "NTST",
|
||
|
||
12 "trxId": "B51390835362750D0000100011510503"
|
||
|
||
13 }
|
||
|
||
14 ]
|
||
|
||
15 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 26/28
|
||
|
||
Декодирование значения поля «message» - «По данной оплате возвраты не найдены».
|
||
|
||
• 400 Bad Request
|
||
|
||
13. Нотификация о финальном статусе возврата по Кассовой платёжной ссылке СБП
|
||
|
||
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
|
||
|
||
Метод «b2c-refund/notification»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «b2c-refund/notification»
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
originalQrcId String (an-32) y Идентификатор зарегистрированной Платежно
|
||
|
||
originalTrxId String (an-32) y Идентификатор исходной Операции СБП C2B
|
||
|
||
trxId String (an-32) y Идентификатор Операции СБП B2C по сценар
|
||
|
||
trxDT String (n-14) y Дата и время выполнения Операции СБП B2C
|
||
|
||
status String (an-4) y Финальный статус Операции СБП B2C:
|
||
|
||
"ACWP" — ACCEPTED операция завершена ус
|
||
|
||
"RJCT" — REJECTED операция отклонена;
|
||
|
||
amount Number y Сумма операции в копейках
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**
|
||
|
||
payerId String (an-15) y Маскированный номер телефона Клиента-Полу
|
||
|
||
agentRefundRequestId String (an-32) y Уникальный идентификатор запроса, назначае
|
||
|
||
opkcRefundRequestId String (an-32) y Уникальный идентификатор запроса на возвра
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
b) Примерный формат запроса (по успешному возврату):
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"message": "%u041F%u043E%20%u0434%u0430%u043D%u043D%u043E%u0439%20%u043E%u043F%u043B%u0430%u0442
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "command":"b2c-refund/notification",
|
||
|
||
3 "messageID":" message",
|
||
|
||
4 "TermNo":"90080567",
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 27/28
|
||
|
||
В ответ ожидается:
|
||
|
||
• http-код «200» — Успешный ответ (Уведомление получено);
|
||
|
||
• http-код «500» — Внутренняя ошибка.
|
||
|
||
c) Примерный формат запроса (по отклоненному возврату):
|
||
|
||
В ответ ожидается:
|
||
|
||
• http-код «200» — Успешный ответ (Уведомление получено);
|
||
|
||
• http-код «500» — Внутренняя ошибка.
|
||
|
||
d) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
|
||
|
||
В настоящий момент ответ ВС не обрабатывается шлюзом Агента ТСП. Обработка ответов ТСП находится в разработке.
|
||
|
||
В случае добавления со стороны НСПК дополнительных параметров уведомления, система, принимающая их от шлюза Альфа-Банка,
|
||
|
||
5 "originalQrcId":"BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
6 "originalTrxId":"A3018124954175080000087B3DA2D4A7",
|
||
|
||
7 "trxId":"B3018130524291090000167B3DA2D4A7",
|
||
|
||
8 "trxDT":"20230614061308",
|
||
|
||
9 "status":"ACWP",
|
||
|
||
10 "amount":"10000",
|
||
|
||
11 "ErrorCode":"0",
|
||
|
||
12 "message":"OK",
|
||
|
||
13 "payerId":"*********1234",
|
||
|
||
14 "agentRefundRequestId":"00000000000000000182_abcd1994383",
|
||
|
||
15 "opkcRefundRequestId":"BR10000OKEISOIPM8ST8TBLQHIN9R185"
|
||
|
||
16 }
|
||
|
||
1 {
|
||
|
||
2 "command":"b2c-refund/notification",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "originalQrcId":" BS1R001P1UIGJCFJ9RDQ8974M1I4CJO9",
|
||
|
||
5 "originalTrxId":" A3018124954175080000087B3DA2D4A7",
|
||
|
||
6 "trxId":"A3024113609260070000086B8426B817",
|
||
|
||
7 "trxDT":"20230614061308",
|
||
|
||
8 "status":"RJCT",
|
||
|
||
9 "amount":"10000",
|
||
|
||
10 "ErrorCode":"0",
|
||
|
||
11 "message":"OK",
|
||
|
||
12 "payerId":"*********1234"
|
||
|
||
13 }
|
||
|
||
12/23/25, 11:24 AM Кассовая платёжная ссылка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1 28/28
|
||
|
||
|
||
]]>
|
||
</_5_cache_payment_link_SBP_md>
|
||
<_6_link_account_subscription_SBP_md>
|
||
<![CDATA[
|
||
Привязка счёта/подписка СБП
|
||
|
||
Привязка счёта/подписка СБП
|
||
|
||
1. Привязка счёта без оплаты (регистрация QR-кода для привязки счёта/подписки по СБП)
|
||
|
||
• Запрос «Регистрация QR-кода для привязки счёта/подписки по СБП» позволяет Плательщику выполнить привязку своего банковс
|
||
проведения оплаты СБП C2B.
|
||
|
||
• Последующие платежи с привязанного счета в адрес данного ТСП в рамках операций СБП C2B будут выполняться без участия Пла
|
||
|
||
• Сценарий может применяться как для разовых, так и для регулярных платежей.
|
||
|
||
1.1. Метод RegQRcSub
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип
|
||
данных required Назначение
|
||
|
||
command String (an-
|
||
|
||
1…50)
|
||
|
||
y Тип запроса. Константа «RegQRcSub».
|
||
|
||
TermNo String (an-
|
||
20)
|
||
|
||
y Уникальный идентификатор терминала.
|
||
|
||
qrcType String (an-
|
||
|
||
32)
|
||
|
||
y Тип запрашиваемого QR-кода. Константа — «03».
|
||
|
||
subscriptionPurpose String (ans-
|
||
|
||
140)
|
||
|
||
y Цель привязки счета. Информация от ТСП с деталями привязки счета. Данная информация будет отобража
|
||
|
||
оформлении привязки счета в ДБО Банка Плательщика. Рекомендуется указывать подробную информацию
|
||
применимо, регулярность платежей, сумму регулярных платежей и прочее*.
|
||
|
||
queryData.notificationUrl String (ans-
|
||
|
||
512)
|
||
|
||
y Полный URL для получения уведомления о результате привязки счета.
|
||
|
||
qrTtl String (an-
|
||
|
||
1…6)
|
||
|
||
o Срок жизни Функциональной ссылки СБП в минутах.
|
||
|
||
Минимальное допустимое значение — «1». Максимальное допустимое значение — «129 600» (90 дней).
|
||
|
||
Рекомендация: устанавливать срок жизни Функциональной ссылки СБП не менее «5» минут. Если поле
|
||
|
||
будет использовано значение по умолчанию — «4 320» минут (3 суток).
|
||
|
||
redirectUrl String (ans-
|
||
|
||
1024)
|
||
|
||
о Содержит ссылку для автоматического возврата в приложение или на интернет страницу. Допускаются тол
|
||
|
||
Формат должен соответствовать правилам кодировки URL.
|
||
Если все же требуется использовать в redirectUrl кириллические символы, необходимо перекодировать их в
|
||
|
||
используя percent-encoded octets согласно RFC3986.
|
||
|
||
Если требуется сформировать QR-код для привязки дополнительного счёта Плательщика в том же Б
|
||
|
||
Код ключа Тип
|
||
данных required Назначение
|
||
|
||
subscriptionServiceId String (32) о Идентификатор привязки. Обязательно при наличии subscriptionServiceName, т. к. параметры subscriptionSe
|
||
|
||
могут быть переданы только вместе. При получении параметров subscriptionServiceId и subscriptionServiceN
|
||
|
||
использовать их в ходе проверки данных привязки счёта на уникальность.
|
||
|
||
subscriptionServiceName String (70) о Наименование привязки. Обязательно при наличии subscriptionServiceId, т. к. параметры subscriptionService
|
||
|
||
быть переданы только вместе. При получении параметров subscriptionServiceId и subscriptionServiceName Б
|
||
|
||
использовать их в ходе проверки данных привязки счёта на уникальность.
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 1/13
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1
|
||
|
||
Примечание: При отсутствии данных в поле subscriptionPurpose ответ вернется с ошибкой:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
payload String (1…999) y Платежная ссылка***.
|
||
|
||
payrrn String (an-12) y Референсный идентификатор запроса в системе Банка
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
*** Формат payload может быть двух видов:
|
||
|
||
• https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L
|
||
|
||
• https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L?type=03&bank=100000000008&crc=61C4
|
||
|
||
d) Примерный формат ответа
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
1 {
|
||
|
||
2 "command":"RegQRcSub",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "qrTtl":"10",
|
||
|
||
5 "qrcType":"03",
|
||
|
||
6 "subscriptionPurpose":"Подписка на оплату услуг Интернет 500р./мес.",
|
||
|
||
7 "queryData":
|
||
|
||
8 {
|
||
|
||
9 "notificationUrl":"https://sbp-subscription"
|
||
|
||
10 },
|
||
|
||
11 "redirectUrl":"https://exampletsp.io/qwertyui"
|
||
|
||
12 }
|
||
|
||
{
|
||
|
||
"ErrorCode": 30,
|
||
|
||
"message": "Отсутствуют данные в полях: subscriptionPurpose"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"RQ00000",
|
||
|
||
"message":"Запрос обработан успешно",
|
||
|
||
"qrcId":"AB1S000V3LEOSC2C8HU8H1B06C6P1P5L ",
|
||
|
||
"payload":"https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L",
|
||
|
||
"payrrn":" 000096116491 "
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 2/13
|
||
|
||
https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L
|
||
https://sub.nspk.ru/AB1S000V3LEOSC2C8HU8H1B06C6P1P5L?type=03&bank=100000000008&crc=61C4
|
||
|
||
Результатом выполнения запроса «Регистрация QR-кода для привязки счета/подписки по СБП» является передача Банком Плательщ
|
||
|
||
1. «subscriptionToken» — Уникальный Идентификатор привязки счета, назначаемый Банком Плательщика;
|
||
|
||
2. «memberId» – Идентификатор банка Плательщика.
|
||
|
||
Важно:
|
||
|
||
• Значения параметров «subscriptionToken» и «memberId» необходимо хранить в системе ТСП для дальнейшего использования ТСП в
|
||
с привязанного счета по инициативе ТСП». В случае отсутствия или утери значения параметра «subscriptionToken», привязку счет
|
||
повторно.
|
||
|
||
• Для получения значений параметров «subscriptionToken» и «memberId» ТСП необходимо реализовать возможность получения callb
|
||
|
||
1.2. Нотификация по сценарию «Регистрация QR-кода для привязки счета/подписки по СБП
|
||
|
||
Запрос отправляется из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.notificationUrl» при н
|
||
«RegQRcSub».
|
||
|
||
Метод «subscription/notification»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «subscription/notification».
|
||
|
||
сode String (an-7) y Возможные варианты кодов ответа:
|
||
|
||
— «RQ00000» — Запрос обработан успешно;
|
||
|
||
— «RQ05030» — Плательщик отказался от оформления подписки.
|
||
|
||
message String (ans-255) y Расшифровка кода ответа*.
|
||
|
||
status String (an-10) y Возможные статусы оформления подписки:
|
||
|
||
— «ACWP» — подписка оформлена;
|
||
|
||
— «RJCT» — подписка не оформлена.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
subscriptionToken String (an-32) o Идентификатор Подписки, назначаемый Банком Плательщика.
|
||
|
||
Отсутствует, если Плательщик не дал согласие на оформление подписки.
|
||
|
||
memberId String (an-12) o Идентификатор Банка Плательщика.
|
||
Отсутствует, если Плательщик не дал согласие на оформление подписки.
|
||
|
||
* Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
b) Примерный формат запроса при согласии Плательщика совершить привязку счёта:
|
||
|
||
c) Примерный формат запроса при отказе Плательщика совершить привязку счёта:
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":"subscription/notification ",
|
||
|
||
"сode":"RQ00000",
|
||
|
||
"message":"Привязка счета оформлена",
|
||
|
||
"status":"ACWP",
|
||
|
||
"qrcId":"BB1S0053V5S91S2E83RPL8THQSRS7O8K",
|
||
|
||
"subscriptionToken":"6feeacc6a74648589285346e3785ad9e",
|
||
|
||
"memberId":"100000000008"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 3/13
|
||
|
||
d) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
|
||
|
||
В настоящий момент ответ ВС не обрабатывается шлюзом Альфа-Банка. Обработка ответов ТСП находится в разработке.
|
||
|
||
В случае добавления со стороны НСПК дополнительных параметров уведомления, система принимающая их от шлюза Альфа-Банка
|
||
такие неожиданные параметры как ошибочный запрос.
|
||
|
||
2. Оплата по QR-коду с последующей привязкой счёта/подпиской по СБП
|
||
|
||
• Запрос «Оплата по QR-коду с последующей привязкой/подпиской по СБП» позволяет Плательщику выполнить разовую оплату в р
|
||
с последующей привязкой своего банковского счета к ТСП.
|
||
|
||
• Последующие платежи с привязанного счета в адрес данного ТСП будут выполняться без участия Плательщика.
|
||
|
||
• Регистрация Функциональной ссылки СБП для выполнения оплаты с последующей привязкой счета представляет собой регистра
|
||
ссылки с "qrcType"="02" с дополнительным параметром "subscriptionPurpose" (информация от ТСП с деталями привязки счета).
|
||
|
||
2.1 Метод GetQRCd
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…
|
||
50)
|
||
|
||
y Тип запроса. Константа «GetQRCd».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
width String o Ширина картинки QR-кода (только числовое значение).
|
||
|
||
height String o Высота картинки QR-кода (только числовое значение).
|
||
|
||
qrcType String (n-2) y Тип запрашиваемого QR-кода. Константа — «02».
|
||
|
||
paymentPurpose String (ans-
|
||
|
||
140)
|
||
|
||
o Назначение платежа.
|
||
|
||
messageID String (an-1…
|
||
1024)
|
||
|
||
o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
qrTtl String (an-1…
|
||
|
||
6)
|
||
|
||
o Срок жизни Функциональной ссылки СБП в минутах. Минимальное допустимое значение — «1».
|
||
|
||
значение — «129 600» (90 дней).
|
||
|
||
Рекомендация: устанавливать срок жизни Функциональной ссылки СБП не менее «5» минут. Ес
|
||
|
||
в запросе, будет использовано значение по умолчанию — «4 320» минут (3 суток).
|
||
|
||
queryData.notificationUrl String (ans-
|
||
|
||
512)
|
||
|
||
y Полный URL для получения уведомления о финальном статусе оплаты QR-кода, а также о результа
|
||
|
||
queryData.notificationUrl_sub String (ans-
|
||
512)
|
||
|
||
o Полный URL для получения уведомления о результате привязки счета.
|
||
|
||
В случае указания значения в данном поле, на указанный URL адрес будет направлено одно отд
|
||
|
||
привязки счета Плательщика.
|
||
|
||
{
|
||
|
||
"command":"subscription/notification",
|
||
|
||
"сode":"RQ05030",
|
||
|
||
"message":"Плательщик отказался от привязки счета",
|
||
|
||
"status":"RJCT",
|
||
|
||
"qrcId":"BB1S0053V5S91S2E83RPL8THQSRS7O8K",
|
||
|
||
"subscriptionToken":"00000000000000000000000000000000",
|
||
|
||
"memberId ":"100000000008"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 4/13
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
subscriptionPurpose String (ans-
|
||
|
||
140)
|
||
|
||
y Цель привязки счета. Информация от ТСП с деталями привязки счета. Данная информация буде
|
||
|
||
Плательщика при оформлении привязки счета в ДБО Банка Плательщика.
|
||
|
||
Рекомендуется указывать подробную информацию о привязке счета, включая, если применимо
|
||
|
||
регулярных платежей и прочее*.
|
||
|
||
redirectUrl String (ans-
|
||
|
||
1024)
|
||
|
||
o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаются тольк
|
||
|
||
должен соответствовать правилам кодировки URL.
|
||
|
||
Если все же требуется использовать в redirectUrl кириллические символы, необходимо перекодиров
|
||
код, используя percent-encoded octets согласно RFC3986.
|
||
|
||
Если требуется сформировать QR-код для привязки дополнительного счёта Плательщика в том же Б
|
||
|
||
Код ключа Тип
|
||
данных required Назначение
|
||
|
||
subscriptionServiceId String (32) o Идентификатор привязки. Обязательно при наличии subscriptionServiceName, т. к. параметры subscriptionSe
|
||
|
||
могут быть переданы только вместе. При получении параметров subscriptionServiceId и subscriptionServiceN
|
||
|
||
использовать их в ходе проверки данных привязки счёта на уникальность.
|
||
|
||
subscriptionServiceName String (70) o Наименование привязки. Обязательно при наличии subscriptionServiceId, т. к. параметры subscriptionService
|
||
быть переданы только вместе. При получении параметров subscriptionServiceId и subscriptionServiceName Б
|
||
|
||
использовать их в ходе проверки данных привязки счёта на уникальность.
|
||
|
||
Если требуется сформировать динамический QR-код под определенного Плательщика, то необходимо использоват
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
queryData.SenderFIO String (an-140) o Фамилия, Имя и Отчество Плательщика (не является регистрозависимым)
|
||
|
||
queryData.SenderID String (an-11.13) o Идентификатор Плательщика (номер телефона Плательщика — 0079123456
|
||
|
||
queryData.SenderBankBIC String (n-9) o БИК Банка Плательщика
|
||
|
||
Важно! При отсутствии данных в параметре subscriptionPurpose будет зарегистрирована обычная одноразовая Платежная ссылка СБ
|
||
возможности совершить привязку счета.
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
1 {
|
||
|
||
2 "command":"GetQRCd",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "amount":"10000",
|
||
|
||
5 "currency":"RUB",
|
||
|
||
6 "qrcType":"02",
|
||
|
||
7 "paymentPurpose":"Назначение платежа",
|
||
|
||
8 "subscriptionPurpose":"Подписка на оплату услуг Интернет 500р./мес.",
|
||
|
||
9 "width":"600",
|
||
|
||
10 "height":"600",
|
||
|
||
11 "qrTtl":"10",
|
||
|
||
12 "messageID":"message",
|
||
|
||
13 "queryData":
|
||
|
||
14 {
|
||
|
||
15 "notificationUrl":"https://sbp-payments",
|
||
|
||
16 "notificationUrl_sub":"https://sbp-subscription"
|
||
|
||
17 },
|
||
|
||
18 "redirectUrl": "https://exampletsp.io/qwertyui"
|
||
|
||
19 }
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 5/13
|
||
|
||
Код
|
||
ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
image String(an)
|
||
|
||
Длинна зависит от формата, порядок
|
||
|
||
7000 символов.
|
||
|
||
y Изображение QR-кода содержит энкодированный BASE64 файл изображени
|
||
.png
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
payload String (1…999) y Платежная ссылка***.
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
status String (n-7) y Статус регистрации Платежной ссылки СБП
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
*** Формат payload может быть двух видов:
|
||
|
||
• https://qr.nspk.ru/BD1P004FM8U22B8B8N1RHCRJSAB6C4TS
|
||
|
||
• https://qr.nspk.ru/BD1P004FM8U22B8B8N1RHCRJSAB6C4TS?type=02&bank=100000000008&sum=100&cur=RUB&crc=A1A3
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
Результатом выполнения запроса «Оплата по QR-коду с последующей привязкой/подпиской по СБП» является передача Банком Пла
|
||
следующих параметров:
|
||
|
||
1. «subscriptionToken» — Уникальный Идентификатор привязки счета, назначаемый Банком Плательщика;
|
||
|
||
2. «memberId» – Идентификатор банка Плательщика.
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "image":"iVBORw0KGgoAAAANSUhEUgAAghjysAAAAgjjafggkqqBEoAAARKCAIAAAQA/w……………...........YIAI",
|
||
|
||
5 "message":"%u0423%u0441%u043F%u0435%u0445",
|
||
|
||
6 "messageID":"message",
|
||
|
||
7 "payload":" https://qr.nspk.ru/AS1000670LSS7DN18SJQDNP4B05KLJLK",
|
||
|
||
8 "payrrn":"000022134348",
|
||
|
||
9 "qrcId":"AS1000670LSS7DN18SJQDNP4B05KLJLK ",
|
||
|
||
10 "status":"CREATED"
|
||
|
||
11 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 6/13
|
||
|
||
https://qr.nspk.ru/BD1P004FM8U22B8B8N1RHCRJSAB6C4TS%20
|
||
https://qr.nspk.ru/BD1P004FM8U22B8B8N1RHCRJSAB6C4TS?type=02&bank=100000000008&sum=100&cur=RUB&crc=A1A3
|
||
|
||
Важно:
|
||
|
||
• Значения параметров "subscriptionToken" и "memberId" необходимо хранить в системе ТСП для дальнейшего использования ТСП в
|
||
с привязанного счета по инициативе ТСП». В случае отсутствия или утери значения параметра "subscriptionToken", привязку счет
|
||
повторно.
|
||
|
||
• Для получения значений параметров "subscriptionToken" и "memberId" ТСП необходимо реализовать возможность получения callba
|
||
|
||
2.2. Нотификация по сценарию «Оплата по QR-коду с последующей привязкой счета/подпиской по СБП»
|
||
|
||
Запросы о нотификации отправляются из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.no
|
||
«queryData.notificationUrl_sub» при направлении запроса «GetQRCd».
|
||
|
||
Информация о возможных сценариях нотификации:
|
||
|
||
1. При успешной оплате и успешной привязке счёта в адрес ТСП направляется два callback уведомления:
|
||
• об успешности оплаты по QR-коду — метод «qrc/notification»;
|
||
|
||
• об успешности привязки счета — метод «subscription/notification».
|
||
|
||
2. Если Плательщик совершил оплату, но отказался от привязки счета, то в ТСП направляется два callback уведомления:
|
||
• об успешности оплаты по QR-коду (метод «qrc/notification»);
|
||
|
||
• об отказе Плательщика от привязки счета (метод «subscription/notification»).
|
||
|
||
3. Если Плательщик не стал совершать оплату, то привязка счета ему не предлагается, в ТСП callback уведомление не направляется.
|
||
|
||
3. Оплата с привязанного счёта по инициативе ТСП
|
||
|
||
Запрос «Оплата с привязанного счета по инициативе ТСП» позволяет по запросу ТСП выполнить оплату в рамках операции СБП C2B
|
||
привязка которого была выполнена ранее в рамках запроса «Регистрация QR-кода для привязки счета/подписки по СБП» или «О
|
||
с последующей привязкой счета/подпиской по СБП». Сценарий может применяться как для разовых, так и для регулярных плате
|
||
|
||
Для выполнения оплаты с привязанного счета необходимо направить в платежный шлюз Банка два последовательных запроса:
|
||
|
||
1. Запрос «GetQRCd» на генерирование Платежной ссылки со значением параметра qrcType = «02» и с обязательно заполненным зн
|
||
«paymentPurpose»;
|
||
|
||
2. Запрос «QRCSubPayPetition» на оплату с привязанного счёта с указанием:
|
||
• идентификатора QR-кода, полученного в ответе на запрос GetQRCd;
|
||
|
||
• идентификаторов «subscriptionToken» и «SenderMemberId», полученных в callback уведомлении по методу «subscription/notificatio
|
||
|
||
В случае удаления Плательщиком привязки счета Банк Плательщика, получив запрос по сценарию «Оплата с привязанного счета по
|
||
запрос и направляет в адрес ТСП нотификацию с сообщением — «Привязка счета не найдена».
|
||
|
||
Оплату с привязанного счета можно проводить на сумму до 1 000 000 руб.
|
||
|
||
3.1. Генерация Платежной ссылки
|
||
|
||
Метод «GetQRCd»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…
|
||
|
||
50)
|
||
|
||
y Тип запроса. Константа «GetQRCd».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
amount Number y Сумма платежа в минорных единицах (копейках).
|
||
|
||
currency String (ans-3) y Код валюты (для рублей должен передаваться «RUB»).
|
||
|
||
width String o Ширина картинки QR-кода (только числовое значение).
|
||
|
||
height String o Высота картинки QR-кода (только числовое значение).
|
||
|
||
qrcType String (n-2) y Тип запрашиваемого QR-кода. Константа — «02».
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 7/13
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
paymentPurpose String (ans-
|
||
|
||
140)
|
||
|
||
y Назначение платежа. Обязательно к заполнению в сценарии «Оплата с привязанного счета по и
|
||
|
||
messageID String (an-1…
|
||
1024)
|
||
|
||
o Уникальный идентификатор сообщения, GUID. Только латинские символы!
|
||
|
||
qrTtl String (an-1…
|
||
|
||
6)
|
||
|
||
o Срок жизни Функциональной ссылки СБП в минутах. Минимальное допустимое значение — «
|
||
|
||
значение — «129 600» (90 дней).
|
||
|
||
Рекомендация: устанавливать срок жизни Функциональной ссылки СБП не менее «5» минут
|
||
|
||
в запросе, будет использовано значение по умолчанию — «4 320» минут (3 суток).
|
||
|
||
queryData.notificationUrl String (ans-
|
||
|
||
512)
|
||
|
||
y Полный URL для получения уведомления о решении Банка Плательщика по оплате с привязанн
|
||
|
||
статусе оплаты QR-кода.
|
||
|
||
queryData.notificationUrl_subRes String (ans-
|
||
|
||
512)
|
||
|
||
o Полный URL для получения уведомления о решении Банка Плательщика по оплате с привяз
|
||
|
||
В случае указания значения в данном поле, на указанный URL адрес будет направлено одно
|
||
|
||
о решении Банка Плательщика по оплате с привязанного счета.
|
||
|
||
redirectUrl String (ans-
|
||
|
||
1024)
|
||
|
||
o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП. Допускаются то
|
||
|
||
Формат должен соответствовать правилам кодировки URL.
|
||
Если все же требуется использовать в redirectUrl кириллические символы, необходимо перекоди
|
||
|
||
код, используя percent-encoded octets согласно RFC3986.
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код
|
||
ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
image String (an)
|
||
|
||
Длинна зависит от формата, порядок
|
||
|
||
7000 символов.
|
||
|
||
y Изображение QR-кода содержит энкодированный BASE64 файл изображени
|
||
.png
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**.
|
||
|
||
messageID String (ans-1024) o Уникальный идентификатор сообщения, GUID.
|
||
|
||
payload String (1…999) y Платежная ссылка***.
|
||
|
||
1 {
|
||
|
||
2 "command":"GetQRCd",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "amount":"10000",
|
||
|
||
5 "currency":"RUB",
|
||
|
||
6 "qrcType":"02",
|
||
|
||
7 "paymentPurpose":"Назначение платежа",
|
||
|
||
8 "width":"600",
|
||
|
||
9 "height":"600",
|
||
|
||
10 "qrTtl":"10",
|
||
|
||
11 "messageID":"message",
|
||
|
||
12 "queryData":
|
||
|
||
13 {
|
||
|
||
14 "notificationUrl":"https://sbp-payments",
|
||
|
||
15 "notificationUrl_subRes":"https://sbp-subscription_ resolution"
|
||
|
||
16 },
|
||
|
||
17 "redirectUrl": "https://exampletsp.io/qwertyui"
|
||
|
||
18 }
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 8/13
|
||
|
||
Код
|
||
ключа Тип данных required Назначение
|
||
|
||
payrrn String (n-12) y Референсный идентификатор запроса в системе Банка.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
status String (n-7) y Статус регистрации Платежной ссылки СБП
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
*** Формат payload может быть двух видов:
|
||
|
||
• https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89
|
||
|
||
• https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89?type=02&bank=100000000008&sum=10000&cur=RUB&crc=D87E
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
3.2. Запрос на оплату с привязанного счета по инициативе ТСП
|
||
|
||
Метод QRCSubPayPetition используется ТСП для того, чтобы Банк Плательщика выполнил оплату с привязанного счета.
|
||
|
||
Метод «QRCSubPayPetition»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «QRCSubPayPetition».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
subscriptionToken String (an-32) y Идентификатор Привязки счета, назначенный Банком Плательщика ранее на этапе оформления п
|
||
|
||
SenderMemberId String (an-12) y Идентификатор банка Плательщика.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода.
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "TermNo": 90080567,
|
||
|
||
4 "image": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAYAAAC
|
||
|
||
5 "message": "%u0423%u0441%u043F%u0435%u0445",
|
||
|
||
6 "messageID": "message",
|
||
|
||
7 "payload": "https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89?type=02&bank=100000000008&sum=10
|
||
|
||
8 "payrrn": "000755856505",
|
||
|
||
9 "qrcId": "AD10000BBJKO23GB98LA1FGBRIHH3K89",
|
||
|
||
10 "status": "CREATED"
|
||
|
||
11 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 9/13
|
||
|
||
https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89
|
||
https://qr.nspk.ru/AD10000BBJKO23GB98LA1FGBRIHH3K89?type=02&bank=100000000008&sum=10000&cur=RUB&crc=D87E
|
||
|
||
* Если привязка счета была подтверждена Плательщиком, Банк Плательщика в обязательном порядке должен передать параметр «
|
||
Уникальный Идентификатор привязки счета. Уникальный Идентификатор привязки счета должен однозначно идентифицировать со
|
||
Плательщика.
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
message String (ans-140) y Расшифровка кода ответа**.
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
3.3. Нотификация по сценарию «Оплата с привязанного счёта по инициативе ТСП»
|
||
|
||
Запросы о нотификации отправляются из ПШ Банка во внутреннюю систему ТСП на URL адрес, указанный в параметре «queryData.no
|
||
«queryData.notificationUrl_subRes» при направлении запроса «GetQRCd».
|
||
|
||
Нотификация по оплате с привязанного счёта состоит из двух уведомлений:
|
||
|
||
1. Уведомление о согласии/отказе в проведении платежа — метод «resolution /notification»;
|
||
|
||
2. Уведомление о проведении/отказе в проведении платежа по QR-коду — метод «qrc/notification».
|
||
|
||
Метод «resolution /notification»
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «resolution/notification»
|
||
|
||
code String (an-7) y Возможные варианты кодов ответа:
|
||
|
||
«RQ00030» — Согласие Банка Плательщика на выполнение платежа
|
||
|
||
{
|
||
|
||
"command":"QRCSubPayPetition ",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"subscriptionToken":"70LSS7DN18SJQRS10006DNPKLJL24B05"
|
||
|
||
"SenderMemberId":"100000000008",
|
||
|
||
"qrcId":" AD10000BBJKO23GB98LA1FGBRIHH3K89"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"RQ00000",
|
||
|
||
"message":"Запрос обработан успешно"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 10/13
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
«RQ05031» — Отказ Банка Плательщика. Привязка счета не найдена
|
||
|
||
«RQ05032» — Отказ Банка Плательщика в выполнении платежа
|
||
|
||
«RQ05060» — Недостаточно денежных средств для проведения операции
|
||
|
||
«RQ05061» — Превышен лимит по сумме операций по СБП
|
||
|
||
«RQ05062» — Превышен лимит по количеству операций по СБП
|
||
|
||
«RQ05063» — Подозрение в мошенничестве
|
||
|
||
«RQ05064» — Выполнение операций в данной категории ТСП запрещено
|
||
|
||
«RQ05065» — Счёт заблокирован
|
||
|
||
«RQ05066» — Счёт закрыт
|
||
|
||
«RQ05067» — Выполнение операции запрещено по требованию законодательства
|
||
|
||
message String (ans-1…1024) y Расшифровка кода ответа*.
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
* Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
b) Примерный формат запроса при успешной оплате с привязанного счета:
|
||
|
||
c) Примерный формат запроса в случае если недостаточно денежных средств на счёте Плательщика/сумма больше установленного
|
||
|
||
d) Примерный формат запроса в случае направления запроса ТСП на оплату с привязанного счета, когда привязка счета была успеш
|
||
Плательщиком удалена:
|
||
|
||
e) ВС ТСП отвечает http-кодом «200» — успешное получение нотификации, или ошибкой.
|
||
|
||
В настоящий момент ответ ВС не обрабатывается шлюзом Альфа-Банка. Обработка ответов ТСП находится в разработке.
|
||
|
||
В случае добавления со стороны НСПК дополнительных параметров уведомления, система принимающая их от шлюза Альфа-Банка
|
||
такие неожиданные параметры как ошибочный запрос.
|
||
|
||
4. Запрос статуса привязки счёта
|
||
|
||
Запрос предназначен для попытки уточнения в ПШ Банка привязки счета со стороны ТСП.
|
||
|
||
Метод GetQRCSubStatus.
|
||
|
||
{
|
||
|
||
"command":"resolution/notification ",
|
||
|
||
"code":" RQ00030",
|
||
|
||
"message":" Согласие на проведение платежа ",
|
||
|
||
"qrcId":" BD10006FEU7CQ9VE8D383VP0O2VH78D9",
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":" resolution/notification ",
|
||
|
||
"code":" RQ05032",
|
||
|
||
"message":" Отказ в выполнении платежа ",
|
||
|
||
"qrcId":" BD10004KH55FOMC48QIR3FCDEHVLA23F ",
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command":" resolution/notification ",
|
||
|
||
"code":"RQ05031",
|
||
|
||
"message":"Привязка счета не найдена ",
|
||
|
||
"qrcId":" BD10004KH55FOMC48QIR3FCDEHVLA23F ",
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 11/13
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «GetQRCSubStatus».
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала.
|
||
|
||
qrcId String(an-32) y Идентификатор QR-кода.
|
||
|
||
RQperiod String(n-3) o Период времени, за который нужно искать уведомление для Агенета ТСП о решении Банка Плательщика по пр
|
||
|
||
*Если параметр не передан в запросе, то поиск будет осуществляться без ограничения по времени.
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*.
|
||
|
||
message String (ans-140) y Расшифровка кода ответа**.
|
||
|
||
qrcId String(an-32) o Идентификатор QR-кода.
|
||
|
||
status String(a-4) o Статус выполнения привязки счета Плательщика.
|
||
|
||
subscriptionToken String(an-32) o Уникальный идентификатор привязки счета Плательщика в Банке Плательщика.
|
||
|
||
memberId String(an-12) o Идентификатор Банка Плательщика.
|
||
|
||
notifyDate String(ans-19) o Дата получения уведомления о результате выполнения привязки счета Плательщика.
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
Примечание:
|
||
|
||
• Если уведомление найдено, то в ответе будет присутствовать параметр «status».
|
||
|
||
• Если в ходе выполнения запроса возникла ошибка обработки запроса, то в ответе будут переданы только код ошибки не равный
|
||
|
||
• Если уведомление не было найдено (не получено от НСПК), то запрос будет считаться успешно выполненным и в ответе будет пер
|
||
соответствующее успешному ответу, но без дополнительных параметров.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
{
|
||
|
||
"command":"GetQRCSubStatus",
|
||
|
||
"TermNo":"90080567",
|
||
|
||
"qrcId":"BB1S002PRSK6SR3E9R7P0H077UKN1QVF",
|
||
|
||
"RQperiod":"14"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"memberId": 600000000015,
|
||
|
||
"message": "OK",
|
||
|
||
"qrcId": "BB1S002PRSK6SR3E9R7P0H077UKN1QVF",
|
||
|
||
"status": "ACWP",
|
||
|
||
"subscriptionToken": "70LSS7DN18SJQRS10006DNPKLJLAGT77"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 12/13
|
||
|
||
Примечание: текстовые данные передаются в формате urlencoded.
|
||
|
||
• 400 Bad Request
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Привязка счёта / подписка СБП
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/subscription/?rp-menuOpen=1 13/13
|
||
|
||
|
||
]]>
|
||
</_6_link_account_subscription_SBP_md>
|
||
<_7_digital_rubble_md>
|
||
<![CDATA[
|
||
Цифровой Рубль
|
||
|
||
Цифровой рубль
|
||
|
||
Цифровой рубль — это цифровая форма рубля.
|
||
|
||
Сейчас у нас есть наличная (банкноты и монеты) и безналичная (деньги на счетах) форма национальной валюты, а в дополнение к ни
|
||
|
||
Счета цифрового рубля будут открываться на платформе Центробанка. На этих счетах будет храниться цифровой рубль.
|
||
|
||
Операции с цифровыми рублями будут проходить на ПЦР.
|
||
|
||
Доступ к счетам цифрового рубля будет возможен через мобильные приложения банков и интернет-банки.
|
||
|
||
По эквайрингу прием ЦР осуществляется в рамках Универсального платёжного кода
|
||
|
||
1. Динамический QR-код:
|
||
|
||
1.1. Запрос регистрации динамического УПК (универсального одноразового платёжного кода)
|
||
|
||
• Сгенерировать универсальный одноразовый платёжный код возможно с помощью уже существующего метода «GetQRCd».
|
||
Сгенерированный QR-код возможно оплатить как через СБП, так и с использованием ЦР.
|
||
При этом в настройках ТСП на ПШ Банка обязательно должен быть указан счет ЦР
|
||
|
||
• Также универсальный одноразовый платёжный код возможно сгенерировать с помощью отдельного метода «ReqUniQr».
|
||
Сгенерированный QR-код возможно оплатить как через СБП, так и с использованием ЦР.
|
||
При этом в настройках ТСП на ПШ Банка обязательно должен быть указан счет ЦР
|
||
|
||
Запрос «ReqUniQr» направляется ТСП в Банк для выполнения запроса «Регистрация универсальной платёжной ссылки» API СБП.
|
||
|
||
В ответе ПШ Банка возвращает результат обработки запроса и, в случае успешной обработки — значения параметров, полученных в
|
||
|
||
• image (изображение)
|
||
|
||
• mediaTypeR (расширение QR-кода)
|
||
|
||
• payload (платёжная ссылка)
|
||
|
||
• uniQrId (Идентификатор Платёжной ссылки)
|
||
|
||
• status (Статус регистрации Платёжной ссылки. Единственное допустимое значение = «CREATED»).
|
||
|
||
Метод ReqUniQr
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an‐1…50) y Тип запроса. Константа «ReqUniQr»
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала
|
||
|
||
amount Number о Сумма платежа в минорных единицах (копейках)
|
||
|
||
Обязательна при значении uniQrType = 02
|
||
|
||
mediaType String o Расширение QR‐кода
|
||
|
||
width String o Ширина картинки QR‐кода (только числовое значение)
|
||
|
||
height String o Высота картинки QR‐кода (только числовое значение)
|
||
|
||
uniQrType String (n‐2) y Тип платёжной ссылки:
|
||
|
||
• 01 — многоразовая
|
||
|
||
• 02 — одноразовая
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 1/13
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1
|
||
https://sbp.nspk.ru/uniqr?ysclid=mhajjmr4i0196202211
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1#dynemic_qr
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
paymentPurpose String (ans‐140) o Назначение платежа
|
||
|
||
redirectUrl String (ans‐1024) o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП.
|
||
|
||
Допускаются только символы в кодировке ASCII. Формат должен соответствовать правилам кодир
|
||
|
||
Если требуется использовать в redirectUrl кириллические символы, необходимо перекодировать их
|
||
|
||
RFC3986
|
||
|
||
paymentPageUrl String (ans‐1024) o Ссылка для перенаправления Покупателя на Платёжную страницу Участника Сервиса УПК
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID
|
||
|
||
qrTtl String (an‐1…6) o Минимальное значение срока использования созданной динамической платёжной ссылки в целых мин
|
||
|
||
fraudScore String (an‐16) o Индикатор Подозрительной Операции Агента ТСП
|
||
|
||
queryData.notificationUrl String (ans‐512) o Полный URL для получения уведомления о финальном статусе оплаты QR‐кода
|
||
|
||
Если требуется сформировать динамический QR-код под определенного Плательщика, то необходи
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
queryData.SenderFIO String (an‐140) o Фамилия, Имя и Отчество Плательщика, не являет
|
||
|
||
queryData.SenderID String (an-11…13) o Идентификатор Плательщика
|
||
|
||
queryData.SenderBankBIC String (n‐9) o Банковский Идентификационный Код Банка Плате
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an‐20) y Код ответа:
|
||
|
||
0 — успешное выполнение запроса
|
||
|
||
иначе — код ошибки и её расшифровка в поле message*
|
||
|
||
message String (ans‐1024) o Расшифровка кода ответа — если ErrorCode не равен 0**
|
||
|
||
payload String (1…999) o Платёжная ссылка — если ErrorCode = 0
|
||
|
||
1 {
|
||
|
||
2 "command":"ReqUniQr",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "amount":"10000",
|
||
|
||
5 "uniQrType":"02",
|
||
|
||
6 "redirectUrl":"https://alfabank.ru/sme/payservice/sbp/",
|
||
|
||
7 "paymentPageUrl":"https://alfabank.ru/sme/payservice/sbp/",
|
||
|
||
8 "mediaType":"image/png",
|
||
|
||
9 "width":"600",
|
||
|
||
10 "height":"600",
|
||
|
||
11 "qrTtl":"2",
|
||
|
||
12 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
13 "paymentPurpose":"Назаначение платежа",
|
||
|
||
14 "fraudScore":"0000000000000000",
|
||
|
||
15 "queryData":
|
||
|
||
16 {
|
||
|
||
17 "notificationUrl":"https://sbp-payments",
|
||
|
||
18 "SenderFIO":"Иванов|Иван|Иванович",
|
||
|
||
19 "SenderID":"0079123456789",
|
||
|
||
20 "SenderBankBIC":"44525593"
|
||
|
||
21 }
|
||
|
||
22 }
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 2/13
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
payrrn String (n‐12) o Референсный номер платежа — если ErrorCode = 0
|
||
|
||
mediaTypeR String o Расширение QR-кода — если ErrorCode = 0
|
||
|
||
uniQrId String (an‐32) o Идентификатор Платёжной ссылки — если ErrorCode = 0
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если ErrorCode =
|
||
|
||
status String (an‐20) o Статус регистрации Платёжной ссылки = «CREATED» — если Error
|
||
|
||
*,** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
1.2. Запрос статуса оплаты по динамическому УПК
|
||
|
||
• Статус оплаты универсального одноразового платёжного кода возможно проверить с помощью уже существующего метода «GetQ
|
||
При этом, в ответе к уже существующим статусам, добавляется еще два новых статуса для ЦР: «ENDD» и «ACDR»
|
||
|
||
• Также статус оплаты возможно проверить с помощью отдельного метода «GetUniQrStatus»
|
||
|
||
Метод GetUniQrStatus
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an‐1…50) y Тип запроса. Константа «GetUniQrStatus»
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала
|
||
|
||
uniQrIds String y Массив идентификаторов Одноразовых Платёжных ссылок (uniQrId), статус которых х
|
||
|
||
Максимальное количество идентификаторов Одноразовых Платёжных ссылок в одно
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode":"0",
|
||
|
||
3 "message":"Запрос выполнен",
|
||
|
||
4 "image":"iVBORw0KGgoAAAANS…AAASUVORK5CYII=",
|
||
|
||
5 "messageID":"message",
|
||
|
||
6 "payload":"https://qr.nspk.ru/BD10006PV41C82I48OAODKVDFF0IK9SE",
|
||
|
||
7 "payrrn":"000000002235",
|
||
|
||
8 "uniQrId":"BD10006PV41C82I48OAODKVDFF0IK9SE",
|
||
|
||
9 "mediaTypeR":"image/png",
|
||
|
||
10 "status":"CREATED"
|
||
|
||
11 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "command": "GetUniQrStatus",
|
||
|
||
3 "TermNo": "agttest321",
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 3/13
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/dynamic/?rp-menuOpen=1#payment_status
|
||
|
||
с) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an‐20) y Код ответа:
|
||
|
||
0 — успешное выполнение запроса
|
||
|
||
иначе — код ошибки и её расшифровка в поле message*
|
||
|
||
message String (ans‐1024) o Расшифровка кода ответа — если ErrorCode не равен 0**
|
||
|
||
data String o Блок данных в формате JSON (массив Record)*** — если ErrorCode
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если ErrorCode = 0
|
||
|
||
status String (an‐20) o Статус регистрации Платёжной ссылки = «CREATED» — если ErrorC
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
*** описание структуры массива Record блока данных data:
|
||
|
||
Код ключа Тип данных Назначение
|
||
|
||
uniQrId String (an‐32) Идентификатор Одноразовой Платёжной ссылки
|
||
|
||
code String (7) Код ответа для указанной Одноразовой Платёжной ссылки
|
||
|
||
message String (1…255) Текстовое описание кода ответа для указанной Одноразовой Платёжной ссылки
|
||
|
||
paymentServiceId String (12) Идентификатор способа приёма платежа, который использовался для оплаты указанной Одноразовой Платёжной сс
|
||
|
||
Будет отсутствовать в ответе при значении параметра status = «NTST» и будет заполнен при любых других значениях
|
||
|
||
status String (4) Текущий статус Одноразовой Платёжной ссылки. Допустимые значения:
|
||
|
||
1. «NTST» (NOT_STARTED): платёж не инициирован
|
||
|
||
2. «RCVD» (RECEIVED): инициирован платёж
|
||
|
||
3. «ACWP» (ACCEPTED): платёж успешно выполнен
|
||
|
||
4. «RJCT» (REJECTED): платёж отклонён
|
||
|
||
5. «ENDD»: платёж с расчётами в ЦР обработан, но результат выполнения неизвестен (успех или отказ)
|
||
|
||
6. «ACDR»: передаётся статус (аналог «ACWP»), указанный в настройке ACWPstatusDR. Используется в отдельных п
|
||
|
||
Может принимать значения:
|
||
|
||
• «ENDD» передаётся в случае, если:
|
||
|
||
• с использованием указанной Одноразовой Платёжной ссылки была выполнена Операция ЦР C2B (paymentSe
|
||
|
||
• нет уведомления, но уже был запрос статуса, и в нём был получен «ENDD» (если ссылка была сформирована
|
||
|
||
• «ACWP» и «RJCT» только в том случае, если с использованием указанной Одноразовой Платёжной ссылки был
|
||
|
||
• «ACDR» передаётся статус, если есть уведомление от ПлЦР об оплате (если ссылка была сформирована как un
|
||
|
||
trxId String (32) Идентификатор Операции СБП будет заполнен только при соблюдении следующих условий:
|
||
|
||
• paymentServiceId = «PS0000000001»
|
||
|
||
4 "uniQrIds":
|
||
|
||
5 [
|
||
|
||
6 "AD2000670LSS7DN18SJQDNP4B05KLJL1",
|
||
|
||
7 "AD2000670LSS7DN18SJQDNP4B05KLJL2",
|
||
|
||
8 "AD2000670LSS7DN18SJQDNP4B05KLJL3",
|
||
|
||
9 "AD2000670LSS7DN18SJQDNP4B05KLJL4",
|
||
|
||
10 "AD2000670LSS7DN18SJQDNP4B05KLJL5"
|
||
|
||
11 ]
|
||
|
||
12 }
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 4/13
|
||
|
||
https://wiki.finstream.ru/pages/viewpage.action?pageId=153813196#id-%D0%A8%D0%BB%D1%8E%D0%B7FastPayAgentDR(%D0%9F%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%BD%D0%B0%D1%8F%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%D0%A1%D0%91%D0%9F/%D0%A6%D0%A0(%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9%D1%80%D1%83%D0%B1%D0%BB%D1%8C)%D0%B4%D0%BB%D1%8F%D0%90%D0%B3%D0%B5%D0%BD%D1%82%D0%B0%D0%A2%D0%A1%D0%9F)-%D0%91%D0%B8%D0%B7%D0%BD%D0%B5%D1%81-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81AWGW.FastPayAgentDR.BProcess
|
||
|
||
Код ключа Тип данных Назначение
|
||
|
||
• status = «ACWP» или «RJCT»
|
||
|
||
kzo String (1…128) Контрольное значение Операции СБП будет заполнено только при соблюдении следующих условий:
|
||
|
||
• paymentServiceId = «PS0000000001»
|
||
|
||
• status = «ACWP»
|
||
|
||
payrrn String (n‐12) Референсный номер платежа — если ErrorCode = 0
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
2. Кассовая платёжная ссылка
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": "0",
|
||
|
||
3 "message": "Запрос обработан успешно",
|
||
|
||
4 "data": [
|
||
|
||
5 {
|
||
|
||
6 "qrcId": "AD2000670LSS7DN18SJQDNP4B05KLJL1",
|
||
|
||
7 "code": "RQ00000",
|
||
|
||
8 "message": "Запрос обработан успешно",
|
||
|
||
9 "paymentServiceId": "PS0000000002",
|
||
|
||
10 "status": "ENDD",
|
||
|
||
11 "trxId": null,
|
||
|
||
12 "kzo": null
|
||
|
||
13 },
|
||
|
||
14 {
|
||
|
||
15 "qrcId": "AD2000670LSS7DN18SJQDNP4B05KLJL2",
|
||
|
||
16 "code": "RQ00000",
|
||
|
||
17 "message": "Запрос обработан успешно",
|
||
|
||
18 "paymentServiceId": "PS0000000001",
|
||
|
||
19 "status": "ACWP",
|
||
|
||
20 "trxId": "A1A2S3D5F6G7H8J9K0C4S5C6D7V5D1K3",
|
||
|
||
21 "kzo": "FDOS4JUETLYT639ADAFZ4GAUY9VSM2TG2Y595LQ20EKQF3JM1CIV4ZTZYA1EYIMFMEJSRB2UR7KATMA2
|
||
|
||
22 },
|
||
|
||
23 {
|
||
|
||
24 "qrcId": "AD2000670LSS7DN18SJQDNP4B05KLJL4",
|
||
|
||
25 "code": "RQ00000",
|
||
|
||
26 "message": "Запрос обработан успешно",
|
||
|
||
27 "paymentServiceId": null,
|
||
|
||
28 "status": "NTST",
|
||
|
||
29 "trxId": null,
|
||
|
||
30 "kzo": null
|
||
|
||
31 },
|
||
|
||
32 {
|
||
|
||
33 "qrcId": "AD2000670LSS7DN18SJQDNP4B05KLJL5",
|
||
|
||
34 "code": "RQ05014",
|
||
|
||
35 "message": "Указанное значение uniQrId не найдено",
|
||
|
||
36 "paymentServiceId": null,
|
||
|
||
37 "status": null,
|
||
|
||
38 "trxId": null,
|
||
|
||
39 "kzo": null
|
||
|
||
40 }
|
||
|
||
41 ]
|
||
|
||
42 }
|
||
|
||
{
|
||
|
||
"ErrorCode": "Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 5/13
|
||
|
||
2.1 Запрос регистрации кассового УПК (универсального многоразового платёжного кода)
|
||
|
||
• Сгенерировать универсальный многоразовый платёжный код возможно с помощью уже существующего метода «RegCashQRc».
|
||
Сгенерированный QR-код возможно оплатить как через СБП, так и с использованием ЦР.
|
||
При этом в настройках ТСП на ПШ Банка обязательно должен быть указан счет ЦР
|
||
|
||
• Также универсальный многоразовый платёжный код возможно сгенерировать с помощью отдельного метода «RegCashUniQr».
|
||
Сгенерированный QR-код возможно оплатить как через СБП, так и с использованием ЦР.
|
||
При этом в настройках ТСП на ПШ Банка обязательно должен быть указан счет ЦР
|
||
|
||
Метод ReqUniQr
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an‐1…50) y Тип запроса. Константа «ReqCashUniQr»
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID
|
||
|
||
redirectUrl String (ans‐1024) o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП.
|
||
|
||
Допускаются только символы в кодировке ASCII. Формат должен соответствовать правилам кодир
|
||
|
||
Если требуется использовать в redirectUrl кириллические символы, необходимо перекодировать их
|
||
|
||
RFC3986
|
||
|
||
paymentPageUrl String (ans‐1024) o Ссылка для перенаправления Покупателя на Платёжную страницу Участника Сервиса УПК
|
||
|
||
mediaType String o Расширение QR‐кода УПК
|
||
|
||
width String o Ширина картинки QR‐кода (только числовое значение)
|
||
|
||
height String o Высота картинки QR‐кода (только числовое значение)
|
||
|
||
qrcId String (32) o Идентификатор Многоразового УПК, предварительно зарегистрированный с использованием мето
|
||
|
||
Если Банк ТСП передаст в запросе параметр qrcId, Оператор Сервиса УПК использует значение это
|
||
|
||
параметр qrcId будет отсутствовать, Оператор Сервиса УПК сформирует новое значение идентифи
|
||
|
||
Зарегистрировать Кассовый УПК с определенным значением qrcId может только тот Банк ТСП, кот
|
||
|
||
API «Получение идентификаторов для Многоразовых УПК»
|
||
|
||
queryData.notificationUrl String (ans‐512) o Полный URL для получения уведомления о финальном статусе оплаты QR-кода
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
1 {
|
||
|
||
2 "command":"ReqCashUniQr",
|
||
|
||
3 "TermNo":"90080567",
|
||
|
||
4 "messageID":"f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
5 "redirectUrl":"https://alfabank.ru/sme/payservice/sbp/",
|
||
|
||
6 "paymentPageUrl":"https://alfabank.ru/sme/payservice/sbp/",
|
||
|
||
7 "mediaType":"image/png",
|
||
|
||
8 "width":"600",
|
||
|
||
9 "height":"600",
|
||
|
||
10 "qrcId":"",
|
||
|
||
11 "queryData":
|
||
|
||
12 {
|
||
|
||
13 "notificationUrl":"https://sbp-payments",
|
||
|
||
14 }
|
||
|
||
15 }
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 6/13
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/paylink/?rp-menuOpen=1#cash_register_payment_link
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an‐20) y Код ответа*
|
||
|
||
message String (ans‐1024) y Расшифровка кода ответа**
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала
|
||
|
||
payload String (1…999) o Платёжная ссылка УПК. См. приложение 1
|
||
|
||
image String (an)
|
||
|
||
Длина зависит от формата, порядок 7000 символов
|
||
|
||
y Изображение QR-кода содержит энкодированный BASE64
|
||
|
||
mediaType String o Расширение QR-кода УПК, если ErrorCode = 0
|
||
|
||
qrcId String (an‐32) o Идентификатор QR-кода
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если Err
|
||
|
||
status String (an‐20) o Статус регистрации Платёжной или Информационной ссы
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
2.2 Запрос статуса оплаты по кассовому УПК
|
||
|
||
• Статус оплаты кассового универсального многоразового платёжного кода возможно проверить с помощью уже существующего м
|
||
При этом, в ответе к уже существующим статусам, добавляется ещё два новых статуса для ЦР: «ENDD» и «ACDR».
|
||
|
||
• Также статус оплаты возможно проверить с помощью отдельного метода «GetCashUniQrStatus».
|
||
|
||
Метод GetCashUniQrStatus
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an‐1…50) y Тип запроса. Константа «GetCashUniQrS
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения
|
||
|
||
{
|
||
|
||
"ErrorCode": "0",
|
||
|
||
"message": "OK",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"payload": "![CDATA[https://qr.nspk.ru/BS2R003FS8EFGAVM852PQS13N894HDLU?type=01&bank=620000000015&cr
|
||
|
||
"image": "iVBORw0KGgoAAAANSUhEUgAAAlg......",
|
||
|
||
"mediaType": "image/png",
|
||
|
||
"qrcId": "BS2R003FS8EFGAVM852PQS13N894HDLU",
|
||
|
||
"status": "CREATED"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message":"Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 7/13
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
payrrn String (n‐12) o Референсный номер платежа
|
||
|
||
uniQrId String (an‐32) y Идентификатор Кассового УПК
|
||
|
||
paramsId String (an‐32) y Идентификатор параметров Кассового У
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an‐20) y Код ответа*
|
||
|
||
message String (ans‐1024) y Расшифровка кода ответа**
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если ErrorCode = 0
|
||
|
||
uniQrId String (an‐32) o Идентификатор Кассового УПК
|
||
|
||
payrrn String (n‐12) o Референсный номер платежа
|
||
|
||
trxId String (an‐32) o Уникальный идентификатор платежа в НСПК. Идентификатор Операции СБП будет заполнен то
|
||
|
||
• paymentServiceId = «PS0000000001»
|
||
|
||
• status = «ACWP» или «RJCT»
|
||
|
||
trxDT String (n‐14) o Дата и время платежа в AnyWay (ГГГГММДДччммсс)
|
||
|
||
paymentServiceId String (12) o Идентификатор Платёжного сервиса, с использованием которого был выполнен Перевод УПК
|
||
|
||
• «PS0000000001» — платёж через СБП
|
||
|
||
• «PS0000000002» — платёж с использованием ЦР
|
||
|
||
Будет отсутствовать в ответе при значении параметра status = «NTST» и будет заполнен при лю
|
||
|
||
BatchId String (n‐1…8) o Уникальный идентификатор смены (если смена терминала была открыта), метод получения см. ан
|
||
|
||
CreditDatePos String (ans 1‐256) o Дата операции, установленная Банком Получателя в ходе обработки уведомления НСПК (определ
|
||
|
||
merchantId String (an‐20) o Id магазина в НСПК
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала
|
||
|
||
amount Number o Сумма платежа в минорных единицах (копейках)
|
||
|
||
currency String (ans‐3) o Код валюты (для рублей должен передаваться «RUB»)
|
||
|
||
Url String (ans 1‐512) o Полный URL для получения уведомления ТСП (значение параметра, переданного при регистрации
|
||
|
||
cashRegisterQrcStatus String y Текущий статус Кассовой ссылки СБП для указанного paramsId:
|
||
|
||
• «WAITING_PAYMENT» — Кассовая ссылка СБП для указанного paramsId активирована и готов
|
||
|
||
{
|
||
|
||
"command": "GetCashUniQrStatus",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"messageID": " f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
"payrrn": "000000000256",
|
||
|
||
"uniQrId": "AS1R0006QD93NUCF9MIPLLLDD7BF49CI",
|
||
|
||
"paramsId": "BP10001NAJ5S985L9DM9GO6PK4H6KN3M"
|
||
|
||
}
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 8/13
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
• «IN_PROGRESS» — Операция по Кассовой ссылке СБП для указанного paramsId в процессе вы
|
||
|
||
• «DEACTIVATED» — Кассовая ссылка СБП с указанным paramsId более не существует (все дейс
|
||
|
||
paramsId String‐32 y Идентификатор активного набора параметров
|
||
|
||
kzo String (1…128) o Контрольное значение Операции СБП будет заполнено только при соблюдении следующих ус
|
||
|
||
• paymentServiceId = PS0000000001»
|
||
|
||
• status = «ACWP»
|
||
|
||
status String (4) o Статус Перевода УПК. Допустимые значения:
|
||
|
||
1. «NTST» — Перевод УПК не начат
|
||
|
||
2. «RCVD» — Перевод УПК в процессе обработки
|
||
|
||
3. «ENDD» — Перевод УПК завершён (только для оплаты ЦР)
|
||
|
||
4. «ACWP» — Перевод УПК выполнен успешно (только для оплаты через СБП)
|
||
|
||
5. «RJCT» — Перевод УПК отклонён (только для оплаты через СБП)
|
||
|
||
6. «ACDR» — Перевод в ЦР выполнен успешно (аналог «ACWP»), если указан в настройке ACW
|
||
|
||
timestamp UTC time format o Дата и время выполнения Операции СБП. Параметр будет заполнен только при соблюдении следу
|
||
|
||
• paymentServiceId = «PS0000000001»
|
||
|
||
• status = «ACWP» или «RJCT»
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
• «status» = «NTST», «RCVD» или «ACTC» — означает необходимость повтора запроса до получения одного из финальных статусов
|
||
|
||
• Получение «status» = «RJCT» означает отказ в оплате данного QR-кода
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": "0",
|
||
|
||
3 "message": "Запрос выполнен",
|
||
|
||
4 "TermNo": "90080567",
|
||
|
||
5 "messageID": " f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
6 "uniQrId": "AS1R0006QD93NUCF9MIPLLLDD7BF49CI",
|
||
|
||
7 "paramsId": "BP10001NAJ5S985L9DM9GO6PK4H6KN3M",
|
||
|
||
8 "trxStatus": "ACWP",
|
||
|
||
9 "payrrn": "000000000256",
|
||
|
||
10 "timestamp": "2025-06-24T11:53:09.000Z",
|
||
|
||
11 "cashRegisterQrcStatus": "DEACTIVATED",
|
||
|
||
12 "trxId": "B5175115309809010000120011530503",
|
||
|
||
13 "trxDT": "20250624115309",
|
||
|
||
14 "amount": "100",
|
||
|
||
15 "currency": "RUB",
|
||
|
||
16 "Url": " https://sbp-payments",
|
||
|
||
17 "CreditDatePos": "20250624",
|
||
|
||
18 "payerId": "*********5744",
|
||
|
||
19 "kzo": "45dfe048b805b1f7612a51b961ee61e5df008314a1a3c82892a085cacff18500e8c7f09170c10415fd26710a4a
|
||
|
||
20 "merchantId": "MA0000018412",
|
||
|
||
21 "paymentServiceId": "PS0000000001"
|
||
|
||
22 }
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 9/13
|
||
|
||
2.3. Изменение параметров кассового УПК (универсального многоразового платёжного кода)
|
||
|
||
Запрос «ChangeAccForCashUniQr» направляется ТСП в Банк для выполнения запроса УПК API «Изменение параметров Многоразово
|
||
отдельных параметров Многоразового или Кассового УПК, заданных при регистрации УПК.
|
||
|
||
Для Многоразового или Кассового УПК могут быть изменены:
|
||
|
||
• Уникальный идентификатор терминала (параметр TermNo)
|
||
|
||
• Получатель денежных средств в Переводе УПК или ТСП получателя (параметр merchantId). Новое значение merchantId может прин
|
||
принадлежало прежнее значение merchantId, так и другому ЮЛ, ИП или Самозанятому, зарегистрированному в НСПК
|
||
|
||
• Ссылка для автоматического возврата Покупателя из приложения Банка в приложение или на сайт ТСП (параметр redirectUrl)
|
||
|
||
• Набор Платёжных сервисов, с использованием которых может быть выполнен Перевод УПК по данному Многоразовому/Кассовом
|
||
в Переводе УПК, выполненном с использованием того или иного Платёжного сервиса, например, Счет ТСП в Банке ТСП, на которы
|
||
выполнения Операции СБП C2B (параметры Account и AccountDR)
|
||
|
||
В ответе ПШ Банка возвращает результат обработки запроса и, в случае успешной обработки — значения параметров, полученных в
|
||
|
||
Метод ChangeAccForCashUniQr
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1…50) y Тип запроса. Константа «ChangeAccForCashUniQr»
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID
|
||
|
||
qrcId String (32) o Идентификатор Кассового УПК
|
||
|
||
account String (an‐20) o Новый счёт ЮЛ для УПК:
|
||
|
||
если заполнено — будет изменён счёт для оплаты через СБП в УПК
|
||
если не заполнено — значение берётся из поля Account справочника терминалов
|
||
|
||
accountDR String (55) o Новый счёт ЮЛ для ЦР:
|
||
|
||
если заполнено — будет изменён счёт для оплаты ЦР в УПК
|
||
|
||
если не заполнено — значение берётся из поля AccountDR справочника терминалов
|
||
|
||
NewTermNo String (an‐20) o Новый уникальный идентификатор терминала.
|
||
Поле обязательно, если НЕ переданы account, accountDR, NewMerchantId, redirectUrl
|
||
|
||
NewMerchantId String (an‐12) o Новый Id мерчанта (магазина) в НСПК.
|
||
|
||
Поле обязательно, если НЕ переданы account, accountDR, NewTermNo, redirectUrl
|
||
|
||
redirectUrl String (ans‐1024) o Содержит ссылку для автоматического возврата в приложение или на сайт ТСП.
|
||
|
||
Допускаются только символы в кодировке ASCII. Формат должен соответствовать правилам кодировки U
|
||
|
||
Если требуется использовать в redirectUrl кириллические символы, необходимо перекодировать их в соот
|
||
|
||
paymentPageUrl String (ans‐1024) o Ссылка для перенаправления Покупателя на Платёжную страницу Участника Сервиса УПК
|
||
|
||
fraudScore String o Индикатор Подозрительной Операции Банка ТСП
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
{
|
||
|
||
"ErrorCode": "Код ответа",
|
||
|
||
"message": "Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "command": "ChangeAccForCashUniQr",
|
||
|
||
3 "TermNo": "90080567",
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 10/13
|
||
|
||
https://wiki.finstream.ru/pages/viewpage.action?pageId=79692419#id-%D0%A8%D0%BB%D1%8E%D0%B7FastPayAgent%D0%B4%D0%BB%D1%8F%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA%D0%A2%D0%A1%D0%9F-%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D1%8B
|
||
https://wiki.finstream.ru/pages/viewpage.action?pageId=79692419#id-%D0%A8%D0%BB%D1%8E%D0%B7FastPayAgent%D0%B4%D0%BB%D1%8F%D0%B7%D0%B0%D1%8F%D0%B2%D0%BE%D0%BA%D0%A2%D0%A1%D0%9F-%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D1%8B
|
||
|
||
Правила заполнения и интерпретации параметров:
|
||
|
||
• В запросе должен быть заполнен хотя бы один из параметров: account, accountDR, NewTermNo, NewMerchantId, redirectUrl. Если ни
|
||
ErrorCode = «90» и message = «Не указан ни один из обязательных параметров»
|
||
|
||
• account — будет выполнено изменение счёта ЮЛ, ИП или самозанятого для расчётов через СБП зарегистрированного УПК. Если зн
|
||
из справочника терминалов
|
||
|
||
• accountDR — будет выполнено изменение/добавление счета ЮЛ, ИП или самозанятого для расчётов ЦР зарегистрированного УПК.
|
||
берётся из справочника терминалов/ЮЛ
|
||
|
||
• Если параметр accountDR был передан в запросе, но длина его значения отличается от 55 — будет возвращена ошибка c ErrorCode
|
||
Параметр accountDR должен содержать 55 символов»
|
||
|
||
• NewTermNo — будет выполнено изменение номера терминала для зарегистрированной Кассовой ссылки СБП. Новый номер терми
|
||
или ТСТ указанного NewMerchantId запроса
|
||
|
||
• NewMerchantId — будет выполнено изменение ТСТ для зарегистрированной Кассовой ссылки СБП. Если поле NewTermNo в запросе
|
||
перепривязка существующего TermNo к новому NewMerchantId
|
||
|
||
• redirectUrl — будет выполнено изменение ссылки автоматического возврата в приложение или на сайт ТСП для зарегистрированно
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an‐20) y Код ответа*
|
||
|
||
message String (ans‐1024) y Расшифровка кода ответа**
|
||
|
||
messageID String (ans‐1024) o Уникальный идентификатор сообщения, GUID — если ErrorCode = 0
|
||
|
||
qrcId String (an‐32) o Идентификатор QR-кода
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала
|
||
|
||
account String (an‐20) y/o Cчёт для оплаты через СБП.
|
||
В ответе должен присутствовать один из параметров account или accountDR, либо о
|
||
|
||
accountDR String (55) y/o Cчёт для оплаты ЦР.
|
||
|
||
В ответе должен присутствовать один из параметров account или accountDR, либо о
|
||
|
||
merchantId String (an‐12) y Id мерчанта (магазина) в НСПК
|
||
|
||
status String (an‐20) o Статус регистрации Платёжной или Информационной ссылки СБП («CREATED» —
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 ОК
|
||
|
||
4 "messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
5 "qrcId": "BS200031LP9DVTOR80O83FQ2ILIADFLM",
|
||
|
||
6 "account": "40201810100000088000",
|
||
|
||
7 "accountDR": "g.ab.cbrdc.wlt.clt.abcd0123-ab12-4a12-89ab-abcdef01234G",
|
||
|
||
8 "redirectUrl": "https://alfabank.ru/sme/payservice/sbp/",
|
||
|
||
9 "paymentPageUrl": " https://alfabank.ru/sme/payservice/sbp/",
|
||
|
||
10 "fraudScore": "0000000000000000",
|
||
|
||
11 "NewTermNo": "10000234",
|
||
|
||
12 "NewMerchantId": "MA0000020651"
|
||
|
||
13 }
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": "0",
|
||
|
||
3 "message": "OK",
|
||
|
||
4 "TermNo": "10000234",
|
||
|
||
5 "messageID": "f9aa54ff-a615-44b8-aa6c-acab655c89f8",
|
||
|
||
6 "qrcId": "BS200031LP9DVTOR80O83FQ2ILIADFLM",
|
||
|
||
7 "account": "40201810100000088000",
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 11/13
|
||
|
||
• 400 Bad Request
|
||
|
||
3. Нотификация Клиента-получателя об исполнении перевода ЦР С2B
|
||
|
||
Сообщение отправляется из ПШ Банка на сервер ТСП и содержит Извещение Клиента-получателя об исполнении перевода ЦР (С2B)
|
||
|
||
Метод paymentDR/notification
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an‐1…50) o Константа «paymentDR/notification»
|
||
|
||
uniQrId String (an‐32) o Идентификатор платежа в системе ЮЛ‐получателя
|
||
|
||
operationId String o Идентификатор операции на ПлЦР (значение из тега ЭС <MsgHdr/OprId>)
|
||
|
||
status String (an‐20) o Статус платежа на ПлЦР
|
||
|
||
• если заполнено значение настройки ACWPstatusDR, то передаётся значение, указанное
|
||
|
||
• «RCVD» — Перевод УПК в процессе обработки
|
||
|
||
amount String (an‐1…12) o Сумма платежа в рублях с копейками
|
||
|
||
timestamp YYYY-MM-DDThh:mm:ss[.SSS] o Дата и время исполнения распоряжения на ПлЦР
|
||
|
||
payrrn String (n‐12) y Референсный номер платежа
|
||
|
||
BatchId String (n‐4…8) y Уникальный идентификатор смены (если смена терминала открыта)
|
||
|
||
TermNo String (an‐20) y Уникальный идентификатор терминала в AWGW
|
||
|
||
CreditDatePos String (ans 1‐256) y Дата операции, установленная Банком Получателя в ходе обработки уведомления НСПК (опре
|
||
|
||
merchantName ? y Наименование ТСП
|
||
|
||
purpose String (ans‐210 y Назначение платежа
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
8 "accountDR": "g.ab.cbrdc.wlt.clt.abcd0123-ab12-4a12-89ab-abcdef01234G",
|
||
|
||
9 "status": "UPDATED",
|
||
|
||
10 "merchantId": "MA0000020651"
|
||
|
||
11 }
|
||
|
||
{
|
||
|
||
"ErrorCode": "Код ответа",
|
||
|
||
"message": "Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "command": "paymentDR/notification",
|
||
|
||
3 "uniQrId": "AD2000670LSS7DN18SJQDNP4B05KLJL1",
|
||
|
||
4 "operationId": "546464AX45546",
|
||
|
||
5 "status": "ACWP",
|
||
|
||
6 "amount": "10241.21",
|
||
|
||
7 "timestamp": "2024-08-01T10:15:00.000Z",
|
||
|
||
8 "payrrn": "102345678912",
|
||
|
||
9 "BatchId": "998844",
|
||
|
||
10 "TermNo": "90080567",
|
||
|
||
11 "CreditDatePos": "20240802",
|
||
|
||
12 "merchantName": "Рога и Копыта",
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 12/13
|
||
|
||
В ответ ожидается:
|
||
|
||
• http-код «200» — Успешный ответ (Уведомление получено)
|
||
|
||
• http-код «500» — Внутренняя ошибка
|
||
|
||
13 "purpose": "Кофе и булочка"
|
||
|
||
14 }
|
||
|
||
12/23/25, 11:24 AM Цифровой рубль
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/digital-rub/?rp-menuOpen=1 13/13
|
||
|
||
|
||
]]>
|
||
</_7_digital_rubble_md>
|
||
<_8_additional_methods_API_md>
|
||
<![CDATA[
|
||
Дополнительные методы API
|
||
|
||
Дополнительные методы API
|
||
|
||
1. Запрос списка банков-участников СБП
|
||
|
||
Запрос GetBankList направляется ТСП на ПШ Альфа-Банка для получения списка банков-участников СБП.
|
||
|
||
Метод GetBankList
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1..50) y Тип запроса. Константа «GetBankList»
|
||
|
||
messageID String (ans-1…
|
||
|
||
1024)
|
||
|
||
o Уникальный идентификатор сообщения, GUID
|
||
|
||
BankMemberIdFilter String (n-11) o Фильтр для результатов запроса (указывается идентификатор участника СБП, добавляется в запрос если в
|
||
|
||
ответе нужно получить данные только по одному банку)
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**
|
||
|
||
BankList Массив o Коллекция, содержащая список банков-участников
|
||
|
||
BankList.BankName String (an-50) o Наименование банка-участника
|
||
|
||
BankList.BankID String (an-12) o Идентификатор участника СБП в НСПК
|
||
|
||
BankList.BankBIK String (n-9) o БИК банка-участника СБП. (Присутствует в ответе если был передан из НСПК в данных участника СБП)
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
{
|
||
|
||
"command": "GetBankList"
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "message":"Запрос обработан успешно",
|
||
|
||
4 "BankList":
|
||
|
||
5 [ {
|
||
|
||
6 "BankName":"Наименование банка 1",
|
||
|
||
7 "BankID":"10000001100",
|
||
|
||
8 "BankBIK":"044525823"
|
||
|
||
9 },
|
||
|
||
10 …
|
||
|
||
11 {
|
||
|
||
12 "BankName":" Наименование банка N",
|
||
|
||
13 "BankID":"10000001145",
|
||
|
||
12/23/25, 11:25 AM Дополнительные методы API
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 1/5
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1
|
||
|
||
2. Запрос блокирования QR-кода
|
||
|
||
Запрос направляется в ПШ банка в целях блокирования сгенерированного QR-кода. Запрос действует для любого вида сгенерирова
|
||
QR-кода.
|
||
|
||
Метод BlockQRcId
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1..50) y Тип запроса. Константа «BlockQRcId»
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
reason String (ans-1024) o Причина блокировки
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
14 "BankBIK":"044525829"
|
||
|
||
15 }
|
||
|
||
16 ]
|
||
|
||
17 }
|
||
|
||
{
|
||
|
||
"command": "BlockQRcId",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"qrcId": "BS1R003FN6RS6HL48QMBFVO5C4K9GQRV",
|
||
|
||
"reason": "Заказ 12345 направлен в стоп-лист"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90080567,
|
||
|
||
"message": "OK"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": "Код ответа",
|
||
|
||
12/23/25, 11:25 AM Дополнительные методы API
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 2/5
|
||
|
||
3. Запрос разблокирования QR-кода
|
||
|
||
Запрос направляется в ПШ банка в целях разблокирования ранее заблокированного QR-кода.
|
||
|
||
Метод UnblockQRcId
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1..50) y Тип запроса. Константа «UnblockQRcId»
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
4. Запрос списка заблокированных QR-кодов
|
||
|
||
Запрос направляется в ПШ банка для получения списка заблокированных QR-кодов по определенному терминалу или кассе.
|
||
|
||
"message": "Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"command": "UnblockQRcId",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
"qrcId": "BS1R003FN6RS6HL48QMBFVO5C4K9GQRV"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode": 0,
|
||
|
||
"TermNo": 90080567,
|
||
|
||
"message": "OK"
|
||
|
||
}
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
"message": "Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:25 AM Дополнительные методы API
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 3/5
|
||
|
||
Метод GetBlockedQRcIdList
|
||
|
||
a) Описание параметров запроса:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
command String (an-1..50) y Тип запроса. Константа «GetBlockedQRcIdList»
|
||
|
||
TermNo String (an-20) y Уникальный идентификатор терминала
|
||
|
||
b) Примерный формат запроса:
|
||
|
||
c) Описание параметров ответа:
|
||
|
||
Код ключа Тип данных required Назначение
|
||
|
||
ErrorCode String (an-20) y Код ответа*
|
||
|
||
message String (ans-1024) y Расшифровка кода ответа**
|
||
|
||
QRcIdList Коллекция Список QRcId
|
||
|
||
QRcIdList.qrcId String (an-32) y Идентификатор QR-кода
|
||
|
||
QRcIdList.reason String (ans-1024) o Причина блокировки
|
||
|
||
QRcIdList.date String (an-20) y Дата и время
|
||
|
||
*, ** Таблица возможных кодов ответа приведена в приложении 2.
|
||
|
||
d) Примерный формат ответа:
|
||
|
||
• 200 OK
|
||
|
||
• 400 Bad Request
|
||
|
||
{
|
||
|
||
"command": "GetBlockedQRcIdList",
|
||
|
||
"TermNo": "90080567",
|
||
|
||
}
|
||
|
||
1 {
|
||
|
||
2 "ErrorCode": 0,
|
||
|
||
3 "QRcIdList":
|
||
|
||
4 [
|
||
|
||
5 {
|
||
|
||
6 "date": "2024-04-18 17:17:45",
|
||
|
||
7 "qrcId": "BD100000K5II0G369JHR3KBA6SM3FD3V",
|
||
|
||
8 "reason": "Заказ 12345 направлен в стоп-лист"
|
||
|
||
9 },
|
||
|
||
10 {
|
||
|
||
11 "date": "2024-05-01 19:07:15",
|
||
|
||
12 "qrcId": "BD100002JN871TSC9SJB7HPVRFD3HQ8T",
|
||
|
||
13 "reason": "Заказ 96780 направлен в стоп-лист"
|
||
|
||
14 }
|
||
|
||
15 ],
|
||
|
||
16 "TermNo": "90080567",
|
||
|
||
17 "message": "OK"
|
||
|
||
18 }
|
||
|
||
{
|
||
|
||
"ErrorCode":"Код ответа",
|
||
|
||
12/23/25, 11:25 AM Дополнительные методы API
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 4/5
|
||
|
||
"message": "Расшифровка кода ответа"
|
||
|
||
}
|
||
|
||
12/23/25, 11:25 AM Дополнительные методы API
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional-api/?rp-menuOpen=1 5/5
|
||
|
||
|
||
]]>
|
||
</_8_additional_methods_API_md>
|
||
<_9_appendix_md>
|
||
<![CDATA[
|
||
Приложения
|
||
|
||
Приложения
|
||
|
||
Приложение 1. Формат payload
|
||
В СБП используется формат двухмерного кода QR Code (ISO/IEC 18 004--2015).
|
||
|
||
Payload QR-кода может быть представлен в двух вариантах:
|
||
|
||
1. Короткий вариант Payload: https://HOST/QR_ID
|
||
|
||
2. Длинный вариант Payload: https://HOST/QR_ID?type=QR_TYPE&bank=MEMBER_ID&sum=SUM&cur=CUR&crc=CRC
|
||
|
||
Описание параметров URL-based payload:
|
||
|
||
Параметр Описание required Формат
|
||
|
||
HOST qr.nspk.ru — для QR_TYPE = 01 и 02
|
||
|
||
sub.nspk.ru — для QR_TYPE = 03
|
||
|
||
y String
|
||
|
||
QR_ID Идентификатор зарегистрированного QR кода в СБП y String 32 символа
|
||
|
||
QR_TYPE Тип QR кода:
|
||
|
||
01 — QR Static (QR наклейка);
|
||
|
||
02 — QR Dynamic (QR на кассе);
|
||
|
||
03 — QR-Subscription (Оформление привязки счета).
|
||
|
||
y String 2 цифры
|
||
|
||
MEMBER_ID Идентификатор Банка Получателя (ТСП) (Member_ID) y String 12 символов
|
||
|
||
SUM Сумма в копейках y (если QR_TYPE = 02);
|
||
|
||
Отсутствует, если QR_TYPE = 03
|
||
|
||
String до 12 цифр
|
||
|
||
CUR Валюта операции y (если присутствует SUM) String 3 символа
|
||
|
||
CRC Значение контрольной суммы y String 4 символа
|
||
|
||
Приложение 2. Описание кодов ответа
|
||
Полный перечень кодов представлен на сайте НСПК. Данная спецификация не описывает всего перечня кодов ответов т. к. в случае
|
||
исключительных ситуаций системой возможна генерация собственных кодов. Не описанные в документе коды следует обрабатыват
|
||
техническую (системную) ошибку.
|
||
|
||
ErrorCode message
|
||
|
||
«-999» Прочее сообщение FSCryptoProxy
|
||
|
||
«-71» Неверные данные Basic авторизации запроса. Не прошла проверка авторизации запроса от fsCryptoProxy → GW
|
||
|
||
«-9» Система перегружена. Повторите запрос через несколько секунд. Очередь: %1
|
||
|
||
«-8» Запрос отклонен. '%1' превышено ограничение на размер очереди. Ограничение: %2 Очередь: %3
|
||
|
||
«-7» Неверная подпись сообщения. Не прошла проверка связки запроса от fsCryptoProxy → GW, закрытый ключ, указанный в настройках fsCryptoProxy
|
||
|
||
(proxyAlias) не соответствует открытому ключу, указанному в GW, продукции у БС в настройке PublicKeyFile
|
||
|
||
12/23/25, 11:25 AM Приложения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 1/8
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1
|
||
https://host/QR_ID
|
||
https://host/QR_ID?type=QR_TYPE&bank=MEMBER_ID&sum=SUM&cur=CUR&crc=CRC
|
||
|
||
ErrorCode message
|
||
|
||
«-6» Не передана подпись сообщения в параметре Authorization заголовка
|
||
|
||
«-5» Тип запроса %1 не поддерживается
|
||
|
||
«-4» При получении данных возникли проблемы: %1
|
||
|
||
«-3» При создании потока JSON не образовался потоковый объект
|
||
|
||
«-2» Возникли проблемы при преобразовании объекта в JSON %1
|
||
|
||
«-1» Возникли проблемы при обработке запроса %1
|
||
|
||
«0» «OK»
|
||
|
||
«1» Внутренняя ошибка %1
|
||
|
||
«2» Терминал %1 не обнаружен
|
||
|
||
«3» Не заполнены данные запроса %1
|
||
|
||
«301» Некорректно заполнены данные запроса %1
|
||
|
||
«4» Не передан qrcId или payrrn
|
||
|
||
«5» Не получены данные от СПБ
|
||
|
||
«8» Таймаут ответа, попробуйте позже
|
||
|
||
«9» Ошибка идентификации, попробуйте позже
|
||
|
||
«10» Не передан реквизит command
|
||
|
||
«11» Данная команда не поддерживается
|
||
|
||
«12» «Не найдены данные для возврата»
|
||
|
||
«13» Не найден успешный ответ на вызов GetQRCreversalData по причине: %1
|
||
|
||
«14» Повторное открытие смены невозможно. Смена уже открыта.
|
||
|
||
«15» Закрытие смены невозможно. Смена не открыта
|
||
|
||
«16» Не передан TermNo
|
||
|
||
«17» Не удалось найти QR по payrrn
|
||
|
||
«18» Платеж не найден в запросах B07%1
|
||
|
||
«19» Платеж не найден в запросах B08%1
|
||
|
||
«20» Получен отказ на запрос возврата. Статус %1%2%3
|
||
|
||
«21» Не удалось получить получателя перевода
|
||
|
||
«22» payrrn=%1 в запросе не соответствует данным qrcId=%2 у которого payrrn=%3
|
||
|
||
«23» Возврат невозможен для указанных параметров. Для payrrn=%1 соответствует trxId=%2, а в запросе получен %3
|
||
|
||
«24» Возврат невозможен для указанных параметров. Для qrcId=%1 соответствует trxId=%2, а в запросе получен %3
|
||
|
||
«25» «Терминал %1 заблокирован
|
||
|
||
«26» «Ошибка идентификации»
|
||
|
||
«27» «Невозможно выполнить возврат по данному Терминалу, т. к. счет зачисления не равен счету списания»
|
||
|
||
«28» Запрос QR-кода не удался, не был получен Идентификатор QR-кода
|
||
|
||
12/23/25, 11:25 AM Приложения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 2/8
|
||
|
||
ErrorCode message
|
||
|
||
«29» Возврат невозможен. Для qrcId=%1 не удалось найти успешный ответ на запрос GetQRCstatus
|
||
|
||
«30» Отсутствуют данные в переданных параметрах
|
||
|
||
«31» Не удалось определить параметры: legalid или Для legalid не удалось найти данные в спр. счетов или в спр. клиентов
|
||
|
||
«32» Отсутствуют данные получателя
|
||
|
||
«33» Отсутствуют данные отправителя
|
||
|
||
«34» Значения параметров запроса не совпадают с данными предыдущего шага
|
||
|
||
«35» Не заполнен обязательный параметр REF
|
||
|
||
«40» Возврат невозможен. Для payrrn=%1 не удалось найти успешный ответ на запрос GetQRCstatus
|
||
|
||
«41» При активации кассовой ссылки, не удалось получить paramsId
|
||
|
||
«42» Счет %1 не зарегистрирован у клиента. Изменение невозможно.
|
||
|
||
«43» Данные об оплате еще не известны. По qrcId не получено уведомление (Notification) от НСПК
|
||
|
||
«44» Кассовая ссылка зарегистрирована на устройстве #'%1' и может быть использована только на этом устройстве.
|
||
|
||
«45» Общая Ошибка поиска архивной операции C2B
|
||
|
||
«46» Ошибка поиска архивной операции C2B, по причине: %1
|
||
|
||
«47» Для выяснения статуса возврата необходимо передать один из параметров запроса: messageID, trxId или opkcRefundRequestId
|
||
|
||
«48» Возврат с messageID '%1' на устройстве #'%2' не обнаружен
|
||
|
||
«49» По возврату с messageID '%1' не обнаружен Идентификатор Операции СБП B2C по сценарию Возврат по Операции СБП C2B
|
||
|
||
«50» Идентификаторы Операции СБП B2C по сценарию Возврат по Операции СБП C2B переданный в запросе '%1' отличается от данных возврата '%2'
|
||
полученного по messageID '%3'
|
||
|
||
«51» Возврат по Идентификаторы Операции СБП B2C '%1' не обнаружен
|
||
|
||
«52» Если передан реквизит opkcRefundRequestId запроса, то для выяснения статуса возврата необходимо также передать один из параметров запроса pa
|
||
|
||
или originalTrxId
|
||
|
||
«53» По данным payrrn '%1' не удалось определить Идентификатор исходной Операции СБП C2B
|
||
|
||
«54» Не передан параметр LegalId
|
||
|
||
«55» Не передан параметр quantity
|
||
|
||
«67» ТСП '%1' не обнаружено с справочнике системы
|
||
|
||
«68» Выплата по ТСП '%1' для устройства '%2' — запрещена
|
||
|
||
«101» Тип запроса command='%1' не поддерживается
|
||
|
||
«121» Возврат не может быть осуществлен, т. к. операция оплаты не имеет финального статуса
|
||
|
||
«201» Получен отказ на запрос возврата. «Статус %1, Недостаточно средств на счете»
|
||
|
||
«1001» «Сервис временно недоступен»
|
||
|
||
«RQ00000» Запрос обработан успешно.
|
||
|
||
«RQ00030» Согласие на выполнение платежа.
|
||
|
||
«RQ00031» Ожидание решения по возврату от Банка Плательщика.
|
||
|
||
«RQ02034» Некорректное значение code.
|
||
|
||
12/23/25, 11:25 AM Приложения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 3/8
|
||
|
||
ErrorCode message
|
||
|
||
«RQ03001» Ошибка валидации. Неверный формат запроса.
|
||
|
||
«RQ05001» Значение agentId отсутствует в ОПКЦ СБП (Агент с указанным идентификатором не найден).
|
||
|
||
«RQ05002» Значение memberId отсутствует в ОПКЦ СБП (участник с указанным идентификатором не найден).
|
||
|
||
«RQ05003» Значение LegalId отсутствует в ОПКЦ СБП (юридическое лицо с указанным идентификатором не найдено).
|
||
|
||
«RQ05004» Счет юридического лица не найден.
|
||
|
||
«RQ05005» Значение merchantId отсутствует в ОПКЦ СБП (ТСП с указанным идентификатором не зарегистрировано в СБП).
|
||
|
||
«RQ05006» Некорректное значение currency (код валюты).
|
||
|
||
«RQ05007» Неверная версия шаблона Платежной или Информационной ссылки СБП (неверная версия шаблона QRC).
|
||
|
||
«RQ05008» Неверный тип Платежной или Информационной ссылки СБП (неверный тип QRC).
|
||
|
||
«RQ05009» Значение amount меньше минимально допустимого
|
||
|
||
«RQ05010» Значение amount больше максимально допустимого
|
||
|
||
«RQ05011» amount и currency должны одновременно присутствовать или одновременно отсутствовать при qrcType = 01 (QR-Static)
|
||
|
||
«RQ05012» Отсутствует currency при qrcType = 02 (QR-Dynamic)
|
||
|
||
«RQ05013» Отсутствует amount при qrcType = 02 (QR-Dynamic)
|
||
|
||
«RQ05014» Значение qrcId не найдено
|
||
|
||
«RQ05015» Превышено допустимое значение элементов в запросе
|
||
|
||
«RQ05016» Некорректный формат qrcId
|
||
|
||
«RQ05017» Некорректный формат или отсутствует paymentPurpose
|
||
|
||
«RQ05018» Некорректный формат subscriptionPurpose
|
||
|
||
«RQ05019» Отсутствует amount при активации Кассовой ссылки СБП
|
||
|
||
«RQ05020» Период использования динамической Платежной ссылки СБП в поле qrTtl выходит за допустимый диапазон
|
||
|
||
«RQ05021» Некорректный формат subscriptionToken
|
||
|
||
«RQ05022» Невозможно деактивировать Кассовую ссылку СБП
|
||
|
||
«RQ05023» qrTtl для Кассовой ссылки СБП выходит за допустимый диапазон
|
||
|
||
«RQ05024» Некорректный формат redirectUrl
|
||
|
||
«RQ05025» Отказ в смене счета ЮЛ, ИП или самозанятого. Кассовая ссылка СБП не деактивирована
|
||
|
||
«RQ05026» Кассовая ссылка с указанным идентификатором уже существует
|
||
|
||
«RQ05030» Отказ Банка Плательщика. Плательщик отказался от привязки счета
|
||
|
||
«RQ05031» Отказ Банка Плательщика. Привязка счета не найдена
|
||
|
||
«RQ05032» Отказ Банка Плательщика в выполнении платежа
|
||
|
||
«RQ05033» Отказ в повторном платеже
|
||
|
||
«RQ05034» Сценарий не поддерживается Банком Плательщика
|
||
|
||
«RQ05035» Истекло время ожидания решения Банка Плательщика
|
||
|
||
«RQ05036» Дублирование идентификатора запроса, назначаемого ТСП или Агентом ТСП, — agentRefundRequestId
|
||
|
||
12/23/25, 11:25 AM Приложения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 4/8
|
||
|
||
ErrorCode message
|
||
|
||
«RQ05037» Предыдущий запрос на возврат по Операции СБП C2B еще не обработан
|
||
|
||
«RQ05038» Параметры запроса отличаются от параметров исходной Операции СБП C2B
|
||
|
||
«RQ05039» Не найдена исходная Операция СБП C2B
|
||
|
||
«RQ05040» Отказ от Банка Плательщика. Сумма возврата превышает сумму исходной Операции СБП C2B
|
||
|
||
«RQ05041» Запрос на возврат по операции C2B не найден
|
||
|
||
«RQ05042» Некорректный формат или отсутствует amount
|
||
|
||
«RQ05043» Некорректный формат или отсутствует takeTax
|
||
|
||
«RQ05044» Некорректный формат или отсутствует totalTaxAmount
|
||
|
||
«RQ05045» Некорректный формат uip
|
||
|
||
«RQ05046» Неверный тип платежной ссылки
|
||
|
||
«RQ05047» Запрос на возврат с указанным идентификатором не найден
|
||
|
||
«RQ05050» Сценарии с привязкой счета для ЮЛ/ИП недоступны
|
||
|
||
«RQ05051» Решение выполнения оплаты с привязанного счета от Банка Плательщика еще не получено
|
||
|
||
«RQ05052» Распоряжение от Банка Плательщика не было получено в ожидаемое время
|
||
|
||
«RQ05053» От Банка Плательщика было получено положительное решение об оплате с привязанного счета Плательщика
|
||
|
||
«RQ07999» Техническая ошибка
|
||
|
||
Ошибки по методу GetQRCd
|
||
|
||
Код Описание
|
||
|
||
-1 Возникли проблемы при обработке запроса: <...>
|
||
|
||
1 Внутренняя ошибка <...>
|
||
|
||
3 Не заполнены данные: <...>
|
||
|
||
8 Таймаут ответа, попробуйте позже
|
||
|
||
26 Ошибка идентификации
|
||
|
||
28 Запрос QR-кода не удался, не был получен Идентификатор QR-кода
|
||
|
||
301 Некорректно заполнены данные данные: <...>
|
||
|
||
100 Ошибка во время выполнения SQL-запроса для поиска AccountDR для TermNo=<TermNo>
|
||
|
||
101 Ошибка во время выполнения SQL-запроса для проверки isUniQR для QrcId = <QrcId>
|
||
|
||
999* Неизвестная ошибка. Необходимо уточнить статус операции
|
||
|
||
Ошибки по методу GetQRCstatus
|
||
|
||
Код Описание
|
||
|
||
-1 Возникли проблемы при обработке запроса: <...>
|
||
|
||
1 Внутренняя ошибка <...>
|
||
|
||
12/23/25, 11:25 AM Приложения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 5/8
|
||
|
||
Код Описание
|
||
|
||
2 Терминал <номер терминала> не обнаружен
|
||
|
||
4 Не передан qrcId или payrrn
|
||
|
||
5 Не получены данные от СПБ
|
||
|
||
8 Таймаут ответа, попробуйте позже
|
||
|
||
9 Ошибка идентификации, попробуйте позже
|
||
|
||
16 Не передан параметр TermNo
|
||
|
||
18 Платеж не найден в запросах B07,B23 <...>
|
||
|
||
25 Терминал <номер терминала> заблокирован
|
||
|
||
999* Неизвестная ошибка. Необходимо уточнить статус операции.
|
||
|
||
Ошибки по методу GetQRCreversalData
|
||
|
||
Код Описание
|
||
|
||
-1 Возникли проблемы при обработке запроса: <текст с более подробным описанием ошибки>
|
||
|
||
1 Внутренняя ошибка <текст с более подробным описанием ошибки>
|
||
|
||
2 Терминал <номер терминала> не обнаружен
|
||
|
||
3 Не заполнены данные: <текст с более подробным описанием ошибки>
|
||
|
||
8 Таймаут ответа, попробуйте позже
|
||
|
||
12 Не найдены данные для возврата
|
||
|
||
16 Не передан параметр TermNo
|
||
|
||
20 Получен отказ на запрос возврата. Статус <статус и при наличии код с текстом ошибки>
|
||
|
||
21 Не удалось получить получателя перевода
|
||
|
||
22 payrrn=<значение payrrn> в запросе не соответствует данным qrcId=<значение qrcId> у которого payrrn=<значение payrrn>
|
||
|
||
23 Возврат невозможен для указанных параметров. Для payrrn=<значение payrrn> соответствует trxId=<значение trxId>, а в запросе получен <значение trxId>
|
||
|
||
24 Возврат невозможен для указанных параметров. Для qrcId=<значение qrcId> соответствует trxId=<значение trxId>, а в запросе получен <значение trxId>
|
||
|
||
25 Терминал <номер терминала> заблокирован
|
||
|
||
27 Невозможно выполнить возврат по данному Терминалу, т.к. счёт зачисления не равен счёту списания
|
||
|
||
29 Возврат невозможен. Для qrcId=<значение qrcId> не удалось найти успешный ответ на запрос GetQRCstatus
|
||
|
||
40 Возврат невозможен. Для payrrn=<значение payrrn> не удалось найти успешный ответ на запрос GetQRCstatus
|
||
|
||
1001 Превышено количество повторных запросов возврата B2C
|
||
|
||
Ошибки по методу QRCreversal
|
||
|
||
Код Описание
|
||
|
||
-1 Возникли проблемы при обработке запроса: <текст с более подробным описанием ошибки>
|
||
|
||
1 Внутренняя ошибка <текст с более подробным описанием ошибки>
|
||
|
||
12/23/25, 11:25 AM Приложения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 6/8
|
||
|
||
Код Описание
|
||
|
||
2 Терминал <номер терминала> не обнаружен
|
||
|
||
3 Не заполнены данные: <текст с более подробным описанием ошибки>
|
||
|
||
8 Таймаут ответа, попробуйте позже
|
||
|
||
12 Не найдены данные для возврата
|
||
|
||
13 Не найден успешный ответ на вызов GetQRCreversalData
|
||
|
||
16 Не передан параметр TermNo
|
||
|
||
20 Получен отказ на запрос возврата. Статус <статус и при наличии код с текстом ошибки>
|
||
|
||
21 Не удалось получить получателя перевода
|
||
|
||
22 payrrn=<значение payrrn> в запросе не соответствует данным qrcId=<значение qrcId> у которого payrrn=<значение payrrn>
|
||
|
||
23 Возврат невозможен для указанных параметров. Для payrrn=<значение payrrn> соответствует trxId=<значение trxId>, а в запросе получен <значение trxId>
|
||
|
||
24 Возврат невозможен для указанных параметров. Для qrcId=<значение qrcId> соответствует trxId=<значение trxId>, а в запросе получен <значение trxId>
|
||
|
||
25 Терминал <номер терминала> заблокирован
|
||
|
||
27 Невозможно выполнить возврат по данному Терминалу, т.к. счёт зачисления не равен счёту списания
|
||
|
||
40 Возврат невозможен. Для payrrn=<значение payrrn> не удалось найти успешный ответ на запрос GetQRCstatus
|
||
|
||
201 Получен отказ на запрос возврата. Статус <статус>, недостаточно средств на счёте
|
||
|
||
999* Неизвестная ошибка. Необходимо уточнить статус операции
|
||
|
||
Ошибки по методу ActivateCashQRc
|
||
|
||
Код Описание
|
||
|
||
-1 Возникли проблемы при обработке запроса: <текст с более подробным описанием ошибки>
|
||
|
||
1 Внутренняя ошибка <...>
|
||
|
||
2 Терминал <номер терминала> не обнаружен
|
||
|
||
3 Не заполнены данные: <...>
|
||
|
||
8 Таймаут ответа, попробуйте позже
|
||
|
||
16 Не передан параметр TermNo
|
||
|
||
25 Терминал <номер терминала> заблокирован
|
||
|
||
28 Запрос QR-кода не удался, не был получен Идентификатор QR-кода
|
||
|
||
41 При активации кассовой ссылки не удалось получить paramsId
|
||
|
||
44 Кассовая ссылка зарегистрирована на устройстве #'<номер терминала>' и может быть использована только на этом устройстве
|
||
|
||
301 Некорректно заполнены данные данные: <...>
|
||
|
||
999* Неизвестная ошибка. Необходимо уточнить статус операции
|
||
|
||
Коды ответов, направляемые в callback-уведомлении по сценарию «Оплата с привязанного счёта» по методу «resolution
|
||
/notification»
|
||
|
||
12/23/25, 11:25 AM Приложения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 7/8
|
||
|
||
ErrorCode message
|
||
|
||
«RQ05031» Отказ Банка Плательщика. Привязка счёта не найдена
|
||
|
||
«RQ05032» Отказ Банка Плательщика в проведении платежа
|
||
|
||
«RQ05060» Недостаточно денежных средств для проведения операции
|
||
|
||
«RQ05061» Превышен лимит по сумме операций по СБП
|
||
|
||
«RQ05062» Превышен лимит по количеству операций по СБП
|
||
|
||
«RQ05063» Подозрение в мошенничестве
|
||
|
||
«RQ05064» Выполнение операций в данной категории ТСП запрещено
|
||
|
||
«RQ05065» Счёт заблокирован
|
||
|
||
«RQ05066» Счёт закрыт
|
||
|
||
«RQ05067» Выполнение операции запрещено по требованию законодательства
|
||
|
||
Примечание: Применение кода ответа «RQ05032» допускается не более, чем в 20% от общего числа отказов со стороны Банка
|
||
Плательщика при выполнении Сценария «Оплата с привязанного счёта».
|
||
|
||
Приложение 3. Пояснение для колонки «required»
|
||
«y» — «Yes» обязательное;
|
||
|
||
«o» — «Optional» (опционально);
|
||
|
||
«y/o» — «Условно обязательное» определяется условиями запроса.
|
||
|
||
Приложение 4. Пояснение для колонки «Тип данных»
|
||
|
||
Нотация Описание
|
||
|
||
a Символы латинского алфавита (A–Z и a–z) с десятичными кодами из диапазонов [065-090] и [097-122] в кодировке UTF-8;
|
||
|
||
Символы русского алфавита (А-Я и а-я) с десятичными кодами из диапазона [1040-1103] в кодировке UTF-8.
|
||
|
||
n Цифры 0-9 с десятичными кодами из диапазона [048-057] в кодировке UTF-8.
|
||
|
||
an Символы латинского алфавита (A–Z и a–z) с десятичными кодами из диапазонов [065-090] и [097-122] в кодировке UTF-8;
|
||
|
||
Символы русского алфавита (А-Я и а-я) с десятичными кодами из диапазона [1040-1103] в кодировке UTF-8;
|
||
|
||
Цифры 0-9 с десятичными кодами из диапазона [048-057] в кодировке UTF-8.
|
||
|
||
ans Символы латинского алфавита (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.
|
||
|
||
12/23/25, 11:25 AM Приложения
|
||
|
||
https://alfabank.ru/sme/payservice/sbp/docs/additional/?rp-menuOpen=1 8/8
|
||
|
||
|
||
]]>
|
||
</_9_appendix_md>
|
||
</qr_payout>
|