12150 lines
751 KiB
XML
12150 lines
751 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<payin_and_kyc>
|
||
<Alfa_ID>
|
||
<alfa_id_login_button_md>
|
||
<
|
||
|
||
### Исходные файлы
|
||
|
||
Вы можете импортировать макет кнопки для использования в своем дизайне из следующего файла:
|
||
📥 [Скачать button.fig](https://developers.alfabank.ru/assets/developers-portal.docs.alfa-api/articles/alfa-id/articles/button/files/button.fig)
|
||
|
||
---
|
||
|
||
## Общая информация об Alfa ID
|
||
|
||
_(Данные из справочного раздела системы)_
|
||
|
||
**Alfa ID** — единая учётная запись пользователя ЮЛ (юридического лица) / ФЛ (физического лица), которая помогает пользователям входить на ваш сайт или в приложение, а также в продукты и сервисы Альфа-Банка.
|
||
|
||
### Преимущества для пользователей
|
||
|
||
- Простая и быстрая аутентификация на сайтах и в приложениях;
|
||
- Единый и безопасный аккаунт;
|
||
- Упрощение процесса покупки или подачи заявки;
|
||
- Безопасность персональных данных;
|
||
- Не нужно запоминать множество паролей.
|
||
|
||
### Преимущества для партнёров
|
||
|
||
- Простая и быстрая аутентификация, выше конверсия на вход;
|
||
- Быстрое получение актуальных данных пользователя от Банка;
|
||
- Автозаполнение форм и заявок;
|
||
- Проверка реальности пользователя;
|
||
- Индустриальные стандарты защиты данных и персональной информации;
|
||
- Отсутствие необходимости хранить персональные данные на своей стороне.
|
||
|
||
### Рекомендуемые браузеры
|
||
|
||
- **Яндекс Браузер:** версии 21 и выше;
|
||
- **Safari:** версии 16 и выше;
|
||
- **Google Chrome:** версии 117 и выше.
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
← [Аутентификация](/products/alfa-api/documentation/articles/alfa-id/articles/authentication/authentication) | [Как использовать ACF](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/intro/intro) →
|
||
|
||
]]>
|
||
</alfa_id_login_button_md>
|
||
<authentication_md>
|
||
<
|
||
- [Кнопка входа по Alfa ID →](/products/alfa-api/documentation/articles/alfa-id/articles/button/button)
|
||
|
||
]]>
|
||
</authentication_md>
|
||
<Authorization_Code_Flow>
|
||
<access_token_refresh_POST_md>
|
||
<.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------------- | :----- | :------------- | :---------------------------------- |
|
||
| **Accept** | string | required | `application/json` |
|
||
| **Content-Type** | string | required | `application/x-www-form-urlencoded` |
|
||
|
||
### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **grant_type** | string | required | Тип гранта. Возможные значения: `refresh_token` |
|
||
| **refresh_token** | string | required | Токен обновления. Обновить `access_token` через `refresh_token` можно только 2 раза. В дальнейшем необходимо использовать новый `refresh_token` |
|
||
| **client_id** | string | required | Идентификатор партнёрского сервиса |
|
||
| **client_secret** | string | required | Секретный ключ партнёрского сервиса |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/oidc/token' \
|
||
--header 'Content-Type: application/x-www-form-urlencoded' \
|
||
--header 'Accept: application/json' \
|
||
--data-urlencode 'grant_type=refresh_token' \
|
||
--data-urlencode 'refresh_token=13b8230b-b6bf-4bb9-b977-3bc0a988a5fd' \
|
||
--data-urlencode 'client_id=0cee0683-85ae-49f2-a63d-29f97aad1911' \
|
||
--data-urlencode 'client_secret=Qwerty1234567890Qwerty1234567890!'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
**HEADERS**
|
||
|
||
- **Content-Type**: `application/json`
|
||
- **Cache-Control**: `no-store`
|
||
- **Pragma**: `no-cache`
|
||
|
||
**BODY**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **access_token** | string | required | Токен доступа |
|
||
| **refresh_token** | string | required | Токен обновления |
|
||
| **token_type** | string | required | Тип токена (например, `Bearer`) |
|
||
| **expires_in** | integer | optional | Срок жизни токена в секундах |
|
||
|
||
**Пример JSON-ответа:**
|
||
|
||
```json
|
||
{
|
||
"access_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ...",
|
||
"refresh_token": "2cc8d34c-130a-4674-91fa-f9835fff6e88",
|
||
"token_type": "Bearer",
|
||
"expires_in": 3600
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Ошибка (400 Bad Request)
|
||
|
||
**BODY**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | required | Код ошибки. Возможные значения: `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
---
|
||
|
||
## Навигация
|
||
|
||
- [← Получение профиля представителя пользователя](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/get-profile-info/v1/get-profile-info)
|
||
- [Как использовать ACF для H2H →](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro)
|
||
|
||
]]>
|
||
</access_token_refresh_POST_md>
|
||
<how_to_use_ACF_md>
|
||
<.
|
||
|
||
---
|
||
|
||
### Дополнительно
|
||
|
||
При необходимости вы можете:
|
||
|
||
- [Обновить токен](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/token-update/v1/token-update)
|
||
- [Отозвать токен](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/revoke-token/v1/revoke-token)
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
← [Кнопка входа по Alfa ID](/products/alfa-api/documentation/articles/alfa-id/articles/button/button) | [Получение кода авторизации](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/get-auth-code/v1/get-auth-code) →
|
||
|
||
---
|
||
|
||
_Примечание: В данном документе используются относительные ссылки. Для перехода по ним используйте базовый адрес портала (developers.alfabank.ru)._
|
||
|
||
]]>
|
||
</how_to_use_ACF_md>
|
||
<obtaining_an_access_token_POST_md>
|
||
<.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--------------- | :----- | :---- | :---------------------------------- |
|
||
| **Accept** | string | Да | `application/json` |
|
||
| **Content-Type** | string | Да | `application/x-www-form-urlencoded` |
|
||
|
||
### BODY (x-www-form-urlencoded)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :---------------- | :----- | :---- | :--------------------------------------------------- |
|
||
| **grant_type** | string | Да | Тип гранта. Возможные значения: `authorization_code` |
|
||
| **code** | string | Да | Код авторизации |
|
||
| **client_id** | string | Да | Идентификатор партнёрского сервиса |
|
||
| **client_secret** | string | Да | Секретный ключ партнёрского сервиса |
|
||
| **redirect_uri** | string | Да | URI перенаправления |
|
||
| **code_verifier** | string | Нет | Код верификатор |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/oidc/token' \
|
||
--header 'Content-Type: application/x-www-form-urlencoded' \
|
||
--header 'Accept: application/json' \
|
||
--data-urlencode 'grant_type=authorization_code' \
|
||
--data-urlencode 'code=8962c304-89b1-11ec-a8a3-0242ac120002' \
|
||
--data-urlencode 'client_id=0cee0683-85ae-49f2-a63d-29f97aad1911' \
|
||
--data-urlencode 'client_secret=Qwerty1234567890Qwerty1234567890!' \
|
||
--data-urlencode 'redirect_uri=https://wwww.partner.ru/code' \
|
||
--data-urlencode 'code_verifier=string'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Ответ 200 (OK)
|
||
|
||
**HEADERS**
|
||
|
||
- `Content-Type`: `application/json`
|
||
- `Cache-Control`: `no-store`
|
||
- `Pragma`: `no-cache`
|
||
|
||
**BODY**
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **access_token** | string | Да | Токен доступа |
|
||
| **refresh_token** | string | Да | Токен обновления |
|
||
| **token_type** | string | Да | Тип токена (обычно `Bearer`) |
|
||
| **expires_in** | integer | Нет | Срок жизни токена в секундах |
|
||
| **id_token** | string | Да | Идентификационный токен |
|
||
|
||
**Пример JSON-ответа:**
|
||
|
||
```json
|
||
{
|
||
"access_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ...",
|
||
"refresh_token": "13b8230b-b6bf-4bb9-b977-3bc0a988a5fd",
|
||
"token_type": "Bearer",
|
||
"expires_in": 3600,
|
||
"id_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ..."
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Ответ 400 (Bad Request)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :-------------------- | :----- | :---- | :--------------------------------------- |
|
||
| **error** | string | Да | Код ошибки (например, `invalid_request`) |
|
||
| **error_description** | string | Нет | Описание ошибки |
|
||
|
||
---
|
||
|
||
## Таблица возможных значений параметра error
|
||
|
||
| Значение | Описание |
|
||
| :----------------------- | :------------------------------------------------------------------------------------------------------------------ |
|
||
| `invalid_request` | Отсутствует обязательный параметр, неподдерживаемое значение, повторение параметра или неправильный формат запроса. |
|
||
| `invalid_client` | Ошибка аутентификации клиента (неизвестный клиент или неподдерживаемый метод). |
|
||
| `invalid_grant` | Недействительный код авторизации, токен обновления или несоответствие URI перенаправления. |
|
||
| `unsupported_grant_type` | Тип `grant_type` не поддерживается сервером. |
|
||
| `internal_error` | Произошла непредвиденная ошибка. |
|
||
|
||
---
|
||
|
||
## Описание клэймов (claims)
|
||
|
||
### access_token
|
||
|
||
| Значение | Описание |
|
||
| :----------------- | :----------------------------------------------------- |
|
||
| **iss** | URL-адрес Alfa ID (https://id.alfabank.ru/oidc) |
|
||
| **sub** | Уникальный идентификатор Alfa ID пользователя |
|
||
| **aud** | Идентификатор сервиса-партнёра (аудитория токена) |
|
||
| **exp** | Время окончания срока действия токена (Unix timestamp) |
|
||
| **iat** | Время выпуска токена (Unix timestamp) |
|
||
| **scope_claims** | Массив клэймов области применения |
|
||
| **scope_services** | Массив операций области применения |
|
||
|
||
### id_token
|
||
|
||
| Значение | Описание | Scope |
|
||
| :------------ | :--------------------------------------- | :----- |
|
||
| **iss** | URL-адрес Alfa ID | openid |
|
||
| **sub** | Уникальный идентификатор пользователя | openid |
|
||
| **aud** | Идентификатор сервиса-партнёра | openid |
|
||
| **exp** | Время окончания срока действия | openid |
|
||
| **iat** | Время выпуска | openid |
|
||
| **auth_time** | Время аутентификации пользователя | openid |
|
||
| **nonce** | Строка для защиты от повторных атак | openid |
|
||
| **acr** | Способ аутентификации пользователя | openid |
|
||
| **azp** | Сторона, которой выдан токен (client_id) | openid |
|
||
|
||
]]>
|
||
</obtaining_an_access_token_POST_md>
|
||
<obtaining_an_authorization_code_GET_md>
|
||
<
|
||
|
||
---
|
||
|
||
### Шаг 2. Формирование ссылки
|
||
|
||
#### Эндпоинты
|
||
|
||
* **Песочница:**
|
||
`GET https://id-sandbox.alfabank.ru/oidc/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&scope={scope}&state={state}`
|
||
* **Пром:**
|
||
`GET https://id.alfabank.ru/oidc/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&scope={scope}&state={state}`
|
||
|
||
> **Важно:** При формировании ссылки указывайте весь доступный `scope` через знак пробела или `%20`. Параметр `prompt=consent` используйте только если нужно, чтобы пользователь повторно подписал согласие.
|
||
|
||
#### Параметры запроса (QUERY)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `response_type` | string | Да | Тип ответа. Возможные значения: `code` |
|
||
| `client_id` | string | Да | Идентификатор партнёрского сервиса (выдается банком) |
|
||
| `redirect_uri` | string | Да | URI для перенаправления пользователя после успешной авторизации |
|
||
| `scope` | string | Да | Область применения (информирует, какие данные будут использованы) |
|
||
| `state` | string | Да | Параметр для защиты от CSRF. UUID, 36 символов. |
|
||
| `nonce` | string | Нет | Строка для связи сессии с ID-токеном и защиты от повторных атак |
|
||
| `code_challenge` | string | Нет | Код вызова |
|
||
| `code_challenge_method` | string | Нет | Метод преобразования: `plain` или `S256` |
|
||
| `prompt` | string | Нет | Параметр повторной аутентификации: `none`, `login`, `consent` |
|
||
| `max_age` | string | Нет | Максимальный период аутентификации |
|
||
|
||
#### Пример запроса
|
||
```bash
|
||
curl -X GET https://id.alfabank.ru/oidc/authorize?response_type=code&client_id=0cee0683-85ae-49f2-a63d-29f97aad1911&redirect_uri=https%3A%2F%2Fwwww.partner.ru%2Fcode&scope=openid&state=abcdef
|
||
```
|
||
|
||
---
|
||
|
||
### Шаг 3. Аутентификация пользователя
|
||
|
||
1. Пользователь проходит процедуру аутентификации.
|
||

|
||
|
||
2. Пользователь выбирает организацию (для ЮЛ; для ФЛ шаг пропускается).
|
||

|
||
|
||
3. Пользователь подписывает форму согласия.
|
||

|
||
|
||
---
|
||
|
||
### Шаг 4. Получение кода авторизации
|
||
|
||
Код авторизации получен, если пришел ответ **302 Found**.
|
||
|
||
> **Внимание:** Код авторизации действует **2 минуты** и может быть использован только **1 раз**.
|
||
|
||
#### Пример успешного ответа
|
||
```bash
|
||
https://wwww.partner.ru/code?code=8962c304-89b1-11ec-a8a3-0242ac120002&state=abcdef
|
||
-H 'Location: https://wwww.partner.ru/code?code=8962c304-89b1-11ec-a8a3-0242ac120002&state=abcdef'
|
||
-H 'Set-Cookie: ALFASESSIONID=f9e9532f-7b06-4023-83a2-f6cc77a7bfe4'
|
||
```
|
||
|
||
#### Параметры ответа (302 Found)
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| `Location` | string | Содержит URI перенаправления вида: `redirect_uri?code={code}&state={state}` |
|
||
| `Set-Cookie` | string | Содержит идентификатор сессии |
|
||
|
||
---
|
||
|
||
### Ошибки
|
||
|
||
В случае неуспешного выполнения запроса в заголовке `Location` передаётся строка вида: `redirect_uri_error_page?error={error}`.
|
||
|
||
#### Таблица возможных значений параметра error
|
||
|
||
| Значение | Описание |
|
||
| :--- | :--- |
|
||
| `unsupported_response_type` | Сервер не поддерживает получение кода этим методом |
|
||
| `login_required` | Необходима аутентификация (возникает при `prompt=none`) |
|
||
| `invalid_scope` | Недопустимая или неизвестная область применения |
|
||
| `invalid_request` | Отсутствует обязательный параметр или неверный формат запроса |
|
||
| `consent_required` | Необходимо согласие пользователя (возникает при `prompt=none`) |
|
||
| `access_denied` | Владелец ресурса или сервер отклонил запрос |
|
||
| `invalid_operation_response` | Используйте только данные из спецификации ACF |
|
||
| `login_expired` | Пользователь не прошел аутентификацию за 15 минут или сделал logout |
|
||
|
||
---
|
||
**Далее:** [Получение токена доступа](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/get-access-token/v1/get-access-token)
|
||
|
||
]]>
|
||
</obtaining_an_authorization_code_GET_md>
|
||
<obtaining_a_user_representative_profile_md>
|
||
<![CDATA[
|
||
# Получение профиля представителя пользователя `B2B` `B2C`
|
||
|
||
## Эндпоинты
|
||
|
||
| Среда | Метод и URL |
|
||
| :------------ | :---------------------------------------------- |
|
||
| **Песочница** | `GET https://sandbox.alfabank.ru/oidc/userinfo` |
|
||
| **Пром** | `GET https://baas.alfabank.ru/oidc/userinfo` |
|
||
|
||
---
|
||
|
||
## Описание
|
||
|
||
Для идентификации пользователя выполняется запрос на получение информации о профиле представителя ЮЛ/ФЛ.
|
||
|
||
- **Входящие параметры:** `access_token`.
|
||
- **Исходящие параметры:** данные пользователя, на передачу которых от пользователя есть разрешение.
|
||
|
||
> Для каждого Партнёра API перечень допустимых клэймов настраивается индивидуально.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :-------------------- |
|
||
| **Authorization** | string | required | Bearer {access_token} |
|
||
| **Accept** | string | required | application/jwt |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/oidc/userinfo' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/jwt'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 OK
|
||
|
||
**Headers:**
|
||
|
||
- `Content-Type: application/jwt` (optional)
|
||
|
||
**Пример ответа (JWT):**
|
||
|
||
```text
|
||
eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJjdXMiOiJVQUFBQUEiLCJzdWIiOiIzMjI4ZTY4ZS1jYzM0LTRiODItYjQzZC00OTExMmI1ZDlkM2UiLCJiaXJ0aGRhdGUiOiIyMDAwLTAyLTIwIiwicm9sZSI6IkFDQ09VTlRBTlQsIE1BTkFHRVIiLCJnZW5kZXIiOiJNQUxFIiwiaWRlbnRpdHlfZG9jdW1lbnRfbmFtZSI6ItCf0LDRgdC_0L7RgNGCINCz0YDQsNC20LTQsNC90LjQvdCwINCg0KQiLCJpZGVudGl0eV9kb2N1bWVudF9udW1iZXIiOjIyMjIyMiwiaXNzIjoiaHR0cHM6XC9cL2JhYXMuYWxmYWJhbmsucnUiLCJpbm4iOjc0MTUxMTExMjIyMiwiZWlvIjp0cnVlLCJnaXZlbl9uYW1lIjoi0KLQtdGB0YIiLCJtaWRkbGVfbmFtZSI6ItCi0LXRgdGC0L7QstC40YciLCJhY3VzIjoiWEFBQUFBIiwiaWRlbnRpdHlfZG9jdW1lbnRfc2VyaWVzIjoxMTExLCJhdWQiOiIwY2VlMDY4My04NWFlLTQ5ZjItYTYzZC0yOWY5N2FhZDE5MTEiLCJhY2xjIjoiWEFBQUExIiwidXBkYXRlZF9hdCI6IjIwMjItMDEtMjAiLCJuYW1lIjoi0KLQtdGB0YLQvtCyINCi0LXRgdGCINCi0LXRgdGC0L7QstC40YciLCJwaG9uZV9udW1iZXIiOjc5MTkxMTEyMjMzLCJjbGMiOiJVQUFBQTEiLCJmYW1pbHlfbmFtZSI6ItCi0LXRgdGC0L7QsiIsImVtYWlsIjoiZW1haWxAZW1haWwucnUifQ.WVr5xkQSEGqpPXN3aIo0zHZLDL0vvtxEEQ83BrgJo7l0BjjALeGDRYENF2bL8j3n1pXRnduiBQcYNV6teBhESI8V_8kd7Kh7LTePkJWadPSvD__KskC69b4XZ-zN-IQ73NmAcBDStnnhSXGKL6xhdRy-TGiAoKPsRWiDVntsDlpCQNHAt3tJk8q_SQS4S1k6qju9eJ2GFkgmd6z8rR2vaBykaOF0K61ltksw6YgXhuek3OlYkqIAivyKYl59uio8zMpJk-YrPlmawwmvWPF0vKhaLj8Mvn4mVMsVSfuVVKP2ksHG0MAlWpO3Sh9GoKO4d6TQplJ4vgIIeNx-44npqw
|
||
```
|
||
|
||
### 400 Bad Request
|
||
|
||
**Body:**
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :------------------------------------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки. Принимает значения: `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
---
|
||
|
||
## Описание клэймов UserInfo
|
||
|
||
| Name | Description | Scope |
|
||
| :-------------- | :-------------------------------------------------------------------- | :------------------ |
|
||
| **iss** | URL-адрес Alfa ID по протоколу https (https://id.alfabank.ru/oidc) | openid |
|
||
| **sub** | Уникальный идентификатор Alfa ID пользователя (до 255 символов ASCII) | openid |
|
||
| **aud** | Идентификатор сервиса-партнёра (аудитория токена) | openid |
|
||
| **name** | Полное имя конечного пользователя в отображаемой форме | profile, name |
|
||
| **given_name** | Имя конечного пользователя | profile, givenname |
|
||
| **family_name** | Фамилия конечного пользователя | profile, familyname |
|
||
| **middle_name** | Отчество конечного пользователя | profile, middlename |
|
||
| **email** | Предпочтительный адрес электронной почты | email |
|
||
| **gender** | Пол конечного пользователя | profile, gender |
|
||
| **birthdate** | День рождения в формате `YYYY-MM-DD` | profile, birthdate |
|
||
|
||
]]>
|
||
</obtaining_a_user_representative_profile_md>
|
||
</Authorization_Code_Flow>
|
||
<Authorization_Code_Flow_for_H2H_Integrations>
|
||
<geting_access_token_POST_md>
|
||
<.
|
||
|
||
---
|
||
|
||
### Параметры запроса
|
||
|
||
#### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------------- | :----- | :------------- | :---------------------------------- |
|
||
| **Accept** | string | required | `application/json` |
|
||
| **Content-Type** | string | required | `application/x-www-form-urlencoded` |
|
||
|
||
#### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :--------------------------------------------------- |
|
||
| **grant_type** | string | required | Тип гранта. Возможные значения: `authorization_code` |
|
||
| **code** | string | required | Код авторизации |
|
||
| **client_id** | string | required | Идентификатор партнёрского сервиса |
|
||
| **client_secret** | string | required | Секретный ключ партнёрского сервиса |
|
||
| **redirect_uri** | string | required | URI перенаправления |
|
||
| **code_verifier** | string | optional | Код верификатор |
|
||
|
||
---
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/oidc/token' \
|
||
--header 'Content-Type: application/x-www-form-urlencoded' \
|
||
--header 'Accept: application/json' \
|
||
--data-urlencode 'grant_type=authorization_code' \
|
||
--data-urlencode 'code=8962c304-89b1-11ec-a8a3-0242ac120002' \
|
||
--data-urlencode 'client_id=0cee0683-85ae-49f2-a63d-29f97aad1911' \
|
||
--data-urlencode 'client_secret=Qwerty1234567890Qwerty1234567890!' \
|
||
--data-urlencode 'redirect_uri=https://wwww.partner.ru/code' \
|
||
--data-urlencode 'code_verifier=string'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
#### Пример ответа 200 (OK)
|
||
|
||
```json
|
||
{
|
||
"access_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ...",
|
||
"refresh_token": "13b8230b-b6bf-4bb9-b977-3bc0a988a5fd",
|
||
"token_type": "Bearer",
|
||
"expires_in": 3600,
|
||
"id_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ..."
|
||
}
|
||
```
|
||
|
||
#### Описание полей BODY (200 OK)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :------ | :------------- | :--------------------------- |
|
||
| **access_token** | string | required | Токен доступа |
|
||
| **refresh_token** | string | required | Токен обновления |
|
||
| **token_type** | string | required | Тип токена |
|
||
| **expires_in** | integer | optional | Срок жизни токена в секундах |
|
||
| **id_token** | string | required | Идентификационный токен |
|
||
|
||
---
|
||
|
||
### Ошибки (400 Bad Request)
|
||
|
||
| Значение | Описание |
|
||
| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| **invalid_request** | Отсутствует обязательный параметр, неподдерживаемое значение параметра (кроме grant_type), повторение параметра, несколько учётных данных или неправильный формат запроса |
|
||
| **invalid_client** | Ошибка аутентификации клиента (неизвестный клиент, отключенная аутентификация клиента или неподдерживаемый метод аутентификации) |
|
||
| **invalid_grant** | Недействительное разрешение авторизации (недействительный код авторизации, токен обновления или несоответствие URI перенаправления) |
|
||
| **unsupported_grant_type** | Тип разрешения на авторизацию (grant_type) не поддерживается сервером авторизации |
|
||
| **internal_error** | Произошла непредвиденная ошибка |
|
||
|
||
---
|
||
|
||
### Описание клэймов access_token
|
||
|
||
| Значение | Описание |
|
||
| :----------------- | :-------------------------------------------------------------------- |
|
||
| **iss** | URL-адрес Alfa ID по протоколу https (https://id.alfabank.ru/oidc) |
|
||
| **sub** | Уникальный идентификатор Alfa ID пользователя (до 255 символов ASCII) |
|
||
| **aud** | Идентификатор сервиса-партнёра (аудитория токена) |
|
||
| **exp** | Время окончания срока действия токена (Unix timestamp UTC) |
|
||
| **iat** | Время выпуска токена (Unix timestamp UTC) |
|
||
| **scope_claims** | Массив клэймов области применения |
|
||
| **scope_services** | Массив операций области применения |
|
||
|
||
---
|
||
|
||
### Описание клэймов ID_TOKEN
|
||
|
||
| Значение | Описание | Scope |
|
||
| :------------ | :--------------------------------------------------- | :----- |
|
||
| **iss** | URL-адрес Alfa ID | openid |
|
||
| **sub** | Уникальный идентификатор пользователя | openid |
|
||
| **aud** | Идентификатор сервиса-партнёра | openid |
|
||
| **exp** | Время окончания срока действия | openid |
|
||
| **iat** | Время выпуска | openid |
|
||
| **auth_time** | Время аутентификации пользователя | openid |
|
||
| **nonce** | Значение для связи сессии и защиты от повторных атак | openid |
|
||
| **acr** | Способ аутентификации пользователя | openid |
|
||
| **azp** | Сторона, которой выдан токен (client_id) | openid |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [← Получение кода авторизации](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/get-auth-code/v1/get-auth-code)
|
||
- [Обновление токена доступа →](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/token-update/v1/token-update)
|
||
|
||
]]>
|
||
</geting_access_token_POST_md>
|
||
<How_to_use_ACF_for_H2H_md>
|
||
< токен или [отозвать](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/revoke-token/v1/revoke-token) его.
|
||
|
||
---
|
||
|
||
#### Навигация по разделу:
|
||
|
||
- ← [Обновление токена доступа](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/token-update/v1/token-update)
|
||
- → [Получение кода авторизации](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/get-auth-code/v1/get-auth-code)
|
||
|
||
---
|
||
|
||
### Структура меню (Alfa ID):
|
||
|
||
- [Что такое Alfa ID](/products/alfa-api/documentation/articles/alfa-id/articles/intro/intro)
|
||
- [Аутентификация](/products/alfa-api/documentation/articles/alfa-id/articles/authentication/authentication)
|
||
- [Кнопка входа по Alfa ID](/products/alfa-api/documentation/articles/alfa-id/articles/button/button)
|
||
- [Authorization Code Flow](/products/alfa-api/documentation/articles/alfa-id/articles/acf/acf)
|
||
- **Authorization Code Flow для H2H-интеграций**
|
||
- [Как использовать ACF для H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) (Текущая страница)
|
||
- [Получение кода авторизации](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/get-auth-code/v1/get-auth-code)
|
||
- [Получение токена доступа](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/get-access-token/v1/get-access-token) `POST`
|
||
- [Обновление токена доступа](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/token-update/v1/token-update) `POST`
|
||
- [Authorization Code Flow для холдингов](/products/alfa-api/documentation/articles/alfa-id/articles/acf-holding/acf-holding)
|
||
- [Client Credentials Flow](/products/alfa-api/documentation/articles/alfa-id/articles/ccf/ccf)
|
||
- [Расширение сценариев](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/expansion)
|
||
- [Экранирование](/products/alfa-api/documentation/articles/alfa-id/articles/screening/screening)
|
||
|
||
]]>
|
||
</How_to_use_ACF_for_H2H_md>
|
||
<obtaining_an_authorization_code_md>
|
||
<).
|
||
- `{scope}` — области применения токена доступа, указывают, какие права должен содержать токен доступа (можно указать несколько через пробел), должны быть озвучены при регистрации приложения на стороне Банка. Например, для получения выписки необходимо указать `openid transactions`.
|
||
- `{state}` — любое строковое значение для защиты от CSRF, например `string12345`.
|
||
|
||
**Пример итоговой ссылки:**
|
||
[https://id.alfabank.ru/oidc/authorize?response_type=code&client_id={client_id}&redirect_uri=http://localhost&scope=openid transactions&state=string12345](https://id.alfabank.ru/oidc/authorize?response_type=code&client_id=%7Bclient_id%7D&redirect_uri=http://localhost&scope=openid%20transactions&state=string12345)
|
||
|
||
> **Внимание**
|
||
> Не забывайте заменить `{client_id}` на реальное значение, полученное после регистрации приложения на стороне Банка.
|
||
|
||
---
|
||
|
||
### Шаг 2. Аутентификация
|
||
|
||
1. В окне браузера отобразится страница аутентификации Alfa ID для ввода логина/пароля пользователя:
|
||
|
||

|
||
|
||
2. После ввода логина/пароля пользователя отобразится страница второго фактора аутентификации для ввода otp-кода (sms, push):
|
||
|
||

|
||
|
||
3. Необходимо ввести полученный на телефон otp-код (sms, push), и в адресной строке браузера отобразится код авторизации (`code`):
|
||
|
||

|
||
|
||
---
|
||
|
||
### Шаг 3. Получение кода авторизации
|
||
|
||
Полученное в браузере **значение кода авторизации** (параметр `code` в URL) необходимо скопировать и **обменять на [токен доступа](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/get-access-token/v1/get-access-token)**.
|
||
|
||
> **Внимание**
|
||
> Код авторизации по умолчанию действует **2 минуты** и может быть использован только **1 раз**.
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [← Как использовать ACF для H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro)
|
||
- [Получение токена доступа →](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/get-access-token/v1/get-access-token)
|
||
|
||
]]>
|
||
</obtaining_an_authorization_code_md>
|
||
<refreshing_access_token_POST_md>
|
||
<![CDATA[
|
||
# Обновление токена доступа
|
||
|
||
**Тип интеграции:** H2H (Host-to-Host)
|
||
|
||
## Эндпоинты
|
||
|
||
| Среда | Метод и URL |
|
||
| :------------ | :-------------------------------------------- |
|
||
| **Песочница** | `POST https://sandbox.alfabank.ru/oidc/token` |
|
||
| **Пром** | `POST https://baas.alfabank.ru/oidc/token` |
|
||
|
||
## Описание
|
||
|
||
В результате запроса, помимо нового токена доступа, вы также получите новый токен обновления, а старый `refresh_token` станет недействительным.
|
||
|
||
> [!IMPORTANT]
|
||
> **Внимание**
|
||
>
|
||
> - Токен обновления действует **180 дней** и не может быть использован более **2 раз**.
|
||
> - Токен обновления может быть отозван, если:
|
||
> - пользователь сменил пароль;
|
||
> - пользователь превысил допустимое количество попыток ввода пароля;
|
||
> - аккаунт пользователя был заблокирован.
|
||
|
||
### Особенности кодирования
|
||
|
||
- При использовании `curl` с заголовком `"Content-Type": "application/x-www-form-urlencoded"` необходимо экранировать специальные символы параметра `client_secret`. Параметр `redirect_uri` экранировать не нужно.
|
||
- Если запрос отправляется через **Postman** с телом в формате `x-www-form-urlencoded` — экранировать символы вручную не требуется.
|
||
- Подробную информацию по экранированию можно посмотреть [здесь](/products/alfa-api/documentation/articles/alfa-id/articles/screening/screening).
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------------- | :----- | :------------- | :---------------------------------- |
|
||
| **Accept** | string | required | `application/json` |
|
||
| **Content-Type** | string | required | `application/x-www-form-urlencoded` |
|
||
|
||
### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :-------------------------------------------------------------------------------------------------------------------- |
|
||
| **grant_type** | string | required | Тип гранта. Возможные значения: `refresh_token` |
|
||
| **refresh_token** | string | required | Токен обновления. Обновить `access_token` можно только 2 раза. В дальнейшем нужно использовать новый `refresh_token`. |
|
||
| **client_id** | string | required | Идентификатор партнёрского сервиса. |
|
||
| **client_secret** | string | required | Секретный ключ партнёрского сервиса. |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/oidc/token' \
|
||
--header 'Content-Type: application/x-www-form-urlencoded' \
|
||
--header 'Accept: application/json' \
|
||
--data-urlencode 'grant_type=refresh_token' \
|
||
--data-urlencode 'refresh_token=13b8230b-b6bf-4bb9-b977-3bc0a988a5fd' \
|
||
--data-urlencode 'client_id=0cee0683-85ae-49f2-a63d-29f97aad1911' \
|
||
--data-urlencode 'client_secret=Qwerty1234567890Qwerty1234567890!'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
**BODY**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **access_token** | string | required | Новый токен доступа. |
|
||
| **refresh_token** | string | required | Новый токен обновления. |
|
||
| **token_type** | string | required | Тип токена (обычно `Bearer`). |
|
||
| **expires_in** | integer | optional | Срок жизни токена в секундах. |
|
||
|
||
**Пример ответа:**
|
||
|
||
```json
|
||
{
|
||
"access_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ...",
|
||
"refresh_token": "2cc8d34c-130a-4674-91fa-f9835fff6e88",
|
||
"token_type": "Bearer",
|
||
"expires_in": 3600
|
||
}
|
||
```
|
||
|
||
### Ошибка (400 Bad Request)
|
||
|
||
**BODY**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | required | Код ошибки. Например: `invalid_request` (неверные входные параметры). |
|
||
| **error_description** | string | optional | Текстовое описание ошибки. |
|
||
|
||
---
|
||
|
||
## Дополнительная информация
|
||
|
||
### Таблица возможных значений параметра error
|
||
|
||
| Значение | Описание |
|
||
| :----------------------- | :---------------------------------------------------------------------------------------------------------- |
|
||
| `invalid_request` | Отсутствует обязательный параметр, неподдерживаемое значение, повторение параметра или неправильный формат. |
|
||
| `invalid_client` | Ошибка аутентификации клиента (неизвестный ID или неверный secret). |
|
||
| `invalid_grant` | Недействительный токен обновления или несоответствие URI. |
|
||
| `unsupported_grant_type` | Тип `grant_type` не поддерживается сервером. |
|
||
| `internal_error` | Внутренняя ошибка сервера. |
|
||
|
||
### Описание клэймов access_token
|
||
|
||
| Значение | Описание |
|
||
| :----------------- | :----------------------------------------------- |
|
||
| **iss** | URL-адрес Alfa ID (https://id.alfabank.ru/oidc). |
|
||
| **sub** | Уникальный идентификатор пользователя. |
|
||
| **aud** | Идентификатор сервиса-партнёра (аудитория). |
|
||
| **exp** | Время окончания срока действия (Unix timestamp). |
|
||
| **iat** | Время выпуска токена. |
|
||
| **scope_claims** | Массив клэймов области применения. |
|
||
| **scope_services** | Массив операций области применения. |
|
||
|
||
]]>
|
||
</refreshing_access_token_POST_md>
|
||
</Authorization_Code_Flow_for_H2H_Integrations>
|
||
<Authorization_Code_Flow_for_Holding_Companies>
|
||
<access_token_refresh_md>
|
||
<.
|
||
|
||
### Токен обновления может быть отозван, если:
|
||
|
||
- пользователь сменил пароль;
|
||
- пользователь превысил допустимое количество попыток ввода пароля;
|
||
- аккаунт пользователя был заблокирован.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--------------- | :----- | :---- | :---------------------------------- |
|
||
| **Accept** | string | Да | `application/json` |
|
||
| **Content-Type** | string | Да | `application/x-www-form-urlencoded` |
|
||
|
||
### BODY (x-www-form-urlencoded)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :---------------- | :----- | :---- | :-------------------------------------------------- |
|
||
| **grant_type** | string | Да | Тип гранта. Значение: `refresh_token` |
|
||
| **refresh_token** | string | Да | Токен обновления. Можно использовать только 2 раза. |
|
||
| **client_id** | string | Да | Идентификатор партнёрского сервиса |
|
||
| **client_secret** | string | Да | Секретный ключ партнёрского сервиса |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/oidc/token' \
|
||
--header 'Content-Type: application/x-www-form-urlencoded' \
|
||
--header 'Accept: application/json' \
|
||
--data-urlencode 'grant_type=refresh_token' \
|
||
--data-urlencode 'refresh_token=13b8230b-b6bf-4bb9-b977-3bc0a988a5fd' \
|
||
--data-urlencode 'client_id=0cee0683-85ae-49f2-a63d-29f97aad1911' \
|
||
--data-urlencode 'client_secret=Qwerty1234567890Qwerty1234567890!'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------------- | :------ | :----------------------------------- |
|
||
| **access_token** | string | Новый токен доступа |
|
||
| **refresh_token** | string | Новый токен обновления |
|
||
| **token_type** | string | Тип токена (обычно `Bearer`) |
|
||
| **expires_in** | integer | Срок жизни токена доступа в секундах |
|
||
|
||
**Пример ответа 200:**
|
||
|
||
```json
|
||
{
|
||
"access_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0...",
|
||
"refresh_token": "2cc8d34c-130a-4674-91fa-f9835fff6e88",
|
||
"token_type": "Bearer",
|
||
"expires_in": 3600
|
||
}
|
||
```
|
||
|
||
### Ошибка (400 Bad Request)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :----- | :--------------------------------------- |
|
||
| **error** | string | Код ошибки (например, `invalid_request`) |
|
||
| **error_description** | string | Описание ошибки |
|
||
|
||
---
|
||
|
||
## Справочные таблицы
|
||
|
||
### Возможные значения параметра error
|
||
|
||
| Значение | Описание |
|
||
| :----------------------- | :-------------------------------------------------------------------------------------------------------------- |
|
||
| `invalid_request` | Отсутствует обязательный параметр, неподдерживаемое значение, повторение параметра или неверный формат запроса. |
|
||
| `invalid_client` | Ошибка аутентификации клиента (неизвестный клиент или неверный `client_secret`). |
|
||
| `invalid_grant` | Недействительный `refresh_token`. |
|
||
| `unsupported_grant_type` | Тип `grant_type` не поддерживается сервером. |
|
||
| `internal_error` | Произошла непредвиденная ошибка на стороне сервера. |
|
||
|
||
### Описание клэймов access_token
|
||
|
||
| Клэйм | Описание |
|
||
| :----------------- | :----------------------------------------------------- |
|
||
| **iss** | URL-адрес Alfa ID (https://id.alfabank.ru/oidc) |
|
||
| **sub** | Уникальный идентификатор Alfa ID пользователя |
|
||
| **aud** | Идентификатор сервиса-партнёра (аудитория токена) |
|
||
| **exp** | Время окончания срока действия токена (Unix Timestamp) |
|
||
| **iat** | Время выпуска токена (Unix Timestamp) |
|
||
| **scope_claims** | Массив клэймов области применения |
|
||
| **scope_services** | Массив операций области применения |
|
||
|
||
---
|
||
|
||
**Полезные ссылки:**
|
||
|
||
- [Новости в Telegram](https://t.me/AlfaAPI)
|
||
- [Общая спецификация Alfa API](/products/alfa-api/documentation/articles/specification/specification)
|
||
- [Инструкция по подключению](/products/alfa-api/documentation/articles/connection/connection)
|
||
|
||
]]>
|
||
</access_token_refresh_md>
|
||
<getting_authorization_token_md>
|
||
<
|
||
|
||
2. Выбирает необходимую организацию (при работе с несколькими юридическими лицами).
|
||

|
||
|
||
3. Далее проходит процедуру авторизации, **подписывая форму согласия**.
|
||

|
||
|
||
4. После прохождения авторизации в адресной строке браузера отобразится код авторизации (`code`). Дочерней компании необходимо скопировать этот код и передать головной компании.
|
||

|
||
|
||
---
|
||
|
||
## Шаг 3. Получение кода авторизации
|
||
|
||
Полученное от дочерней компании **значение кода авторизации** (code) необходимо скопировать и **обменять на [токен доступа](/products/alfa-api/documentation/articles/alfa-id/articles/acf-holding/articles/get-access-token/v1/get-access-token)**.
|
||
|
||
> **Внимание**
|
||
> Код авторизации по умолчанию действует **2 минуты** и может быть использован только **1 раз**.
|
||
|
||
---
|
||
|
||
**Далее:** [Получение токена доступа](/products/alfa-api/documentation/articles/alfa-id/articles/acf-holding/articles/get-access-token/v1/get-access-token)
|
||
**Назад:** [Как использовать ACF для холдингов](/products/alfa-api/documentation/articles/alfa-id/articles/acf-holding/articles/intro/intro)
|
||
|
||
]]>
|
||
</getting_authorization_token_md>
|
||
<how_to_use_acf_for_holdings_md>
|
||
<.
|
||
|
||
С помощью второго `client_id` вы сможете выполнять операции по своим дочерним компаниям.
|
||
|
||
### Видео-инструкция
|
||
[Скачать или посмотреть видео](/assets/developers-portal.docs.alfa-api/articles/alfa-id/articles/acf-holding/articles/intro/files/acf-holding.mp4)
|
||
|
||
### Шаги авторизации
|
||
1. **Формирование ссылки**
|
||
2. **Получение кода авторизации**
|
||
3. **Получение токена доступа**
|
||
|
||
### Согласия пользователей
|
||
Срок жизни согласия пользователя – **365 дней**, после его истечения необходимо заново пройти авторизацию. Для этого в ссылке на получение кода авторизации необходимо передать параметр `prompt = consent`.
|
||
|
||
Узнать дату окончания действия согласия можно с помощью метода [Данные по согласиям пользователей](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/client-consents/v1/client-consents).
|
||
|
||
### Дополнительно
|
||
При необходимости вы можете [обновить](/products/alfa-api/documentation/articles/alfa-id/articles/acf-holding/articles/token-update/v1/token-update) токен или [отозвать](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/revoke-token/v1/revoke-token) его.
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
← [Обновление токена доступа](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/token-update/v1/token-update) | [Получение кода авторизации](/products/alfa-api/documentation/articles/alfa-id/articles/acf-holding/articles/get-auth-code/v1/get-auth-code) →
|
||
|
||
]]>
|
||
</how_to_use_acf_for_holdings_md>
|
||
<obtaining_an_access_token_md>
|
||
<.
|
||
|
||
---
|
||
|
||
### Параметры запроса
|
||
|
||
#### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------------- | :----- | :------------- | :---------------------------------- |
|
||
| **Accept** | string | required | `application/json` |
|
||
| **Content-Type** | string | required | `application/x-www-form-urlencoded` |
|
||
|
||
#### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :--------------------------------------------------- |
|
||
| **grant_type** | string | required | Тип гранта. Возможные значения: `authorization_code` |
|
||
| **code** | string | required | Код авторизации |
|
||
| **client_id** | string | required | Идентификатор партнёрского сервиса |
|
||
| **client_secret** | string | required | Секретный ключ партнёрского сервиса |
|
||
| **redirect_uri** | string | required | URI перенаправления |
|
||
| **code_verifier** | string | optional | Код верификатор |
|
||
|
||
---
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/oidc/token' \
|
||
--header 'Content-Type: application/x-www-form-urlencoded' \
|
||
--header 'Accept: application/json' \
|
||
--data-urlencode 'grant_type=authorization_code' \
|
||
--data-urlencode 'code=8962c304-89b1-11ec-a8a3-0242ac120002' \
|
||
--data-urlencode 'client_id=0cee0683-85ae-49f2-a63d-29f97aad1911' \
|
||
--data-urlencode 'client_secret=Qwerty1234567890Qwerty1234567890!' \
|
||
--data-urlencode 'redirect_uri=https://wwww.partner.ru/code' \
|
||
--data-urlencode 'code_verifier=string'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
#### Пример ответа 200 (OK)
|
||
|
||
```json
|
||
{
|
||
"access_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ...",
|
||
"refresh_token": "13b8230b-b6bf-4bb9-b977-3bc0a988a5fd",
|
||
"token_type": "Bearer",
|
||
"expires_in": 3600,
|
||
"id_token": "eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ..."
|
||
}
|
||
```
|
||
|
||
#### Описание полей ответа (BODY)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :------ | :------------- | :--------------------------- |
|
||
| **access_token** | string | required | Токен доступа |
|
||
| **refresh_token** | string | required | Токен обновления |
|
||
| **token_type** | string | required | Тип токена (Bearer) |
|
||
| **expires_in** | integer | optional | Срок жизни токена в секундах |
|
||
| **id_token** | string | required | Идентификационный токен |
|
||
|
||
---
|
||
|
||
### Таблица возможных значений параметра error (400 Bad Request)
|
||
|
||
| Значение | Описание |
|
||
| :----------------------- | :---------------------------------------------------------------------------------------------------------- |
|
||
| `invalid_request` | Отсутствует обязательный параметр, неподдерживаемое значение, повторение параметра или неправильный формат. |
|
||
| `invalid_client` | Ошибка аутентификации клиента (неизвестный клиент или неверный метод). |
|
||
| `invalid_grant` | Недействительный код авторизации, токен обновления или несоответствие URI. |
|
||
| `unsupported_grant_type` | Тип `grant_type` не поддерживается сервером. |
|
||
| `internal_error` | Произошла непредвиденная ошибка. |
|
||
|
||
---
|
||
|
||
### Описание клэймов access_token
|
||
|
||
| Значение | Описание |
|
||
| :----------------- | :------------------------------------------------ |
|
||
| **iss** | URL-адрес Alfa ID (https://id.alfabank.ru/oidc) |
|
||
| **sub** | Уникальный идентификатор пользователя Alfa ID |
|
||
| **aud** | Идентификатор сервиса-партнёра (аудитория токена) |
|
||
| **exp** | Время окончания срока действия (Unix timestamp) |
|
||
| **iat** | Время выпуска токена |
|
||
| **scope_claims** | Массив клэймов области применения |
|
||
| **scope_services** | Массив операций области применения |
|
||
|
||
---
|
||
|
||
### Описание клэймов ID_TOKEN
|
||
|
||
| Значение | Описание | Scope |
|
||
| :------------ | :-------------------------------------------------- | :----- |
|
||
| **iss** | URL-адрес Alfa ID | openid |
|
||
| **sub** | Уникальный идентификатор пользователя | openid |
|
||
| **aud** | Идентификатор сервиса-партнёра | openid |
|
||
| **exp** | Время окончания срока действия | openid |
|
||
| **iat** | Время выпуска JWT | openid |
|
||
| **auth_time** | Время аутентификации пользователя | openid |
|
||
| **nonce** | Значение для связи сессии (если передавалось ранее) | openid |
|
||
| **acr** | Способ аутентификации пользователя | openid |
|
||
| **azp** | Сторона, которой выдан токен (client_id) | openid |
|
||
|
||
---
|
||
|
||
_Документация Alfa API_
|
||
|
||
]]>
|
||
</obtaining_an_access_token_md>
|
||
</Authorization_Code_Flow_for_Holding_Companies>
|
||
<client_credentials_flow>
|
||
<how_to_use_ccf_md>
|
||
<
|
||
- [Кредиты](/products/alfa-api/documentation/articles/scoring/scoring)
|
||
- [Оплата покупок через СБП](/products/alfa-api/documentation/articles/sbp/articles/sbp-c2b/articles/intro/intro)
|
||
- [Операции СБП для юрлиц](/products/alfa-api/documentation/articles/sbp/articles/sbp-b2b/articles/intro/intro)
|
||
- [Дебетовая анкета](/products/alfa-api/documentation/articles/debit-cards/articles/intro/intro)
|
||
- [Цифровые финансовые активы (ЦФА)](/products/alfa-api/documentation/articles/dfa/dfa)
|
||
|
||
> **Важно:** Client Credentials Flow не позволяет использовать методы, которые содержат персональные данные пользователя или банковскую тайну. В соответствии с регуляторными требованиями, Банк обязан проверить полномочия представителя на получение такой информации.
|
||
|
||
---
|
||
|
||
## Шаги авторизации
|
||
|
||
1. **Получение токена доступа** (см. детали ниже).
|
||
|
||
### Дополнительно
|
||
|
||
При необходимости вы можете [отозвать токен](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/revoke-token/v1/revoke-token).
|
||
|
||
---
|
||
|
||
## Техническая спецификация API
|
||
|
||
### Получение токена доступа
|
||
|
||
**Endpoint:** `POST https://baas.alfabank.ru/oidc/token`
|
||
|
||
#### Заголовки (Headers)
|
||
|
||
| Название | Обязательно | Значение |
|
||
| :------------- | :---------- | :---------------------------------- |
|
||
| `Content-Type` | Да | `application/x-www-form-urlencoded` |
|
||
| `Accept` | Да | `application/json` |
|
||
|
||
#### Параметры тела запроса (Request Body)
|
||
|
||
| Параметр | Тип | Описание |
|
||
| :-------------- | :----- | :---------------------------------------------------------------------------------------------------------- |
|
||
| `grant_type` | string | Тип гранта. Для CCF обычно используется `client_credentials` (в данном примере указан `authorization_code`) |
|
||
| `client_id` | uuid | Идентификатор партнёрского сервиса |
|
||
| `client_secret` | string | Секретный ключ партнёрского сервиса |
|
||
| `code` | uuid | Код авторизации |
|
||
| `redirect_uri` | string | URI перенаправления |
|
||
|
||
---
|
||
|
||
## Примеры кода
|
||
|
||
### cURL
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/oidc/token' \
|
||
--header 'Content-Type: application/x-www-form-urlencoded' \
|
||
--header 'Accept: application/json' \
|
||
--data-urlencode 'grant_type=authorization_code' \
|
||
--data-urlencode 'code=8962c304-89b1-11ec-a8a3-0242ac120002' \
|
||
--data-urlencode 'client_id=0cee0683-85ae-49f2-a63d-29f97aad1911' \
|
||
--data-urlencode 'client_secret=Qwerty1234567890Qwerty1234567890!' \
|
||
--data-urlencode 'redirect_uri=https://wwww.partner.ru/code'
|
||
```
|
||
|
||
### Python
|
||
|
||
```python
|
||
import requests
|
||
|
||
url = "https://baas.alfabank.ru/oidc/token"
|
||
payload = 'grant_type=authorization_code&code=8962c304-89b1-11ec-a8a3-0242ac120002&client_id=0cee0683-85ae-49f2-a63d-29f97aad1911&client_secret=Qwerty1234567890Qwerty1234567890!&redirect_uri=https%3A%2F%2Fwwww.partner.ru%2Fcode'
|
||
headers = {
|
||
'Content-Type': 'application/x-www-form-urlencoded',
|
||
'Accept': 'application/json'
|
||
}
|
||
|
||
response = requests.request("POST", url, headers=headers, data=payload)
|
||
print(response.text)
|
||
```
|
||
|
||
---
|
||
|
||
## Возможные ошибки (параметр `error`)
|
||
|
||
| Значение | Описание |
|
||
| :----------------------- | :------------------------------------------------------------------ |
|
||
| `invalid_request` | Отсутствует обязательный параметр или неверный формат запроса. |
|
||
| `invalid_client` | Ошибка аутентификации клиента (неизвестный ID или неверный secret). |
|
||
| `invalid_grant` | Недействительный код авторизации или несоответствие redirect_uri. |
|
||
| `unsupported_grant_type` | Тип grant_type не поддерживается сервером. |
|
||
| `internal_error` | Внутренняя ошибка сервера. |
|
||
|
||
---
|
||
|
||
## Структура ответа (Success 200 OK)
|
||
|
||
При успешном запросе возвращается JSON со следующими полями:
|
||
|
||
- `access_token`: Токен доступа (JWT). Действует 1 час.
|
||
- `refresh_token`: Токен для обновления access_token.
|
||
- `id_token`: Идентификационный токен.
|
||
- `expires_in`: Срок жизни токена в секундах (3600).
|
||
- `token_type`: Тип токена (Bearer).
|
||
|
||
---
|
||
|
||
_Документация Alfa API. [Портал разработчика](https://developers.alfabank.ru)_
|
||
|
||
]]>
|
||
</how_to_use_ccf_md>
|
||
<obteining_access_token_POST_md>
|
||
<![CDATA[
|
||
|
||
]]>
|
||
</obteining_access_token_POST_md>
|
||
</client_credentials_flow>
|
||
<expansion>
|
||
<client_consents_GET_md>
|
||
< или с типом гранта [Authorization Code Flow](/products/alfa-api/documentation/articles/alfa-id/articles/acf/acf).
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :-------------------- |
|
||
| **Authorization** | string | required | Bearer {access_token} |
|
||
| **Accept** | string | required | application/json |
|
||
|
||
### QUERY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------------------- | :------ | :------------- | :------------------------------------------------------------------------------------ |
|
||
| **clientId** | string | optional | Идентификатор партнёрского сервиса |
|
||
| **sub** | string | optional | Идентификатор субъекта (пользователя) |
|
||
| **organizationIdHash** | string | optional | Хэш идентификатора ЮЛ (организации) |
|
||
| **isActive** | boolean | optional | Признак активного согласия |
|
||
| **limit** | integer | optional | Количество объектов на одной странице. Значение по умолчанию: 1000 |
|
||
| **offset** | integer | optional | Количество объектов в списке, которые необходимо пропустить. Значение по умолчанию: 0 |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/oidc/client-consents?clientId={clientId}&sub={sub}&organizationIdHash={organizationIdHash}&isActive={isActive}&limit={limit}&offset={offset}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 OK
|
||
|
||
**HEADERS**
|
||
|
||
- **Content-Type**: `application/json` (optional)
|
||
|
||
**BODY**
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **pagination** | object | Данные пагинации |
|
||
| ∟ **limit** | number | Количество записей на одной странице |
|
||
| ∟ **offset** | number | Количество записей в списке, которые были пропущены |
|
||
| ∟ **totalCount** | number | Общее количество записей |
|
||
| **items** | array of objects | Массив объектов результата |
|
||
| ∟ **createDateTime** | string | Дата и время создания (required) |
|
||
| ∟ **sub** | string | Идентификатор субъекта (пользователя) (required) |
|
||
| ∟ **organizationIdHash** | string | Хэш идентификатора ЮЛ (организации) (optional) |
|
||
| ∟ **clientId** | string | Идентификатор партнёрского сервиса (required) |
|
||
| ∟ **isActive** | boolean | Признак активного согласия (required) |
|
||
| ∟ **expireDate** | string | Дата окончания действия (required) |
|
||
|
||
#### Пример ответа 200
|
||
|
||
```json
|
||
{
|
||
"pagination": {
|
||
"limit": 1,
|
||
"offset": 0,
|
||
"totalCount": 1000
|
||
},
|
||
"items": [
|
||
{
|
||
"createDateTime": "2022-10-10T12:15:10",
|
||
"sub": "3228e68e-cc34-4b82-b43d-49112b5d9d3e",
|
||
"organizationIdHash": "665f4c5837ea35d1b081f4feb05de61522b6854c2268583f3f5865a0981f9268",
|
||
"clientId": "0cee0683-85ae-49f2-a63d-29f97aad1911",
|
||
"isActive": true,
|
||
"expireDate": "2023-04-10"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Ошибки
|
||
|
||
| Код | Описание | Возможные значения `error` |
|
||
| :------ | :-------------------- | :------------------------------------------------------------ |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
|
||
---
|
||
|
||
## Навигация
|
||
|
||
- ← [Отзыв токена доступа](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/revoke-token/v1/revoke-token)
|
||
- → [Экранирование](/products/alfa-api/documentation/articles/alfa-id/articles/screening/screening)
|
||
|
||
---
|
||
|
||
_Документация Alfa API. [Официальный портал](https://developers.alfabank.ru/)_
|
||
|
||
]]>
|
||
</client_consents_GET_md>
|
||
<revoke_token_POST_md>
|
||
<
|
||
- [Данные по согласиям пользователей →](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/client-consents/v1/client-consents)
|
||
|
||
---
|
||
|
||
_Документация Alfa ID / Расширение сценариев_
|
||
|
||
]]>
|
||
</revoke_token_POST_md>
|
||
<signature_checking_md>
|
||
<![CDATA[
|
||
# Проверка подписи
|
||
|
||
Проверить подпись можно для трех сущностей:
|
||
|
||
- `id_token`;
|
||
- `access_token`;
|
||
- `userinfo`.
|
||
|
||
Партнёр API получает ответ в формате сформированного токена **JWS**, который состоит из:
|
||
|
||
- **Заголовка (Header)**, содержащего алгоритм подписи, идентификатор ключа и тип токена;
|
||
- **JSON-объекта (Payload)**, в котором перечислены клэймы полезной нагрузки;
|
||
- **Электронной подписи (Signature)**, содержащей подпись данных секретным ключом, парным открытому ключу, выпущенному для Alfa ID.
|
||
|
||
### Декодирование компактной сериализации JWS
|
||
|
||
JWS формируется из трех составляющих и представляет структуру вида:
|
||
`Base64URL(Header).Base64URL(Payload).Base64URL(Signature)`
|
||
|
||
---
|
||
|
||
#### Пример access_token
|
||
|
||
**Закодированный токен:**
|
||
`eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIzMjI4ZTY4ZS1jYzM0LTRiODItYjQzZC00OTExMmI1ZDlkM2UiLCJhdWQiOiIwY2VlMDY4My04NWFlLTQ5ZjItYTYzZC0yOWY5N2FhZDE5MTEiLCJpc3MiOiJodHRwczpcL1wvaWQuYWxmYWJhbmsucnUiLCJleHAiOjE2MzE2NjY2NjMsInNjb3BlX3NlcnZpY2VzIjpbInBheW1lbnQiLCJzdGF0ZW1lbnQiXSwiaWF0IjoxNjMxNjYzMDYzLCJzY29wZV9jbGFpbXMiOlsibmFtZSIsImdpdmVuX25hbWUiLCJmYW1pbHlfbmFtZSIsIm1pZGRsZV9uYW1lIiwiZW1haWwiLCJwaG9uZV9udW1iZXIiXX0.WVr5xkQSEGqpPXN3aIo0zHZLDL0vvtxEEQ83BrgJo7l0BjjALeGDRYENF2bL8j3n1pXRnduiBQcYNV6teBhESI8V_8kd7Kh7LTePkJWadPSvD__KskC69b4XZ-zN-IQ73NmAcBDStnnhSXGKL6xhdRy-TGiAoKPsRWiDVntsDlpCQNHAt3tJk8q_SQS4S1k6qju9eJ2GFkgmd6z8rR2vaBykaOF0K61ltksw6YgXhuek3OlYkqIAivyKYl59uio8zMpJk-YrPlmawwmvWPF0vKhaLj8Mvn4mVMsVSfuVVKP2ksHG0MAlWpO3Sh9GoKO4d6TQplJ4vgIIeNx-44npqw`
|
||
|
||
**Раскодированные данные:**
|
||
|
||
**Header**
|
||
|
||
```json
|
||
{
|
||
"kid": "alfa-test-jwt",
|
||
"typ": "JWT",
|
||
"alg": "RS256"
|
||
}
|
||
```
|
||
|
||
**Payload**
|
||
|
||
```json
|
||
{
|
||
"sub": "3228e68e-cc34-4b82-b43d-49112b5d9d3e",
|
||
"aud": "0cee0683-85ae-49f2-a63d-29f97aad1911",
|
||
"iss": "https://id.alfabank.ru",
|
||
"exp": 1631666663,
|
||
"scope_services": ["payment", "statement"],
|
||
"iat": 1631663063,
|
||
"scope_claims": [
|
||
"name",
|
||
"given_name",
|
||
"family_name",
|
||
"middle_name",
|
||
"email",
|
||
"phone_number"
|
||
]
|
||
}
|
||
```
|
||
|
||
**Signature**
|
||
|
||
```javascript
|
||
RSASHA256(
|
||
base64UrlEncode(header) + "." + base64UrlEncode(payload),
|
||
your - 256 - bit - secret,
|
||
); // secret base64 encoded
|
||
```
|
||
|
||
---
|
||
|
||
#### Пример JWS идентификационного токена id_token
|
||
|
||
Каждая часть, разделённая точкой, должна декодироваться отдельно с использованием алгоритма Base64URL Encoding.
|
||
|
||
**Закодированный токен:**
|
||
`eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ .eyJzdWIiOiIzMjI4ZTY4ZS1jYzM0LTRiODItYjQzZC00OTExMmI1ZDlkM2UiLCJhdWQiOiIwY2VlMDY4My04NWFlLTQ5ZjItYTYzZC0yOWY5N2FhZDE5MTEiLCJhY3IiOiJMb0EzIiwiYXpwIjoiMGNlZTA2ODMtODVhZS00OWYyLWE2M2QtMjlmOTdhYWQxOTExIiwiYXV0aF90aW1lIjoxNjMxNjYzMDUzLCJpc3MiOiJodHRwczpcL1wvaWQuYWxmYWJhbmsucnUiLCJleHAiOjE2MzE2NjY2NjMsImlhdCI6MTYzMTY2MzA2Mywibm9uY2UiOiJuLTBTNl9XekEyTWoifQ .xBE6LEUxOKleHCZVQacldJfKr5KtyyvJKCCmInqapmRJ_aRF-cEoVfpJd_kxlNmJYT7AcjMMppovNkmhB49VL5DK8FhF0fvRgLskKR9Eohy4eiC8ued03Z1LyLz1H7EcKSkusaCIajzIvxxZfVtSHI4jmgLg6ItXPdZgIDUWINgESkl6I7IP5CbfONHweNnbkWEOEzxDgGGnxxtPxrWVoPVP-ijUeUSH_iESHfrhY_ePRMYi2If62IsKX_0GT5BHRYOhXVDZ9fyn5fRCvg8_QoCykDVIOZMtWQ3w4TadqS0dfMlsLBxkVbVftzH2fWRLTCX3SJ5AXiytHkpow8V45w`
|
||
|
||
**Раскодированные данные:**
|
||
|
||
**Header**
|
||
|
||
```json
|
||
{
|
||
"kid": "alfa-test-jwt",
|
||
"typ": "JWT",
|
||
"alg": "RS256"
|
||
}
|
||
```
|
||
|
||
**Payload**
|
||
|
||
```json
|
||
{
|
||
"sub": "3228e68e-cc34-4b82-b43d-49112b5d9d3e",
|
||
"aud": "0cee0683-85ae-49f2-a63d-29f97aad1911",
|
||
"acr": "LoA3",
|
||
"azp": "0cee0683-85ae-49f2-a63d-29f97aad1911",
|
||
"auth_time": 1631663053,
|
||
"iss": "https://id.alfabank.ru",
|
||
"exp": 1631666663,
|
||
"iat": 1631663063,
|
||
"nonce": "n-0S6_WzA2Mj"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
#### Пример userinfo
|
||
|
||
**Закодированный токен:**
|
||
`eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJjdXMiOiJVQUFBQUEiLCJzdWIiOiIzMjI4ZTY4ZS1jYzM0LTRiODItYjQzZC00OTExMmI1ZDlkM2UiLCJiaXJ0aGRhdGUiOiIyMDAwLTAyLTIwIiwicm9sZSI6IkFDQ09VTlRBTlQsIE1BTkFHRVIiLCJnZW5kZXIiOiJNQUxFIiwiaWRlbnRpdHlfZG9jdW1lbnRfbmFtZSI6ItCf0LDRgdC_0L7RgNGCINCz0YDQsNC20LTQsNC90LjQvdCwINCg0KQiLCJpZGVudGl0eV9kb2N1bWVudF9udW1iZXIiOjIyMjIyMiwiaXNzIjoiaHR0cHM6XC9cL2JhYXMuYWxmYWJhbmsucnUiLCJpbm4iOjc0MTUxMTExMjIyMiwiZWlvIjp0cnVlLCJnaXZlbl9uYW1lIjoi0KLQtdGB0YIiLCJtaWRkbGVfbmFtZSI6ItCi0LXRgdGC0L7QstC40YciLCJhY3VzIjoiWEFBQUFBIiwiaWRlbnRpdHlfZG9jdW1lbnRfc2VyaWVzIjoxMTExLCJhdWQiOiIwY2VlMDY4My04NWFlLTQ5ZjItYTYzZC0yOWY5N2FhZDE5MTEiLCJhY2xjIjoiWEFBQUExIiwidXBkYXRlZF9hdCI6IjIwMjItMDEtMjAiLCJuYW1lIjoi0KLQtdGB0YLQvtCyINCi0LXRgdGCINCi0LXRgdGC0L7QstC40YciLCJwaG9uZV9udW1iZXIiOjc5MTkxMTEyMjMzLCJjbGMiOiJVQUFBQTEiLCJmYW1pbHlfbmFtZSI6ItCi0LXRgdGC0L7QsiIsImVtYWlsIjoiZW1haWxAZW1haWwucnUifQ.WVr5xkQSEGqpPXN3aIo0zHZLDL0vvtxEEQ83BrgJo7l0BjjALeGDRYENF2bL8j3n1pXRnduiBQcYNV6teBhESI8V_8kd7Kh7LTePkJWadPSvD__KskC69b4XZ-zN-IQ73NmAcBDStnnhSXGKL6xhdRy-TGiAoKPsRWiDVntsDlpCQNHAt3tJk8q_SQS4S1k6qju9eJ2GFkgmd6z8rR2vaBykaOF0K61ltksw6YgXhuek3OlYkqIAivyKYl59uio8zMpJk-YrPlmawwmvWPF0vKhaLj8Mvn4mVMsVSfuVVKP2ksHG0MAlWpO3Sh9GoKO4d6TQplJ4vgIIeNx-44npqw`
|
||
|
||
**Payload (раскодированный)**
|
||
|
||
```json
|
||
{
|
||
"cus": "UAAAAA",
|
||
"sub": "3228e68e-cc34-4b82-b43d-49112b5d9d3e",
|
||
"birthdate": "2000-02-20",
|
||
"role": "ACCOUNTANT, MANAGER",
|
||
"gender": "MALE",
|
||
"identity_document_name": "Паспорт гражданина РФ",
|
||
"identity_document_number": 222222,
|
||
"iss": "https://baas.alfabank.ru",
|
||
"inn": 741511112222,
|
||
"eio": true,
|
||
"given_name": "Тест",
|
||
"middle_name": "Тестович",
|
||
"acus": "XAAAAA",
|
||
"identity_document_series": 1111,
|
||
"aud": "0cee0683-85ae-49f2-a63d-29f97aad1911",
|
||
"aclc": "XAAAA1",
|
||
"updated_at": "2022-01-20",
|
||
"name": "Тестов Тест Тестович",
|
||
"phone_number": 79191112233,
|
||
"clc": "UAAAA1",
|
||
"family_name": "Тестов",
|
||
"email": "email@email.ru"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Алгоритм проверки подписи
|
||
|
||
1. Вычислите хэш-функцию **SHA256** от данных `Base64URL(Header).Base64URL(Payload)`.
|
||
2. Дешифруйте данные `Base64URL(Signature)`, используя алгоритм **RS256** и открытый ключ с идентификатором, переданным в Заголовке (Header) в клэйме `kid` (в приведенном выше примере это `alfa-test-jwt`).
|
||
3. Сравните вычисленный хэш из 1 шага и дешифрованные данные из 2 шага. Если значения равны, значит, подпись верна.
|
||
|
||
**Сертификат для проверки электронной подписи:** [certificate-prod](/assets/developers-portal.docs.alfa-api/articles/alfa-id/articles/expansion/articles/signature-checking/files/cert.cer)
|
||
|
||
---
|
||
|
||
_Навигация:_
|
||
[← Получение токена доступа](/products/alfa-api/documentation/articles/alfa-id/articles/ccf/articles/get-access-token/v1/get-access-token) | [Отзыв токена доступа →](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/revoke-token/v1/revoke-token)
|
||
|
||
]]>
|
||
</signature_checking_md>
|
||
</expansion>
|
||
<screening_eg_character_shielding_md>
|
||
< / Alfa ID / Экранирование
|
||
|
||
---
|
||
|
||
**Экранирование специальных символов** — это процесс преобразования специальных символов (например, кавычек, пробелов, знаков препинания) в их соответствующие эквиваленты для передачи данных через различные протоколы и форматы.
|
||
|
||
Процентное кодирование или кодирование URI-адресов представляет собой метод кодирования произвольных данных с использованием ограниченных символов US-ASCII, разрешённых в URI.
|
||
|
||
Синтаксис URI содержит зарезервированные символы (двух типов) и незарезервированные символы.
|
||
|
||
### Зарезервированные символы
|
||
|
||
* **gen-delims**: `":"`, `"/"`, `"?"`, `"# "`, `"["`, `"]"`, `"@"` — символы, разделяющие URI на крупные компоненты.
|
||
* **sub-delims**: `"!"`, `"$ "`, `"&"`, `"' "`, `"("`, `")"`, `"* "`, `"+"`, `","`, `";"`, `"="` — символы, разделяющие крупный компонент на более мелкие составляющие.
|
||
|
||
### Незарезервированные символы
|
||
|
||
В общем случае незарезервированные символы — это `ALPHA`, `DIGIT`, `"-"`, `"."`, `"_"`, `"~"`, где `ALPHA` — это буквы, а `DIGIT` — десятичные цифры.
|
||
|
||
Если символ из набора зарезервированных символов используется в другом контексте, то он должен быть закодирован в процентах. Процентное кодирование зарезервированного символа представляет собой замену/преобразование символа в соответствующее ему значение.
|
||
|
||
Например, зарезервированный символ `"/"` может быть заменен следующими символами: `%2F`.
|
||
|
||
---
|
||
|
||
### Примеры запросов
|
||
|
||
#### Пример запроса без экранирования
|
||
```bash
|
||
https://id.alfabank.ru/oidc/authorize?response_type=code&client_id=0cee0683-85ae-49f2-a63d-29f97aad1911&redirect_uri=https://wwww.partner.ru/code&scope=openid&state=abcdef
|
||
```
|
||
|
||
#### Пример запроса с экранированием
|
||
```bash
|
||
https://id.alfabank.ru/oidc/authorize?response_type=code&client_id=0cee0683-85ae-49f2-a63d-29f97aad1911&redirect_uri=https%3A%2F%2Fwwww.partner.ru%2Fcode&scope=openid&state=abcdef
|
||
```
|
||
|
||
---
|
||
|
||
### Таблица кодирования символов
|
||
|
||
| Символ | ANSI (Percent-encoding) |
|
||
| :--- | :--- |
|
||
| `~` | `%7E` |
|
||
| `` ` `` | `%60` |
|
||
| `'` | `%27` |
|
||
| `"` | `%22` |
|
||
| `@` | `%40` |
|
||
| `?` | `%3F` |
|
||
| `!` | `%21` |
|
||
| `#` | `%23` |
|
||
| `№` | `%B9` |
|
||
| `$` | `%24` |
|
||
|
||
---
|
||
|
||
### Навигация
|
||
* ← [Данные по согласиям пользователей](/products/alfa-api/documentation/articles/alfa-id/articles/expansion/articles/client-consents/v1/client-consents)
|
||
* [API Key](/products/alfa-api/documentation/articles/api-key/api-key) →
|
||
|
||
---
|
||
*Документация Alfa API*
|
||
|
||
]]>
|
||
</screening_eg_character_shielding_md>
|
||
<what_is_alfa_id_md>
|
||
<
|
||

|
||
В разделе **Моя компания** выберите карточку **Пользователи и роли**.
|
||

|
||
|
||
### Шаг 2. Создайте новую роль
|
||
|
||
Нажмите **Создать роль**.
|
||

|
||
Укажите название роли (например, «Разработчик API»).
|
||

|
||
|
||
Далее настройте права. Рекомендуется создавать роль на основании прав руководителя, сбросив лишнее:
|
||
|
||
1. Нажмите **Снять все**, чтобы сбросить права руководителя.
|
||

|
||
2. В разделе **Обслуживание бизнеса** выберите **Alfa API**, указав необходимые права.
|
||

|
||
3. Нажмите **Создать роль** для сохранения.
|
||
|
||
### Шаг 3. Назначьте роль разработчику
|
||
|
||
В разделе **Пользователи** нажмите на три точки справа от нужного сотрудника и выберите **Сменить роль**.
|
||

|
||
|
||
Выберите созданную роль и нажмите **Сменить**.
|
||

|
||
|
||
Подтвердите смену роли кодом из СМС.
|
||

|
||
|
||
После успешной смены в записи пользователя отобразится статус **Подключён**. Теперь пользователь может работать с Порталом разработчика.
|
||

|
||
|
||
---
|
||
|
||
## Требования к полномочиям для авторизации
|
||
|
||
Для корректной работы H2H-интеграций ключ доступа (`access_token` / `API Key`) должен получать пользователь, обладающий правами на конкретные сервисы:
|
||
|
||
- **При использовании ACF H2H:** Авторизацию в Alfa ID должен проходить пользователь, у которого в Альфа-Бизнес настроены полномочия на использование выбранных `scopes`.
|
||
- **При использовании API Key:** Выпускать ключ должен пользователь, имеющий права на те продукты, которые выбраны при выпуске ключа.
|
||
|
||
**Пример:** Если у разработчика есть права на редактирование интеграций, но нет прав на «Просмотр выписки», то выпущенный им API Key для сервиса `transactions` работать не будет.
|
||
|
||
]]>
|
||
</what_is_alfa_id_md>
|
||
</Alfa_ID>
|
||
<API_Key>
|
||
<api_key_md>
|
||
< (для методов, где `scope=transactions`)
|
||
* [Профиль организации](/products/alfa-api/documentation/articles/customer-info/customer-info)
|
||
* [Электронная подпись](/products/alfa-api/documentation/articles/signature/signature)
|
||
|
||
Для настройки авторизации по `API Key` необходимо выпустить его на Портале разработчика и добавить его в свои рабочие инструменты. Как это сделать, описано [в статье Управление API Key](/products/alfa-api/documentation/articles/selfservice/articles/api-key/api-key).
|
||
|
||
### Управление ключами доступа
|
||
Управлять ключами доступа можно также на Портале разработчика. Вы можете:
|
||
|
||
* **Перевыпустить ключ** в случае потери данных, компрометации ключа или необходимости замены данных для него.
|
||
* **Отозвать ключ**, если больше не хотите использовать упрощённый способ авторизации.
|
||
|
||
[**Как управлять API Key**](/products/alfa-api/documentation/articles/selfservice/articles/api-key/api-key)
|
||
|
||
---
|
||
|
||
## Навигация по разделу
|
||
* ← [Экранирование](/products/alfa-api/documentation/articles/alfa-id/articles/screening/screening)
|
||
* → [Начало работы в песочнице](/products/alfa-api/documentation/articles/sandbox/articles/intro/intro)
|
||
|
||
---
|
||
|
||
### Общая информация (Alfa API)
|
||
1. [Общая информация](/products/alfa-api/documentation/articles/specification/specification)
|
||
2. [Подключение к Alfa API](/products/alfa-api/documentation/articles/connection/connection)
|
||
3. [Портал разработчика](/products/alfa-api/documentation/articles/selfservice/selfservice)
|
||
4. [Alfa ID](/products/alfa-api/documentation/articles/alfa-id/alfa-id)
|
||
5. **API Key** (Текущая страница)
|
||
6. [Песочница](/products/alfa-api/documentation/articles/sandbox/sandbox)
|
||
7. [Java SDK](/products/alfa-api/documentation/articles/sdk/sdk)
|
||
8. [Обмен файлами](/products/alfa-api/documentation/articles/secure-file-transfer/secure-file-transfer)
|
||
9. [Транспортная подпись и шифрование](/products/alfa-api/documentation/articles/signature-encryption/signature-encryption)
|
||
10. [Вебхуки](/products/alfa-api/documentation/articles/webhooks/webhooks)
|
||
|
||
### Продукты и сервисы
|
||
* [Выписки по счетам юрлиц](/products/alfa-api/documentation/articles/transactions/transactions)
|
||
* [Информация по счетам физлиц](/products/alfa-api/documentation/articles/accounts/accounts)
|
||
* [Эскроу-счета 214-ФЗ](/products/alfa-api/documentation/articles/escrow/escrow)
|
||
* [Профиль организации](/products/alfa-api/documentation/articles/customer-info/customer-info)
|
||
* [Платёжные поручения](/products/alfa-api/documentation/articles/payments/payments)
|
||
* [Самозанятые](/products/alfa-api/documentation/articles/selfemployed/selfemployed)
|
||
* [Система быстрых платежей (СБП)](/products/alfa-api/documentation/articles/sbp/sbp)
|
||
* [Кредиты](/products/alfa-api/documentation/articles/scoring/scoring)
|
||
* [Электронная подпись](/products/alfa-api/documentation/articles/signature/signature)
|
||
* [Карты](/products/alfa-api/documentation/articles/cards/cards)
|
||
* [Зарплатный проект](/products/alfa-api/documentation/articles/salary/salary)
|
||
* [Alfa Pay Business](/products/alfa-api/documentation/articles/invoices/invoices)
|
||
* [Факторинг](/products/alfa-api/documentation/articles/factoring/factoring)
|
||
* [Номинальные счета](/products/alfa-api/documentation/articles/nominal-accounts/nominal-accounts)
|
||
|
||
]]>
|
||
</api_key_md>
|
||
</API_Key>
|
||
<Java_SDK>
|
||
</Java_SDK>
|
||
<Вебхуки>
|
||
<create_webhook_md>
|
||
<.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **Authorization** | `string` | **required** | Bearer {access_token}, полученный по [Authorization Code Flow](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/intro/intro) / [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | `string` | **required** | `application/json` |
|
||
| **Content-Type** | `string` | **required** | `application/json` |
|
||
|
||
### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :---------------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **object** | `string` | **required** | Объект/сущность, на который партнёр API хочет подписаться. Возможные значения:<br>• `ul_transaction_default` — получение выписки;<br>• `jp_sbp_incoming_payments` — получение входящих платежей. |
|
||
| **data** | `object` | optional | Дополнительные данные по вебхукам. Список полей зависит от события. Для `jp_sbp_incoming_payments` не заполняется. |
|
||
| **data.accounts** | `array of string` | optional | Список счетов. Заполняется при `object: ul_transaction_default`. Если не переданы, вебхук создается на все доступные счета. |
|
||
| **callbackUri** | `string` | **required** | URL партнёра. Должен соответствовать хосту `redirect_uri` из настроек Alfa ID (проверка по домену второго уровня). |
|
||
| **version** | `integer` | optional | Версия формата данных. Для текущих объектов возможное значение — `1`. |
|
||
|
||
---
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl -X POST https://baas.alfabank.ru/api/v1/webhooks \
|
||
-H 'Authorization: Bearer {token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{
|
||
"object": "ul_transaction_default",
|
||
"data": {
|
||
"accounts": [
|
||
"40702810800000000001",
|
||
"40702810800000000004",
|
||
"40702810800000000007"
|
||
]
|
||
},
|
||
"callbackUri": "https://webhook.partner.ru/api/v1/webhook-events",
|
||
"version": 1
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (201 Created)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------- | :-------- | :------------------------------------------------------------------------ |
|
||
| **id** | `uuid` | Идентификатор записи вебхука. |
|
||
| **object** | `string` | Сущность подписки (`ul_transaction_default`, `jp_sbp_incoming_payments`). |
|
||
| **enabled** | `boolean` | Статус вебхука (`true` — включён, `false` — выключен). |
|
||
| **data** | `object` | Дополнительные данные (например, список `accounts`). |
|
||
| **callbackUri** | `string` | URL партнёра, на который будет отправлен вебхук. |
|
||
| **version** | `integer` | Версия формата данных. |
|
||
|
||
**Пример JSON ответа:**
|
||
|
||
```json
|
||
{
|
||
"id": "f9f8c674-7a2a-4297-bdb8-ddd3013de3a3",
|
||
"object": "ul_transaction_default",
|
||
"enabled": true,
|
||
"data": {
|
||
"accounts": [
|
||
"40702810800000000001",
|
||
"40702810800000000004",
|
||
"40702810800000000007"
|
||
]
|
||
},
|
||
"callbackUri": "https://webhook.partner.ru/api/v1/webhook-events",
|
||
"version": 1
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание (error) | Описание ошибки (error_description) |
|
||
| :------ | :------------------------ | :-------------------------------------------------------------- |
|
||
| **400** | `invalid_request` | Неверные входные параметры запроса. |
|
||
| **401** | `invalid_token` | Токен просрочен, отозван или имеет неправильный формат. |
|
||
| **403** | `insufficient_scope` | Нет прав на использование сервиса (настройки scope). |
|
||
| **403** | `insufficient_privileges` | Нет доступа к `callbackUri` или вебхуки выключены для партнёра. |
|
||
| **404** | `unknown_route` | Эндпоинт не найден или неактивен. |
|
||
| **429** | — | Too Many Requests (превышение лимита запросов). |
|
||
| **500** | `internal_error` | Внутренняя ошибка сервиса. |
|
||
| **503** | — | Service Unavailable (сервис временно недоступен). |
|
||
|
||
> **Примечание:** Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных выше.
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
← [Как подключить](/products/alfa-api/documentation/articles/webhooks/articles/intro/intro) | [Редактирование вебхука](/products/alfa-api/documentation/articles/webhooks/articles/edit-webhook/v1/edit-webhook) →
|
||
|
||
]]>
|
||
</create_webhook_md>
|
||
<delete_webhook_md>
|
||
<.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **Authorization** | string | **required** | Bearer {access_token}, полученный по [Authorization Code Flow](https://developers.alfabank.ru/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/intro/intro) / [Authorization Code Flow H2H](https://developers.alfabank.ru/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | string | **required** | `application/json` |
|
||
| **Content-Type** | string | optional | `application/json` |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **id** | uuid | **required** | Идентификатор вебхука |
|
||
|
||
### QUERY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **object** | string | **required** | Объект/сущность, на который партнёр API хочет подписаться. Возможные значения:<br>• `ul_transaction_default` — получение выписки;<br>• `jp_sbp_incoming_payments` — получение входящих платежей. |
|
||
|
||
---
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl -X DELETE https://baas.alfabank.ru/api/v1/webhooks/f9f8c674-7a2a-4297-bdb8-ddd3013de3a3?object=ul_transaction_default \
|
||
-H 'Authorization: Bearer {token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 — OK
|
||
Нет тела ответа.
|
||
|
||
### 400 — Bad Request
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | required | Код ошибки: `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 401 — Unauthorized
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | required | Код ошибки: `invalid_token` — предоставленный токен просрочен, отозван или недействителен |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 403 — Forbidden
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | required | Код ошибки:<br>• `insufficient_scope` — нет прав (настройки scope);<br>• `insufficient_privileges` — вебхуки выключены для клиента или сервиса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 404 — Not Found
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | required | Код ошибки: `unknown_route` — эндпоинт не найден или неактивен |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 429 — Too Many Requests
|
||
Нет тела ответа.
|
||
|
||
### 500 — Internal Server Error
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | required | Код ошибки: `internal_error` — внутренняя ошибка сервиса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 503 — Service Unavailable
|
||
Нет тела ответа.
|
||
|
||
> **Примечание:** Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в данной документации.
|
||
|
||
---
|
||
**Навигация:**
|
||
[← Редактирование вебхука](https://developers.alfabank.ru/products/alfa-api/documentation/articles/webhooks/articles/edit-webhook/v2/edit-webhook) | [Получение вебхука →](https://developers.alfabank.ru/products/alfa-api/documentation/articles/webhooks/articles/get-webhook/v1/get-webhook)
|
||
|
||
]]>
|
||
</delete_webhook_md>
|
||
<edit_webhook_md>
|
||
<.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **Authorization** | `string` | **required** | Bearer {access_token}, полученный по [Authorization Code Flow](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/intro/intro) / [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | `string` | **required** | `application/json` |
|
||
| **Content-Type** | `string` | **required** | `application/json` |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **id** | `uuid` | **required** | Идентификатор вебхука |
|
||
|
||
### BODY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **object** | `string` | **required** | Объект/сущность для подписки: <br>• `ul_transaction_default` — получение выписки;<br>• `jp_sbp_incoming_payments` — получение входящих платежей |
|
||
| **enabled** | `boolean` | optional | Статус: `true` (включён), `false` (выключен) |
|
||
| **organizationIdHash** | `string` | optional | Хэш идентификатора организации |
|
||
| **data** | `object` | optional | Дополнительные данные. Для `jp_sbp_incoming_payments` не заполняется. |
|
||
| **data.accounts** | `array of string`| optional | Список счетов. При `object: ul_transaction_default` — **обязательно** (передавать все счета). Пустой массив = вебхук на все счета. |
|
||
| **callbackUri** | `string` | optional | URL партнёра. Можно менять только `path`, менять `host` нельзя. |
|
||
| **version** | `integer` | optional | Версия формата данных. Допустимое значение — `1`. |
|
||
|
||
---
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl -X PUT https://baas.alfabank.ru/api/v2/webhooks/f9f8c674-7a2a-4297-bdb8-ddd3013de3a3 \
|
||
-H 'Authorization: Bearer {token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json' \
|
||
-H 'X-Request-ID: {uuid}' \
|
||
-d '{
|
||
"object": "ul_transaction_default",
|
||
"enabled": true,
|
||
"data": {
|
||
"accounts": [
|
||
"40802810401300015422",
|
||
"40802810401300015422"
|
||
]
|
||
},
|
||
"callbackUri": "https://webhook.partner.ru/api/v1/webhook-events",
|
||
"version": 1
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Пример ответа 200 (ОК)
|
||
|
||
```json
|
||
{
|
||
"id": "f9f8c674-7a2a-4297-bdb8-ddd3013de3a3",
|
||
"object": "ul_transaction_default",
|
||
"enabled": true,
|
||
"organizationIdHash": "ff22df927f36344155f7075fae297541fcfca87e3dabef5aa9c951a21c4f072c",
|
||
"data": {
|
||
"accounts": [
|
||
"40702810800000000001",
|
||
"40702810800000000004",
|
||
"40702810800000000007"
|
||
]
|
||
},
|
||
"callbackUri": "https://webhook.partner.ru/api/v1/webhook-events",
|
||
"version": 1,
|
||
"statusDescriptions": [
|
||
{
|
||
"cause": "Revocation of agreement",
|
||
"description": "The webhook is disabled due to the agreement being revoked in Alfa ID"
|
||
},
|
||
{
|
||
"cause": "Disabled by administrator",
|
||
"description": "Webhook disabled by administrator"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### Описание полей ответа (200 OK)
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **id** | `uuid` | Идентификатор записи |
|
||
| **object** | `string` | Сущность подписки (`ul_transaction_default` или `jp_sbp_incoming_payments`) |
|
||
| **enabled** | `boolean` | Статус активации |
|
||
| **data.accounts** | `array` | Список счетов (для выписок) |
|
||
| **callbackUri** | `string` | URL получения уведомлений |
|
||
| **statusDescriptions** | `array` | Причины выключения вебхука (если есть) |
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Возможные значения `error` |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав доступа; `insufficient_privileges` — нет доступа к callbackUri |
|
||
| **404** | Not Found | `unknown_route` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
> **Рекомендация:** Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в текущей версии документации.
|
||
|
||
---
|
||
[← Назад к списку: Редактирование вебхука v1](/products/alfa-api/documentation/articles/webhooks/articles/edit-webhook/v1/edit-webhook) | [Вперёд: Удаление вебхука →](/products/alfa-api/documentation/articles/webhooks/articles/delete-webhook/v1/delete-webhook)
|
||
|
||
]]>
|
||
</edit_webhook_md>
|
||
<get_webhook_md>
|
||
<.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :---------------- | :----- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **Authorization** | string | required | `Bearer {access_token}`, полученный по [Authorization Code Flow](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/intro/intro) / [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | string | required | `application/json` |
|
||
| **Content-Type** | string | optional | `application/json` |
|
||
|
||
### PATH (Параметры пути)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :------ | :--- | :------- | :-------------------- |
|
||
| **id** | uuid | required | Идентификатор вебхука |
|
||
|
||
### QUERY (Параметры строки запроса)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--------- | :----- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **object** | string | required | Объект/сущность, на который партнер хочет подписаться:<br>• `ul_transaction_default` — получение выписки;<br>• `jp_sbp_incoming_payments` — получение входящих платежей. |
|
||
|
||
---
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl -X GET https://baas.alfabank.ru/api/v2/webhooks/f9f8c674-7a2a-4297-bdb8-ddd3013de3a3?object=ul_transaction_default \
|
||
-H 'Authorization: Bearer {token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--------------------- | :------------ | :------------------------------------------------------------------------ |
|
||
| **id** | uuid | Идентификатор записи |
|
||
| **object** | string | Объект подписки (`ul_transaction_default` или `jp_sbp_incoming_payments`) |
|
||
| **enabled** | boolean | Статус вебхука: `true` — включен, `false` — выключен |
|
||
| **organizationIdHash** | string | Хэш идентификатора организации |
|
||
| **data** | object | Дополнительные данные. Список полей зависит от события. |
|
||
| └ **accounts** | array[string] | Список счетов (для `ul_transaction_default`) |
|
||
| **callbackUri** | string | URL партнёра, на который отправляется вебхук |
|
||
| **version** | integer | Версия формата данных. Для текущих объектов значение — `1`. |
|
||
| **statusDescriptions** | array[object] | Описание статуса выключения вебхука |
|
||
| └ **cause** | string | Причина выключения |
|
||
| └ **description** | string | Описание причины |
|
||
|
||
#### Пример ответа 200:
|
||
|
||
```json
|
||
{
|
||
"id": "f9f8c674-7a2a-4297-bdb8-ddd3013de3a3",
|
||
"object": "ul_transaction_default",
|
||
"enabled": true,
|
||
"organizationIdHash": "ff22df927f36344155f7075fae297541fcfca87e3dabef5aa9c951a21c4f072c",
|
||
"data": {
|
||
"accounts": [
|
||
"40702810800000000001",
|
||
"40702810800000000004",
|
||
"40702810800000000007"
|
||
]
|
||
},
|
||
"callbackUri": "https://webhook.partner.ru/api/v1/webhook-events",
|
||
"version": 1,
|
||
"statusDescriptions": [
|
||
{
|
||
"cause": "Revocation of agreement",
|
||
"description": "The webhook is disabled due to the agreement being revoked in Alfa ID"
|
||
},
|
||
{
|
||
"cause": "Disabled by administrator",
|
||
"description": "Webhook disabled administrator"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Ошибка (`error`) |
|
||
| :------ | :------------------ | :--------------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса (scope) |
|
||
| **404** | Not Found | `unknown_route` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
> **Рекомендация:** Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в текущей версии документации.
|
||
|
||
---
|
||
|
||
_Документация Alfa API_
|
||
|
||
]]>
|
||
</get_webhook_md>
|
||
<get_webhooks_list_md>
|
||
<.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :---------------- | :----- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **Authorization** | string | required | Bearer {access_token}, полученный по [Authorization Code Flow](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/intro/intro) / [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | string | required | `application/json` |
|
||
| **Content-Type** | string | optional | `application/json` |
|
||
|
||
### QUERY
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--------- | :------ | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **object** | string | required | Объект/сущность, на который партнёр API хочет подписаться. Возможные значения:<br>• `ul_transaction_default` — получение выписки;<br>• `jp_sbp_incoming_payments` — получение входящих платежей. |
|
||
| **offset** | integer | optional | Смещение в результатах поиска. |
|
||
| **limit** | integer | optional | Количество элементов на странице. |
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl -X GET https://baas.alfabank.ru/api/v2/webhooks?offset=20&limit=10&object=ul_transaction_default \
|
||
-H 'Authorization: Bearer {token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
#### Тело ответа (JSON)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :----------------------- | :------ | :---------------------------------------------------------------------------------------------------------- |
|
||
| **pagination** | object | Данные пагинации |
|
||
| ∟ **limit** | number | Количество объектов на одной странице |
|
||
| ∟ **offset** | number | Количество объектов в списке, которые необходимо пропустить |
|
||
| ∟ **totalCount** | number | Общее количество записей |
|
||
| **items** | array | Массив объектов результата |
|
||
| ∟ **id** | uuid | Идентификатор записи |
|
||
| ∟ **object** | string | Объект/сущность подписки (`ul_transaction_default`, `jp_sbp_incoming_payments`) |
|
||
| ∟ **enabled** | boolean | Статус вебхука: `true` — включён, `false` — выключен |
|
||
| ∟ **organizationIdHash** | string | Хэш идентификатора организации |
|
||
| ∟ **data** | object | Дополнительные данные. Поле **accounts** (array of string) заполняется при `object: ul_transaction_default` |
|
||
| ∟ **callbackUri** | string | URL партнёра, на который отправляется вебхук |
|
||
| ∟ **version** | integer | Версия формата данных (возможные значения — `1`) |
|
||
| ∟ **statusDescriptions** | array | Описание причин выключения вебхука |
|
||
| ∟∟ **cause** | string | Причина выключения |
|
||
| ∟∟ **description** | string | Описание причины |
|
||
|
||
#### Пример ответа 200
|
||
|
||
```json
|
||
{
|
||
"pagination": {
|
||
"offset": 45,
|
||
"limit": 10,
|
||
"totalCount": 100
|
||
},
|
||
"items": [
|
||
{
|
||
"id": "f9f8c674-7a2a-4297-bdb8-ddd3013de3a3",
|
||
"object": "ul_transaction_default",
|
||
"enabled": true,
|
||
"organizationIdHash": "ff22df927f36344155f7075fae297541fcfca87e3dabef5aa9c951a21c4f072c",
|
||
"data": {
|
||
"accounts": [
|
||
"40702810800000000001",
|
||
"40702810800000000004",
|
||
"40702810800000000007"
|
||
]
|
||
},
|
||
"callbackUri": "https://webhook.partner.ru/api/v1/webhook-events",
|
||
"version": 1,
|
||
"statusDescriptions": [
|
||
{
|
||
"cause": "Revocation of agreement",
|
||
"description": "The webhook is disabled due to the agreement being revoked in Alfa ID"
|
||
},
|
||
{
|
||
"cause": "Disabled by administrator",
|
||
"description": "Webhook disabled administrator"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Возможные `error` |
|
||
| :------ | :------------------ | :--------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — недостаточно прав (scope) |
|
||
| **404** | Not Found | `unknown_route` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа (превышен лимит запросов) |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа (сервис временно недоступен) |
|
||
|
||
> Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в текущей версии документации.
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
← [Получение вебхука](/products/alfa-api/documentation/articles/webhooks/articles/get-webhook/v2/get-webhook) | [Партнёрский метод для получения вебхуков](/products/alfa-api/documentation/articles/webhooks/articles/partner-webhook/v1/partner-webhook) →
|
||
|
||
]]>
|
||
</get_webhooks_list_md>
|
||
<partner_webhook_md>
|
||
<.
|
||
|
||
### **Авторизация**
|
||
|
||
Реализованный метод может быть как открытым, так и закрыт авторизацией. В случае, если метод закрыт авторизацией, необходимо отправить письмо на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru) с данными, как авторизоваться в методе. Для авторизации запросов может использоваться:
|
||
|
||
- **Client Credentials Flow** ([RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749))
|
||
- **Basic Authentication** ([RFC 7617](https://datatracker.ietf.org/doc/html/rfc7617))
|
||
|
||
### **Время ответа**
|
||
|
||
Метод партнёра должен возвращать ответ не более чем за **300 миллисекунд**. Это оптимальная скорость ответа для обеспечения стабильной работы интеграции и оперативной обработки событий.
|
||
|
||
### **Retry-запросы**
|
||
|
||
Если метод партнёра отвечает с ошибкой, превышает сконфигурированное время ожидания или Банку не удаётся отправить запрос, то банк отправляет retry-запросы на доставку вебхука.
|
||
|
||
**Интервалы повторной отправки:** 30 секунд, 5 минут, 30 минут, 1 час, 3 часа, 6 часов, 12 часов, 24 часа, 48 часов, 72 часа.
|
||
|
||
**Возможные причины отправки retry-запроса:**
|
||
|
||
- был получен ответ с одним из следующих статусов: 401, 408, 409, 429, 500, 502, 503, 504, 507, 508, 509;
|
||
- ответ на запрос не был получен в пределах сконфигурированного времени ожидания (5 секунд);
|
||
- не удалось установить TCP-соединение;
|
||
- хост недоступен или не отвечает.
|
||
|
||
> **Важно:** Для предотвращения отправки Банком лишних retry-запросов необходимо возвращать коды, отличные от 2xx, только при возникновении технических сбоев на стороне партнёра.
|
||
|
||
### **Выписки**
|
||
|
||
В сервисе ["Выписки по счетам юрлиц"](/products/alfa-api/documentation/articles/transactions/transactions) в методах есть уникальный идентификатор транзакции (`transactionId`). Важно, чтобы партнёр на своей стороне игнорировал задублированные сообщения по этому идентификатору, возвращая код успешной обработки (2xx).
|
||
|
||
### **Входящие платежи по СБП для юрлиц**
|
||
|
||
В методе ["Получение входящих платежей"](/products/alfa-api/documentation/articles/sbp/articles/sbp-b2b/articles/incoming-payments/v1/incoming-payments) есть уникальный идентификатор операции НСПК (`nspkTransactionId`). Важно игнорировать задублированные сообщения по этому идентификатору, возвращая код успешной обработки (2xx).
|
||
|
||
---
|
||
|
||
## Параметры запроса (BODY)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------------- | :----- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **actionType** | string | required | Действие над объектом. Возможные значения: `create` (создание), `update` (обновление), `delete` (удаление). |
|
||
| **eventTime** | string | required | Время, когда произошло событие. |
|
||
| **object** | string | required | Объект/сущность подписки: `ul_transaction_default` (выписка), `jp_sbp_incoming_payments` (входящие платежи СБП). |
|
||
| **data** | object | required | Данные по вебхукам. Поля зависят от объекта (см. методы [«Получение выписки»](/products/alfa-api/documentation/articles/transactions/articles/statement/v1/statement) или [«Получение входящих платежей»](/products/alfa-api/documentation/articles/sbp/articles/sbp-b2b/articles/incoming-payments/v1/incoming-payments)). |
|
||
| **organizationId** | string | optional | Идентификатор организации. |
|
||
| **sub** | string | optional | Идентификатор субъекта. |
|
||
|
||
---
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl -X POST https://webhook.partner.ru/api/v1/webhook-events \
|
||
-H "Content-Type: application/json" \
|
||
-d '[
|
||
{
|
||
"actionType": "create",
|
||
"eventTime": "2022-01-12T00:00:00",
|
||
"object": "ul_transaction_default",
|
||
"organizationId": "vvvvvv",
|
||
"sub": "f7490296-1ae1-11ec-9621-0242ac130002",
|
||
"data": {
|
||
"amount": {
|
||
"amount": 1.00,
|
||
"currencyName": "RUR"
|
||
},
|
||
"amountRub": {
|
||
"amount": 1.00,
|
||
"currencyName": "RUR"
|
||
},
|
||
"correspondingAccount": "30101810200000000593",
|
||
"direction": "CREDIT",
|
||
"documentDate": "2022-01-12",
|
||
"filial": "АО \"АЛЬФА-БАНК\" г Москва",
|
||
"number": "178",
|
||
"operationCode": "01",
|
||
"operationDate": "2022-01-12T00:00:00",
|
||
"paymentPurpose": "Перевод собственных средств. НДС не облагается.",
|
||
"priority": "5",
|
||
"revaln": null,
|
||
"uuid": "9084d309-b30b-5083-9a54-d4522472e11a",
|
||
"transactionId": "1220112MOCO#DS4001415",
|
||
"rurTransfer": {
|
||
"cartInfo": {
|
||
"documentCode": null,
|
||
"documentContent": null,
|
||
"documentDate": null,
|
||
"documentNumber": null,
|
||
"paymentNumber": null,
|
||
"restAmount": null
|
||
},
|
||
"deliveryKind": "электронно",
|
||
"departmentalInfo": {
|
||
"uip": "1",
|
||
"drawerStatus101": "01",
|
||
"kbk": "18210102010011000110",
|
||
"oktmo": "12301000",
|
||
"reasonCode106": "ТП",
|
||
"taxPeriod107": "ГД.01.2022",
|
||
"docNumber108": "123",
|
||
"docDate109": "12.01.2022",
|
||
"paymentKind110": "1"
|
||
},
|
||
"payeeAccount": "40702810301300000763",
|
||
"payeeBankBic": "044525593",
|
||
"payeeBankCorrAccount": "30101810200000000593",
|
||
"payeeBankName": "АО \"АЛЬФА-БАНК\" г Москва",
|
||
"payeeInn": "0140237176",
|
||
"payeeKpp": "770801001",
|
||
"payeeName": "Полное наименование Орг № 11329",
|
||
"payerAccount": "40702810701300000761",
|
||
"payerBankBic": "044525593",
|
||
"payerBankCorrAccount": "30101810200000000593",
|
||
"payerBankName": "АО \"АЛЬФА-БАНК\" г Москва",
|
||
"payerInn": "0140237176",
|
||
"payerKpp": "770801001",
|
||
"payerName": "Полное наименование Орг № 11329",
|
||
"payingCondition": null,
|
||
"purposeCode": "2",
|
||
"receiptDate": "2022-01-12",
|
||
"valueDate": "2022-01-12"
|
||
}
|
||
}
|
||
}
|
||
]'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
В случае успешной обработки ответа на стороне клиента необходимо вернуть любой код успешной обработки (**2xx**).
|
||
|
||
]]>
|
||
</partner_webhook_md>
|
||
<webhooks_intro_md>
|
||
< для партнёрских сервисов или по [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/acf-h2h) для прямой интеграции.
|
||
|
||
---
|
||
|
||
### Инструкция по подключению
|
||
|
||
1. **Отправить письмо** на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru) с указанием `callbackUri` и события, на которое хотите подписаться.
|
||
2. **Реализовать метод:** Партнёру API на своей стороне необходимо реализовать открытый [Партнёрский метод для получения вебхуков](/products/alfa-api/documentation/articles/webhooks/articles/partner-webhook/v1/partner-webhook).
|
||
3. **Подписаться на событие** с помощью метода [«Создание вебхука»](/products/alfa-api/documentation/articles/webhooks/articles/create-webhook/v1/create-webhook).
|
||
4. **Управлять вебхуками**, используя следующие методы:
|
||
- [Редактирование вебхука](/products/alfa-api/documentation/articles/webhooks/articles/edit-webhook/v2/edit-webhook)
|
||
- [Удаление вебхука](/products/alfa-api/documentation/articles/webhooks/articles/delete-webhook/v1/delete-webhook)
|
||
- [Получение вебхука](/products/alfa-api/documentation/articles/webhooks/articles/get-webhook/v2/get-webhook)
|
||
- [Получение списка вебхуков](/products/alfa-api/documentation/articles/webhooks/articles/get-lists-webhooks/v2/get-lists-webhooks)
|
||
|
||
Инструкция по тестированию вебхуков представлена [здесь](/products/alfa-api/documentation/articles/sandbox/articles/check-webhook/articles/intro/intro).
|
||
|
||
---
|
||
|
||
### Требования к полю callbackUri
|
||
|
||
В поле `callbackUri` необходимо указывать хост, который указывали в качестве `redirect_uri` при интеграции с Alfa ID. Проверка будет проводиться только на соответствие домена второго уровня.
|
||
|
||
Это позволяет расширить возможные варианты для `callbackUri`. Например, если в качестве `redirect_uri` был указан [https://partner.ru](https://partner.ru), то можно создать следующие `callbackUri`:
|
||
|
||
- [https://partner.ru](https://partner.ru)
|
||
- [https://webhook.alfa.partner.ru](https://webhook.alfa.partner.ru)
|
||
- [https://webhook.partner.ru](https://webhook.partner.ru)
|
||
- [https://webhook.partner.partner.partner.ru](https://webhook.partner.partner.partner.ru)
|
||
|
||
> **Важно**
|
||
> Для создания вебхука с другим хостом необходимо удалить уже существующий вебхук.
|
||
|
||
---
|
||
|
||
### Допустимые значения scope
|
||
|
||
| Событие | scope |
|
||
| :-------------------------------- | :------------- |
|
||
| Операции по счетам | `transactions` |
|
||
| Входящие платежи по СБП для юрлиц | `b2b-sbp` |
|
||
|
||
---
|
||
|
||
**Дополнительные материалы:**
|
||
|
||
- **Предыдущая тема:** [Шифрование TXT ГОСТ-сертификатом](/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/articles/text-gost/text-gost)
|
||
- **Следующая тема:** [Создание вебхука](/products/alfa-api/documentation/articles/webhooks/articles/create-webhook/v1/create-webhook)
|
||
- **Видео-инструкция:** [Смотреть MP4](/assets/developers-portal.docs.alfa-api/articles/webhooks/articles/intro/files/webhooks.mp4)
|
||
|
||
]]>
|
||
</webhooks_intro_md>
|
||
</Вебхуки>
|
||
<Обмен_файлами>
|
||
<download_md>
|
||
<![CDATA[
|
||
# Скачивание файла
|
||
|
||
**Метки:** `B2B` `B2C` `H2H`
|
||
|
||
## Этапы процесса
|
||
|
||
1. **Получите ссылку для скачивания файла.** Подробнее в пункте «Получение ссылки».
|
||
2. **Выполните запрос на скачивание файла.** Подробнее в пункте «Запрос на скачивание».
|
||
3. **Скачивание файла.**
|
||
|
||
---
|
||
|
||
## Получение ссылки
|
||
|
||
Первым шагом необходимо получить ссылку на скачивание файла в рамках Вашего взаимодействия. Ниже приведен пример получаемой Вами ссылки для скачивания файла с описанием параметров.
|
||
|
||
### Атрибуты тела ответа (BODY)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------------------------------ | :-------------- | :------------- | :------------------------------------------- |
|
||
| **downloadFileLinks** | array of object | optional | Ссылка для скачивания файла из Банка |
|
||
| └─ **url** | string | optional | Ссылка для скачивания файла |
|
||
| └─ **method** | string | optional | Метод, используемый для скачивания файла |
|
||
| └─ **detachedSignatureLink** | object | optional | Открепленная ЭЦП содержимого файла |
|
||
| └─ **url** | string | optional | Ссылка для скачивания файла открепленной ЭЦП |
|
||
| └─ **method** | string | optional | Метод для скачивания открепленной ЭЦП |
|
||
|
||
### Пример ссылок на скачивание
|
||
|
||
```json
|
||
{
|
||
"downloadFileLinks": [
|
||
{
|
||
"url": "https://baas.alfabank.ru/filebox/secure-file-transfer.incoming-files.to-processing/12345678-90ab-cdef-1234-1234567890ab?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230608T152952Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=secure-file-transfer%2F20230608%2Fdev%2Fs3%2Faws4_request&X-Amz-Signature=e78c051fcff1017a68795620c20e50db33126ab8374c2ee9644ef4743b3625c6",
|
||
"method": "GET",
|
||
"detachedSignatureLink": {
|
||
"url": "https://baas.alfabank.ru/filebox/secure-file-transfer.incoming-files.to-processing/12345678-90ab-cdef-1234-1234567890ab.sign?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230608T152952Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=secure-file-transfer%2F20230608%2Fdev%2Fs3%2Faws4_request&X-Amz-Signature=36ef1ccf28bdf6e54710fc3c1dd235c8f383275c2bbb0c9db365da272d3c24a8",
|
||
"method": "GET"
|
||
}
|
||
},
|
||
{
|
||
"url": "https://baas.alfabank.ru/filebox/secure-file-transfer.incoming-files.to-processing/12345678-90ab-cdef-1234-1234567890ac?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230608T152952Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=secure-file-transfer%2F20230608%2Fdev%2Fs3%2Faws4_request&X-Amz-Signature=e78c051fcff1017a68795620c20e50db33126ab8374c2ee9644ef4743b3625c6",
|
||
"method": "GET",
|
||
"detachedSignatureLink": {
|
||
"url": "https://baas.alfabank.ru/filebox/secure-file-transfer.incoming-files.to-processing/12345678-90ab-cdef-1234-1234567890ac.sign?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230608T152952Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=secure-file-transfer%2F20230608%2Fdev%2Fs3%2Faws4_request&X-Amz-Signature=36ef1ccf28bdf6e54710fc3c1dd235c8f383275c2bbb0c9db365da272d3c24a8",
|
||
"method": "GET"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Запрос на скачивание
|
||
|
||
Для скачивания файла по полученной ссылке необходимо выполнить `http` запрос методом, указанным в параметре `method`, и полученной в параметре `url` ссылкой `https://baas.alfabank.ru/filebox/{bucketName}/{objectKey}` с параметрами запроса.
|
||
|
||
### Параметры запроса
|
||
|
||
#### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------------- | :----- | :------------- | :------------------------- |
|
||
| **Accept** | string | required | `*/*` |
|
||
| **Content-Length** | string | required | 1024 |
|
||
| **Content-Type** | string | optional | `application/octet-stream` |
|
||
|
||
#### PATH
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------- | :----- | :------------- | :-------------------------------- |
|
||
| **bucketName** | string | required | Имя bucket'а для сохранения файла |
|
||
| **objectKey** | string | required | Имя файла |
|
||
|
||
#### QUERY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------------- | :------ | :------------- | :------------------------------------------------------- |
|
||
| **X-Amz-Date** | string | required | Дата и время генерации ссылки |
|
||
| **X-Amz-Expires** | integer | required | TTL ссылки (в секундах) относительно времени её создания |
|
||
| **X-Amz-Credential** | string | required | Данные об учётной записи s3 и подписи запроса |
|
||
| **X-Amz-Algorithm** | string | required | Алгоритм подписи запроса |
|
||
| **X-Amz-Signature** | string | required | Подпись запроса |
|
||
| **Content-Length** | integer | required | Размер содержимого файла |
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl -X GET https://baas.alfabank.ru/filebox/secure-file-transfer.incoming-files.to-processing/12345678-90ab-cdef-1234-1234567890ab?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230608T152952Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=secure-file-transfer%2F20230608%2Fdev%2Fs3%2Faws4_request&X-Amz-Signature=e78c051fcff1017a68795620c20e50db33126ab8374c2ee9644ef4743b3625c6 \
|
||
-H 'Accept: */*' \
|
||
-H 'Content-Length: 1024' \
|
||
-H 'Content-Type: application/octet-stream'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
| Код | Описание | Тело ответа |
|
||
| :---------------------------- | :------------------------ | :---------------------------------------------------------------------------------------------- |
|
||
| **200 OK** | Успешное скачивание | Нет тела ответа |
|
||
| **400 Bad Request** | Ошибка в запросе | `{"error": "Код ошибки"}` |
|
||
| **403 Forbidden** | Доступ запрещен | `{"error": "Время жизни ссылки истекло / Используется некорректный метод или ссылка изменена"}` |
|
||
| **404 Not Found** | Файл не найден | `{"error": "Код ошибки"}` |
|
||
| **500 Internal Server Error** | Внутренняя ошибка сервера | `{"error": "Код ошибки"}` |
|
||
|
||
---
|
||
|
||
### См. также:
|
||
|
||
- [Требования и ограничения](/products/alfa-api/documentation/articles/secure-file-transfer/articles/intro/intro)
|
||
- [Загрузка файла](/products/alfa-api/documentation/articles/secure-file-transfer/articles/upload/v1/upload)
|
||
- [Официальный портал разработчиков Alfa-Bank](https://developers.alfabank.ru/)
|
||
|
||
]]>
|
||
</download_md>
|
||
<requirements_and_restrictions_md>
|
||
<
|
||
- [Скачивание файла →](/products/alfa-api/documentation/articles/secure-file-transfer/articles/download/v1/download)
|
||
|
||
---
|
||
|
||
### Структура раздела «Обмен файлами»
|
||
|
||
- **Требования и ограничения** (текущая страница)
|
||
- [Скачивание файла](/products/alfa-api/documentation/articles/secure-file-transfer/articles/download/v1/download)
|
||
- [Загрузка файла](/products/alfa-api/documentation/articles/secure-file-transfer/articles/upload/v1/upload)
|
||
|
||
---
|
||
|
||
_Документация Alfa-Bank (Alfa API)_
|
||
|
||
]]>
|
||
</requirements_and_restrictions_md>
|
||
<upload_md>
|
||
<![CDATA[
|
||
# Загрузка файла
|
||
|
||
**Теги:** `B2B` `B2C` `H2H`
|
||
|
||
Процесс загрузки файла состоит из трех основных этапов:
|
||
|
||
1. **Получите ссылку для загрузки файла** (Подробнее в пункте «Получение ссылки»)
|
||
2. **Выполните запрос на загрузку файла** (Подробнее в пункте «Запрос на загрузку»)
|
||
3. **Загрузка файла**
|
||
|
||
---
|
||
|
||
## Получение ссылки
|
||
|
||
Первым шагом необходимо получить ссылку на загрузку файла в рамках Вашего взаимодействия. Ниже приведен пример получаемой Вами ссылки для загрузки файла с описанием параметров.
|
||
|
||
### Атрибуты ответа (BODY)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------------ | :---------------- | :------------- | :------------------------------------- |
|
||
| **uploadFileLinks** | `array of object` | optional | Ссылка для загрузки файла в Банк |
|
||
| ↳ **url** | `string` | optional | Ссылка для загрузки файла |
|
||
| ↳ **method** | `string` | optional | Метод, используемый для загрузки файла |
|
||
|
||
### Пример ссылок на загрузку
|
||
|
||
```json
|
||
{
|
||
"uploadFileLinks": [
|
||
{
|
||
"url": "https://baas.alfabank.ru/filebox/secure-file-transfer.incoming-files.to-processing/12345678-90ab-cdef-1234-1234567890ab?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230608T152952Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=secure-file-transfer%2F20230608%2Fdev%2Fs3%2Faws4_request&X-Amz-Signature=36ef1ccf28bdf6e54710fc3c1dd235c8f383275c2bbb0c9db365da272d3c24a8",
|
||
"method": "PUT"
|
||
},
|
||
{
|
||
"url": "https://baas.alfabank.ru/filebox/secure-file-transfer.incoming-files.to-processing/12345678-90ab-cdef-1234-1234567890ac?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230608T152952Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=secure-file-transfer%2F20230608%2Fdev%2Fs3%2Faws4_request&X-Amz-Signature=36ef1ccf28bdf6e54710fc3c1dd235c8f383275c2bbb0c9db365da272d3c24a8",
|
||
"method": "PUT"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Запрос на загрузку
|
||
|
||
Для загрузки файла по полученной ссылке необходимо выполнить `http` запрос методом, указанным в параметре `method`, и полученной в параметре `url` ссылкой:
|
||
`https://baas.alfabank.ru/filebox/{bucketName}/{objectKey}` с параметрами запроса.
|
||
|
||
### Параметры запроса
|
||
|
||
#### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------------- | :------- | :------------- | :------------------------- |
|
||
| **Accept** | `string` | **required** | `*/*` |
|
||
| **Content-Length** | `string` | **required** | Например: `1024` |
|
||
| **Content-Type** | `string` | optional | `application/octet-stream` |
|
||
|
||
#### PATH
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------- | :------- | :------------- | :-------------------------------- |
|
||
| **bucketName** | `string` | **required** | Имя bucket'а для сохранения файла |
|
||
| **objectKey** | `string` | **required** | Имя файла |
|
||
|
||
#### QUERY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------------- | :-------- | :------------- | :------------------------------------------------------- |
|
||
| **X-Amz-Date** | `string` | **required** | Дата и время генерации ссылки |
|
||
| **X-Amz-Expires** | `integer` | **required** | TTL ссылки (в секундах) относительно времени её создания |
|
||
| **X-Amz-Credential** | `string` | **required** | Данные об учётной записи s3 и подписи запроса |
|
||
| **X-Amz-Algorithm** | `string` | **required** | Алгоритм подписи запроса |
|
||
| **X-Amz-Signature** | `string` | **required** | Подпись запроса |
|
||
| **Content-Length** | `integer` | **required** | Размер содержимого файла |
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl -X PUT https://baas.alfabank.ru/filebox/secure-file-transfer.incoming-files.to-processing/12345678-90AB-CDEF-1234-1234567890AB?X-Amz-Date=20230608T152952Z&X-Amz-Expires=3600&X-Amz-Credential=secure-file-transfer%2F20230608%2Fbaas%2Fs3%2Faws4_request&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Signature=36ef1ccf28bdf6e54710fc3c1dd235c8f383275c2bbb0c9db365da272d3c24a8 \
|
||
-H 'Accept: */*' \
|
||
-H 'Content-Length: 1024' \
|
||
-H 'Content-Type: application/octet-stream' \
|
||
--data-binary 'Выписка по счету.pdf'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 OK
|
||
|
||
_Нет тела ответа_
|
||
|
||
### 400 Bad Request
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------- | :------- | :------------- | :--------- |
|
||
| **error** | `string` | **required** | Код ошибки |
|
||
|
||
### 403 Forbidden
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------- |
|
||
| **error** | `string` | **required** | Код ошибки. Время жизни ссылки истекло / Используется некорректный метод или ссылка изменена |
|
||
|
||
### 404 Not Found
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------- | :------- | :------------- | :--------- |
|
||
| **error** | `string` | **required** | Код ошибки |
|
||
|
||
### 500 Internal Server Error
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------- | :------- | :------------- | :--------- |
|
||
| **error** | `string` | **required** | Код ошибки |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [← Скачивание файла](/products/alfa-api/documentation/articles/secure-file-transfer/articles/download/v1/download)
|
||
- [Для чего это нужно →](/products/alfa-api/documentation/articles/signature-encryption/articles/intro/intro)
|
||
|
||
]]>
|
||
</upload_md>
|
||
</Обмен_файлами>
|
||
<Общая_информация>
|
||
<authorization_md>
|
||
<.
|
||
|
||
Использование упрощённого способа авторизации будет оптимальным вариантом, если у вас H2H-интеграция, использующая продукты и сервисы, доступные с помощью `API Key` , и вам не требуется аутентификация сотрудников для доступа к продуктам и сервисам Alfa API.
|
||
|
||
Подробнее о способах авторизации можно прочитать в статьях ниже.
|
||
|
||
[Alfa ID](https://developers.alfabank.ru/products/alfa-api/documentation/articles/alfa-id/articles/intro/intro)[API Key](https://developers.alfabank.ru/products/alfa-api/documentation/articles/api-key/api-key)
|
||
|
||
]]>
|
||
</authorization_md>
|
||
<channel_protection_md>
|
||
<);•шифрование с применением сертификатов ГОСТ (раздел в подготовке).Выбор того или иного метода шифрования канала определяется критичностью данных:
|
||
|
||
•если персональные данные не передаются, то TLS RSA будет самым простым, дешёвым и гибким инструментом интеграции;•если персональные данные передаются, то обязательно использование сертификата ГОСТ. Партнёр API может выбирать, что использовать - TLS ГОСТ или вариант с ФПСУ ГОСТ.
|
||
|
||
]]>
|
||
</channel_protection_md>
|
||
<check_list_md>
|
||
<.
|
||
|
||
2. **Получите тестовые client_id и scope**
|
||
Подробнее в шаге 2 [инструкции по подготовке к работе с песочницей](https://developers.alfabank.ru/products/alfa-api/documentation/articles/connection/articles/instruction/instruction).
|
||
|
||
3. **Установите тестовый TLS-сертификат, сертификаты Минцифры и проверьте доступ до Swagger UI**
|
||
Подробнее в шагах 3-5 [инструкции по подготовке к работе с песочницей](https://developers.alfabank.ru/products/alfa-api/documentation/articles/sandbox/sandbox).
|
||
|
||
4. **Получите тестовый client_secret**
|
||
Подробнее [на странице Client secret](https://developers.alfabank.ru/products/alfa-api/documentation/articles/connection/articles/clientsecret/clientsecret).
|
||
|
||
5. **Реализуйте и протестируйте интеграцию Alfa ID и Alfa API в песочнице**
|
||
|
||
|
||
## Чек-лист готовности к промышленной интеграции
|
||
|
||
1. **Выполните все пункты из подраздела «Проверьте готовность к тестовой интеграции»**
|
||
|
||
|
||
2. **Создайте интеграцию в проме на Портале разработчика**
|
||
Подробнее [на странице Создание интеграции в проме](https://developers.alfabank.ru/products/alfa-api/documentation/articles/selfservice/articles/prod/prod)
|
||
|
||
3. **Выпустите TLS-сертификат**
|
||
Подробнее [на странице TLS-сертификат](https://developers.alfabank.ru/products/alfa-api/documentation/articles/connection/articles/tls/tls)
|
||
|
||
4. **Получите client_secret**
|
||
Подробнее [на странице Client secret](https://developers.alfabank.ru/products/alfa-api/documentation/articles/connection/articles/clientsecret/clientsecret)
|
||
|
||
5. **Начните использовать Alfa ID и Alfa API**
|
||
|
||
]]>
|
||
</check_list_md>
|
||
<introduction_md>
|
||
<
|
||
|
||
[Песочница](https://developers.alfabank.ru/products/alfa-api/documentation/articles/sandbox/sandbox)
|
||
|
||
## Преимущества
|
||
|
||
Alfa API предоставляет ряд преимуществ для наших клиентов и партнёров, включая:
|
||
|
||
- быстрый и безопасный доступ к нашим банковским услугам;
|
||
- простоту интеграции с вашими приложениями и сервисами;
|
||
- возможность управления счетами, переводами и другими банковскими операциями;
|
||
- доступ к актуальным данным о состоянии счетов и истории операций.
|
||
|
||
## Типы интеграций
|
||
|
||
`B2B` `B2C`
|
||
|
||
**Партнёрские сервисы** — при данном типе интеграции предоставляется возможность выполнять операции по другим организациям (при наличии от них согласия) для предоставления им услуг. В рамках этой интеграции можно выполнять операции по юридическим лицам (другие компании), взаимодействие бизнеса с бизнесом. А также можно выполнять операции, где конечным потребителем услуг является физическое лицо.
|
||
|
||
`H2H`
|
||
|
||
**H2H-интеграции (Host-to-Host)** — при данном типе интеграции предоставляется возможность встроить банковские продукты в ERP-систему для выполнения операций по своей организации.
|
||
|
||
**Холдинги** — при данном типе интеграции предоставляется возможность для головной организации выполнять казначейские функции по своим дочерним компаниям.
|
||
|
||
Поможем выбрать интеграцию за 15 секунд — **[Пройдите опрос]**
|
||
|
||
При создании Alfa API и Alfa ID использовались спецификации: [OAuth 2.0](https://datatracker.ietf.org/doc/html/rfc6749); [OIDC 1.0](https://openid.net/specs/openid-connect-core-1_0.html); [формат JSON](https://www.json.org/json-en.html); RESTful архитектура и синхронный обмен данными.
|
||
|
||
Обновления по релизам публикуются в [Телеграм-канал](https://t.me/AlfaAPI)
|
||
|
||
]]>
|
||
</introduction_md>
|
||
<pagination_md>
|
||
< / Общая информация / Пагинация
|
||
|
||
`B2B` `B2C` `H2H`
|
||
|
||
# Пагинация
|
||
|
||
---
|
||
|
||
Пагинация - разделение ответа на несколько страниц. Механизм пагинации может быть использован в REST-запросах GET.
|
||
|
||
## Параметры запроса
|
||
|
||
**Пример запроса**
|
||
```bash
|
||
1curl -X GET '{host}/claims?limit=5&offset=5'
|
||
-H 'Content-Type: application/json'
|
||
```
|
||
|
||
### QUERY
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **limit** | `NUMBER` _(optional)_ | Количество объектов на одной странице. Значение по умолчанию: 1000. Максимальное значение: 1000 |
|
||
| **offset** | `NUMBER` _(optional)_ | Количество объектов в списке, которые необходимо пропустить. Значение по умолчанию: 0 |
|
||
|
||
Количество объектов на одной странице. Значение по умолчанию: 1000. Максимальное значение: 1000
|
||
|
||
Количество объектов в списке, которые необходимо пропустить. Значение по умолчанию: 0
|
||
|
||
## Параметры ответа
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **limit** | `NUMBER` _(optional)_ | Количество объектов на одной странице |
|
||
| **offset** | `NUMBER` _(optional)_ | Количество объектов в списке, которые необходимо пропустить |
|
||
| **totalCount** | `NUMBER` _(optional)_ | Общее количество записей |
|
||
|
||
#### Ответ: 200 OK
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **limit** | `NUMBER` _(optional)_ | Количество объектов на одной странице |
|
||
| **offset** | `NUMBER` _(optional)_ | Количество объектов в списке, которые необходимо пропустить |
|
||
| **totalCount** | `NUMBER` _(optional)_ | Общее количество записей |
|
||
|
||
Количество объектов на одной странице
|
||
|
||
Количество объектов в списке, которые необходимо пропустить
|
||
|
||
Общее количество записей
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **error** | `STRING` **(required)** | Код ошибки. Принимает возможные значения: invalid_request - неверные входные параметры запроса |
|
||
| **error_description** | `STRING` _(optional)_ | Описание ошибки |
|
||
|
||
#### Ответ: 400 Bad Request
|
||
|
||
```json
|
||
invalid_request
|
||
```
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **error** | `STRING` **(required)** | Код ошибки. Принимает возможные значения: invalid_request - неверные входные параметры запроса |
|
||
| **error_description** | `STRING` _(optional)_ | Описание ошибки |
|
||
|
||
Код ошибки. Принимает возможные значения: invalid_request - неверные входные параметры запроса
|
||
|
||
Описание ошибки
|
||
|
||
## Алгоритм работы пагинации
|
||
|
||
Пример 1: Если клиент запрашивает limit = 100, offset = 0, то клиенту вернётся с 1-ой по 100-ую запись.
|
||
|
||
Пример 2: Если клиент запрашивает limit = 100, offset = 1000, то клиенту вернётся с 1001-ой по 1100-ую запись.
|
||
|
||
Сортировка в пагинации происходит следующим образом: вверху списка возвращаются новые записи, внизу - старые записи.
|
||
|
||
---
|
||
[Версионирование](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/version/version) | [Термины и определения](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/terms/terms)
|
||
|
||
]]>
|
||
</pagination_md>
|
||
<scopes_md>
|
||
<![CDATA[
|
||
* / Общая информация / Scopes (области применения)*
|
||
|
||
`B2B` `B2C` `H2H`
|
||
|
||
# Scopes (области применения)
|
||
|
||
| SCOPE | DESCRIPTION | RESOURSES |
|
||
| --- | --- | --- |
|
||
| transactions | Выписки по счетам юрлиц | `GET /jp/v1/statement/transactions`<br>`GET /jp/v2/accounts/{accountNumber}/transactions/1C`<br>`GET /jp/v1/accounts/{accountNumber}/transactions/MT940`<br>`GET /jp/v1/correspondent-accounts/{accountNumber}/transactions`<br>`GET /jp/v1/statement/summary`<br>`POST /jp/v1/accounts/{accountNumber}/transactions/files/requests`<br>`GET /jp/v1/accounts/transactions/files/requests/{requestId}` |
|
||
| escrow | Эскроу-счета 214-ФЗ. Резервирование | `GET /build-projects`<br>`POST /escrow-orders`<br>`GET /jp/v1/escrow-orders/{referenceID}`<br>`GET /jp/v1/escrow-orders`<br>`PATCH /escrow-orders/{referenceID}/execute`<br>`DELETE /escrow-orders/{referenceID}`<br>`POST /jp/v1/escrow-orders/{referenceID}/cancel`<br>`POST /jp/v1/escrow-orders-full` |
|
||
| escrow-reports | Эскроу-счета 214-ФЗ. Формирование отчётов | `GET /jp/v1/escrow-reports/developers/build-projects`<br>`POST /jp/v1/escrow-reports` |
|
||
| customer | Профиль организации | `GET /jp/v2/customer-info` |
|
||
| payment | Платёжные поручения | `POST /jp/v2/payments`<br>`GET /jp/v2/payments/{externalId}/state`<br>`GET /jp/v1/payments/{externalId}`<br>`GET /jp/v1/payments/{externalId}/print-form`<br>`GET /jp/v1/payments/{externalId}/print-form/download`<br>`PATCH /jp/v2/payments/{externalId}/state` |
|
||
| as-operation-with-selfemployed | Добавление самозанятых, получение справочных данных | `POST /semp/v1/agreement-pages`<br>`POST /semp/v1/selfemployed/registries/add-selfemployed`<br>`GET /semp/v1/selfemployed/registries/add-selfemployed/{requestId}`<br>`GET /semp/v1/dictionary/activities`<br>`GET /semp/v1/dictionary/regions`<br>`GET /semp/v1/selfemployed/lists`<br>`GET /semp/v1/selfemployed/{vatin}`<br>`PUT /semp/v1/selfemployed/{vatin}` |
|
||
| as-selfemployed-fts-status | Статус самозанятого | `POST /semp/v1/selfemployed/taxpayer-statuses`<br>`GET /semp/v1/selfemployed/taxpayer-statuses/{requestId}` |
|
||
| as-accrual-and-debt | Налоговые начисления, задолженности и пени самозанятого | `POST /semp/v1/selfemployed/accruals-and-debts`<br>`GET /semp/v1/selfemployed/accruals-and-debts/{requestId}`<br>`POST /semp/v1/selfemployed/payment-documents`<br>`GET /semp/v1/selfemployed/payment-documents/{requestId}`<br>`POST /semp/v1/selfemployed/income-for-period`<br>`GET /semp/v1/selfemployed/income-for-period/{requestId}`<br>`POST /semp/v1/selfemployed/income`<br>`GET /semp/v1/selfemployed/income/{requestId}`<br>`POST /semp/v1/selfemployed/taxpayer-account-info`<br>`GET /semp/v1/selfemployed/taxpayer-account-info/{requestId}` |
|
||
| as-receipt-and-payout | Проведение выплат и формирование чеков, список банков-участников СБП | `POST /semp/v1/payouts/registries/receipts-and-payouts`<br>`GET /semp/v1/payouts/registries/{requestId}`<br>`GET /semp/v1/payouts`<br>`GET /semp/v1/dictionary/sbp-banks`<br>`GET /semp/v1/payouts/lists`<br>`GET /semp/v1/payouts/selfemployed/{vatin}`<br>`POST /semp/v1/payouts/registries/cancel-receipts`<br>`POST /semp/v1/payouts/registries/accept/{requestId}` |
|
||
| as-receipt | Декларация доходов, аннулирование чеков | `POST /semp/v1/payouts/registries/receipts`<br>`POST /semp/v1/payouts/registries/cancel-receipts`<br>`GET /semp/v1/payouts/registries/cancel-receipts/{requestId}`<br>`GET /semp/v1/payouts/registries/{requestId}`<br>`GET /semp/v1/payouts`<br>`GET /semp/v1/payouts/lists`<br>`GET /semp/v1/payouts/selfemployed/{vatin}`<br>`POST /semp/v1/payouts/registries/accept/{requestId}` |
|
||
| as-payout-with-check-status | Проведение выплат самозанятым, список банков-участников СБП | `POST /semp/v1/payouts/registries/with-selfemployed-check-status`<br>`GET /semp/v1/payouts/registries/{requestId}`<br>`GET /semp/v1/payouts`<br>`GET /semp/v1/dictionary/sbp-banks`<br>`GET /semp/v1/payouts/lists`<br>`GET /semp/v1/payouts/selfemployed/{vatin}`<br>`POST /semp/v1/payouts/registries/accept/{requestId}` |
|
||
| as-payout | Осуществление выплат самозанятым | `POST /semp/v1/payouts/registries/payouts`<br>`GET /semp/v1/payouts/registries/{requestId}`<br>`GET /semp/v1/payouts`<br>`GET /semp/v1/dictionary/sbp-banks`<br>`GET /semp/v1/payouts/lists`<br>`GET /semp/v1/payouts/selfemployed/{vatin}`<br>`POST /semp/v1/payouts/registries/accept/{requestId}` |
|
||
| sbp_terminals_reg | Приём оплаты через СБП | `GET /jp/v1/legal`<br>`GET /jp/v1/merchants/{merchantId}`<br>`POST /jp/v1/terminals` |
|
||
| loan-applications | Кредиты | `POST /smart-loans/jp/v1/loan-applications`<br>`POST /loan-applications`<br>`GET /smart-loans/jp/v1/loan-applications/{dealId}/status` |
|
||
| signature | Электронная подпись | `GET /jp/v3/signature/dn`<br>`GET /jp/v3/signature/dn/file`<br>`POST /jp/v3/signature/rsa-certificates/requests/issue`<br>`POST /jp/v3/signature/requests/{id}/operations`<br>`PUT /jp/v3/signature/requests/operations/{id}`<br>`GET /jp/v3/signature/requests/{id}`<br>`GET /jp/v3/signature/rsa-certificates/{id}`<br>`POST /jp/v3/signature/rsa-certificates/{id}/requests/activation`<br>`PUT /jp/v3/signature/sign-settings`<br>`POST /jp/v3/signature/rsa-certificates/{Id}/requests/switch`<br>`POST /jp/v3/signature/rsa-certificates/{Id}/requests/reissue`<br>`POST /jp/v3/signature/rsa-certificates/{Id}/requests/revocation`<br>`POST /jp/v3/signature/qes/requests`<br>`POST /jp/v3/signature/qes/requests/{Id}`<br>`PATCH /jp/v3/signature/qes/requests/{Id}`<br>`POST /jp/v3/signature/powers-of-attorney/requests`<br>`GET /jp/v3/signature/powers-of-attorney/requests/{id}/status`<br>`GET /jp/v3/signature/powers-of-attorney/requests/{id}` |
|
||
| accounts | Счета | `GET /pp/v1/accounts`<br>`GET /pp/v1/accounts/{accountNumber}`<br>`GET /pp/v1/accounts/{accountNumber}/requisites`<br>`GET /jp/open-banking/v1.3/accounts`<br>`GET /jp/open-banking/v1.3/accounts/{accountId}/statements`<br>`POST /jp/open-banking/v1.3/statements`<br>`GET /jp/open-banking/v1.3/statements/{statementId}` |
|
||
| cards | Карты | `GET /pp/v1/cards`<br>`GET /pp/v1/cards/{cardId}/tariffs`<br>`GET /pp/v1/cards/{cardId}/subscriptions` |
|
||
| card-sec-actions | Тарифы и операции по карте | `GET /pp/v1/cards/{cardId}/actions`<br>`POST /pp/v1/cards/{cardId}/actions`<br>`PUT /pp/v1/cards/{cardId}/actions` |
|
||
| operations-history | Истории операций | `GET /pp/v1/operations`<br>`GET /pp/v1/operations/{id}` |
|
||
| reports-downloading | Получение документов | `GET /pp/v1/reports`<br>`GET /pp/v1/reports/{reportId}/body` |
|
||
| debit-statements | Выписки по счёту | `POST /pp/v1/reports/type/account`<br>`POST /pp/v1/reports/type/account/balance/eng`<br>`POST /pp/v1/reports/type/account/balance/rus` |
|
||
| credit-statements | Справки по кредитам | `POST /pp/v1/reports/type/credit/closed`<br>`POST /pp/v1/reports/type/credit/info`<br>`POST /pp/v1/reports/type/credit/statement` |
|
||
| deposit-statements | Справка по депозиту | `POST /pp/v1/reports/type/deposit` |
|
||
| limits-control | Лимиты по операциям | `GET /pp/v1/limits/general`<br>`GET /pp/v1/cards/{cardId}/user-limits`<br>`POST /pp/v1/cards/{cardId}/user-limits`<br>`DELETE /pp/v1/cards/{cardId}/user-limits/{limitId}` |
|
||
| loyalty | Программа лояльности | `POST /pp/v1/bonus-accounts-transactions`<br>`GET /pp/v1/bonus-accounts`<br>`GET /pp/v1/bonus-accounts/{accountNumber}` |
|
||
| b2c_sbp_payments | Платежи через СБП | `POST /b2cpay/jp/v1/payments`<br>`GET /b2cpay/jp/v1/payments`<br>`GET /b2cpay/jp/v1/payments/packages/{packageId}`<br>`POST /b2cpay/jp/v1/clients/checks`<br>`GET /b2cpay/jp/v1/clients/checks/{checkId}`<br>`GET /b2cpay/jp/v1/clients/info`<br>`GET /b2cpay/jp/v1/banks`<br>`GET /b2cpay/jp/v1/payments/download/{transactionId}` |
|
||
| credit | Кредитные предложения | `GET /pp/v1/credit-offers` |
|
||
| c2b-sbp | Оплата покупок через СБП | `POST /sbp/jp/v1/qrcs`<br>`POST /sbp/jp/v1/subscriptions`<br>`GET /sbp/jp/v1/qrc-status`<br>`POST /sbp/jp/v1/petitions`<br>`POST /sbp/jp/v1/terminals/{termNo}/cash-qrcs`<br>`POST /sbp/jp/v1/terminals/{termNo}/cash-qrcs/{qrcId}/activation`<br>`DELETE /sbp/jp/v1/terminals/{termNo}/cash-qrcs/{qrcId}/activation`<br>`POST /sbp/jp/v1/refund`<br>`GET /sbp/jp/v1/refund/status` |
|
||
| b2b-sbp | Операции СБП для юрлиц | `POST /sbp/jp/v1/payment-urls/one-time-use`<br>`POST /sbp/jp/v1/payment-urls/reusable`<br>`GET /sbp/jp/v1/payment-urls`<br>`GET /sbp/jp/v1/payment-urls/{qrcId}/data`<br>`GET /sbp/jp/v1/incoming-payments`<br>`POST /sbp/jp/v1/outgoing-payments/one-pay`<br>`GET /sbp/jp/v1/outgoing-payments`<br>`GET /sbp/jp/v1/outgoing-payments/{outgoingPaymentId}/status`<br>`POST /sbp/jp/v1/payment-urls/batch`<br>`GET /sbp/jp/v1/payment-urls/batch/{batchId}`<br>`PATCH /sbp/jp/v1/payment-urls` |
|
||
| digital-tariff | Дебетовая анкета | `POST /pp/v1/debit-cards/forms`<br>`POST /pp/v1/debit-cards/forms/{formId}/verification-sms`<br>`POST /pp/v1/debit-cards/forms/{formId}/resending-sms`<br>`POST /pp/v1/debit-cards/forms/{formId}/verification-passport` |
|
||
| plastic-delivery | Доставка дебетовой карты | `POST /pp/v1/debit-cards/forms/{formId}/verification-sms`<br>`POST /pp/v1/debit-cards/forms/{formId}/resending-sms`<br>`GET /pp/v1/debit-cards/forms/{formId}/draft`<br>`GET /pp/v1/debit-cards/forms/{formId}/delivery-type`<br>`GET /pp/v1/debit-cards/forms/{formId}/time-slots`<br>`POST /pp/v1/debit-cards/forms/{formId}/time-slots`<br>`POST /pp/v1/debit-cards/forms/{formId}/confirmation` |
|
||
| dfa | Цифровые финансовые активы (ЦФА) | `GET /dfa/gd/v1/dfa-profile/initial-placement-list` |
|
||
| salary-project | Зарплатный проект | `POST /jp/v1/salary-project/accounts/applications`<br>`GET /jp/v1/salary-project/accounts/applications/{applicationId}`<br>`POST /jp/v1/salary-project/payroll/applications`<br>`GET /jp/v1/salary-project/payroll/applications/{applicationId}` |
|
||
| loyalty-program | Получение бонусных номеров | `GET /pp/v1/bonus-numbers` |
|
||
| payment-registries | Реестры рублёвых платежей | `POST /jp/v2/payments/registries`<br>`GET /jp/v2/payments/registries/{registryId}` |
|
||
| invoices | Выставление счёта клиенту | `POST /jp/v1/payments/from-invoice`<br>`POST /jp/v2/payments/from-invoice-budget` |
|
||
| factoring | Факторинг | `GET /aff/jp/v1/creditors/compliance`<br>`POST /aff/jp/v1/payments`<br>`POST /aff/jp/v1/registers`<br>`POST /aff/jp/v1/registers/sign`<br>`GET /aff/jp/v1/payments/{paymentId}`<br>`GET /aff/jp/v1/registers/{registerId}`<br>`GET /aff/jp/v1/registers/{registerId}/documents` |
|
||
| beneficiaries | Информация о номинальных счетах и их контрагенты | `GET /na/jp/v1/nominal-accounts`<br>`GET /na/jp/v1/beneficiaries/requests/{requestId}/status`<br>`POST /na/jp/v1/beneficiaries`<br>`GET /na/jp/v1/beneficiaries`<br>`GET /na/jp/v1/beneficiaries/{beneficiaryId}`<br>`PUT /na/jp/v1/beneficiaries/{beneficiaryId}`<br>`POST /na/jp/v1/beneficiaries/{beneficiaryId}/scoring`<br>`POST /na/jp/v1/beneficiaries/{beneficiaryId}/requisites`<br>`GET /na/jp/v1/beneficiaries/{beneficiaryId}/requisites`<br>`PATCH /na/jp/v1/beneficiaries/{beneficiaryId}/requisites/{requisiteId}`<br>`GET /na/jp/v1/beneficiaries/{beneficiaryId}/balance`<br>`GET /na/jp/v1/beneficiaries/{beneficiaryId}/transactions`<br>`POST /na/jp/v1/universal-recipients`<br>`GET /na/jp/v1/universal-recipients`<br>`GET/na/jp/v1/universal-recipients/{universalRecipientId}`<br>`POST /na/jp/v1/universal-recipients/{universalRecipientId}/requisites`<br>`GET /na/jp/v1/universal-recipients/{universalRecipientId}/requisites`<br>`PATCH /na/jp/v1/universal-recipients/{universalRecipientId}/requisites/{requisiteId}` |
|
||
| deals | Безопасные сделки | `POST /na/jp/v1/deals`<br>`GET /na/jp/v1/deals`<br>`GET /na/jp/v1/deals/{dealId}`<br>`PATCH /na/jp/v1/deals/{dealId}/is-valid`<br>`GET /na/jp/v1/deals/{dealId}/payoffs`<br>`PATCH /na/jp/v1/deals/action`<br>`POST /na/jp/v1/deals/steps`<br>`GET /na/jp/v1/deals/{dealId}/requests/{requestId}/status`<br>`GET /na/jp/v1/deals/{dealId}/steps`<br>`GET /na/jp/v1/deals/{dealId}/steps/{stepId}`<br>`PATCH /na/jp/v1/deals/steps/contractors`<br>`GET /na/jp/v1/deals/{dealId}/steps/{stepId}/contractors` |
|
||
| beneficiary-payments | Идентификация пополнений номинального счёта и выплаты с него | `GET /na/jp/v1/unidentified-transactions`<br>`POST /na/jp/v1/unidentified-transactions/{id}/identify`<br>`GET /na/jp/v1/unidentified-transactions/{id}/identify/{identifyId}`<br>`POST /na/jp/v1/unidentified-transactions/{id}/refunds`<br>`GET /na/jp/v1/unidentified-transactions/{id}/refunds/{refundId}`<br>`POST /na/jp/v1/payoffs`<br>`GET /na/jp/v1/payoffs/{payoffId}/status`<br>`PATCH /na/jp/v1/payoffs/{payoffId}/accept`<br>`GET /na/jp/v1/payoffs/{payoffId}`<br>`POST /na/jp/v1/tax-refund`<br>`GET /na/jp/v1/tax-refund/{taxRefundId}/status`<br>`PATCH /na/jp/v1/tax-refund/{taxRefundId}/accept` |
|
||
|
||
|
||
]]>
|
||
</scopes_md>
|
||
<terms_and_definitions_md>
|
||
< / Общая информация / Термины и определения
|
||
|
||
`B2B` `B2C` `H2H`
|
||
|
||
# Термины и определения
|
||
|
||
---
|
||
|
||
**Аутентификация** – процедура проверки данных пользователя, обратившегося для доступа к информационному ресурсу Партнёра API.
|
||
|
||
**Банк** – Акционерное общество «Альфа-банк».
|
||
|
||
**Грант** – вид сценария интеграции, такие как Authorization Code Flow или Client Credentials Flow.
|
||
|
||
Партнёр API – клиент Банка, использующий канал Alfa API для проведения интеграции своей системы и системы/сервисов Банка. Для Партнёра API необходимо заключить Договор на информационно-технологическое взаимодействие в целях использования канала Alfa API.
|
||
|
||
**Сервис** – набор методов API, доступ к которым от имени пользователя Вы можете получить.
|
||
|
||
**Alfa API** – это канал предоставления банковских продуктов и услуг, а также инструмент их безопасной интеграции в бизнес-процессы Партнёров API.
|
||
|
||
**Alfa ID** – единая учётная запись пользователя ЮЛ (юридического лица) / ФЛ (физического лица), используемая для регистрации и входа пользователей в продукты и сервисы Банка и Партнёров API.
|
||
|
||
**Access token** – токен доступа, который формируется на основе согласия пользователя на взаимодействие от его имени Партнёра с Банком.
|
||
|
||
**Claims** – набор данных пользователя, доступ к которым Вы можете получить.
|
||
|
||
**Client ID** – уникальный идентификатор Партнёра API, который Вы получаете при регистрации.
|
||
|
||
**Client secret** – секретный ключ партнёрского сервиса.
|
||
|
||
**Redirect URI** – URL, на который сервер авторизации будет отправлять пользователя после успешной авторизации приложения и которому будет предоставляться код авторизации. Необходим при использовании типа гранта Authorization Code Flow.
|
||
|
||
**Refresh token** - токен, который даёт возможность получить новый токен доступа взамен истекшего.
|
||
|
||
**Scopes** – это общий набор операций и/или клэймов.
|
||
|
||
---
|
||
[Пагинация](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/pagination/pagination) | [Что это и для чего нужно](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/certificate/articles/intro/intro)
|
||
|
||
|
||
]]>
|
||
</terms_and_definitions_md>
|
||
<vensioning_md>
|
||
<![CDATA[
|
||
# Версионирование
|
||
|
||
Теги: `B2B` `B2C` `H2H`
|
||
|
||
---
|
||
|
||
Версии методов/эндпоинтов обозначаются как `v1` , `v2` , `v3` и так далее. Это позволяет явно указать, какую версию API использует клиент.
|
||
|
||
## Мажорные изменения
|
||
|
||
Мажорные изменения подразумевают выпуск новой версии API. Они включают изменения, которые приводят к обратной несовместимости.
|
||
|
||
Примеры мажорных изменений:
|
||
|
||
•добавление обязательных параметров в запрос;•удаление обязательных параметров из запроса или ответа;•трансформация необязательных параметров в обязательные;•изменение типа параметра в запросе или ответе.
|
||
## Минорные изменения
|
||
|
||
Минорные изменения не требуют выпуска новой версии API. Они не нарушают обратную совместимость.
|
||
|
||
Примеры минорных изменений:
|
||
|
||
•добавление новой функциональности без нарушения обратной совместимости;•исправление ошибок;•улучшение производительности;•дополнительные необязательные параметры в запросе или ответе.
|
||
## Поддержание старой версии
|
||
|
||
Срок поддержки работы старой версии составляет от двух до шести месяцев. После этого срока Банк оставляет за собой право прекратить поддержку старой версии. При этом будет добавлено уведомление о прекращении поддержки старой версии эндпоинта.
|
||
|
||
## Тестирование в песочнице
|
||
|
||
Переход на новую версию обязательно должен включать тестирование в песочнице (тестовой среде).
|
||
|
||
]]>
|
||
</vensioning_md>
|
||
<Сертификаты_Минцифры>
|
||
<for_android_md>
|
||
<.2.Перейдите в «Настройки».3.В поиске введите «Сертификат».4.Выберите «Сертификат CA».5.Если появится окно «Укажите название сертификата», введите «Russian Trusted Root CA».6.Выберите «VPN и приложения» и нажмите «ОК».
|
||

|
||
|
||
2. **Установите сертификат**
|
||
Если откроется предупреждение, нажмите «Всё равно установить» или «Установить в любом случае».
|
||
|
||

|
||
|
||
3. **Введите пароль**
|
||
1.Введите код-пароль от устройства.2.Нажмите «Подтвердить».3.В загрузках выберите «Russian Trusted Root CA.cer».
|
||

|
||
|
||
4. **Сертификат установлен**
|
||
После установки в нижней части экрана появится уведомление «Сертификат ЦС установлен».
|
||
|
||

|
||
|
||
## Установка выпускающего сертификата
|
||
|
||
1. **Скачайте выпускающий сертификат**
|
||
1.Скачайте выпускающий сертификат [Russian Trusted Sub CA](https://developers.alfabank.ru/assets/developers-portal.docs.alfa-api/articles/specification/articles/certificate/articles/android/files/russian_trusted_sub_ca.cer).2.Перейдите в «Настройки».3.В поиске введите «Сертификат».4.Выберите «Сертификат CA».5.В предупреждении нажмите «Всё равно установить» или «Установить в любом случае».6.Если появится окно «Укажите название сертификата», введите «Russian Trusted Sub CA».7.Выберите «VPN и приложения» и нажмите «ОК».
|
||

|
||
|
||
2. **Установите сертификат**
|
||
Если откроется предупреждение, нажмите «Всё равно установить» или «Установить в любом случае».
|
||
|
||

|
||
|
||
3. **Введите пароль**
|
||
1.Введите код-пароль от устройства.2.Нажмите «Подтвердить».3.В загрузках выберите «Russian Trusted Sub CA.cer».
|
||

|
||
|
||
4. **Сертификат установлен**
|
||
После установки в нижней части экрана появится уведомление «Сертификат ЦС установлен».
|
||
|
||
## Проверка установки сертификатов
|
||
|
||
Проверьте, что сертификаты успешно установлены:
|
||
|
||
1. **Перейдите в «Настройки»**
|
||
|
||
2. **В поиске введите «Надёжные сертификаты» или «Надёжные учётные данные»**
|
||
|
||
3. **Перейдите во вкладку «Пользователь»**
|
||
При успешной установке сертификатов в списке должно отобразиться два установленных сертификата Минцифры: «Russian Trusted Root CA» и «Russian Trusted Sub CA».
|
||
|
||

|
||
|
||
Очистите кэш вашего браузераОчистите кэш браузера на устройстве, с которого осуществляется доступ. Это необходимо для корректной работы с ресурсами, защищёнными сертификатами безопасности Минцифры.
|
||
|
||
[Что это и для чего нужно](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/certificate/articles/intro/intro)[Сертификаты для iOS](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/certificate/articles/ios/ios)
|
||
]]>
|
||
</for_android_md>
|
||
<for_linux_md>
|
||
< и [выпускающий сертификат](https://developers.alfabank.ru/assets/developers-portal.docs.alfa-api/articles/specification/articles/certificate/articles/linux/files/russian_trusted_sub_ca_pem.crt). Загрузите сертификаты в папку «Downloads».
|
||
|
||
2. **Установите сертификаты Удостоверяющего Центра Минцифры**
|
||
1. Нажмите на «Activities» -> «Terminal», чтобы открыть терминал.
|
||
|
||

|
||
|
||
2. Убедитесь, что файлы сертификатов «russian_trusted_root_ca_pem.crt» и «russian_trusted_sub_ca_pem.crt» находятся в директории «Downloads». Для проверки перейдите в неё с помощью `cd` и вызовите команду `ls` для отображения списка файлов.
|
||
|
||

|
||
|
||
3. Скопируйте корневой сертификат в каталог `/usr/share/pki/ca-trust-source/anchors/` . Выполните команду `sudo cp russian_trusted_root_ca_pem.crt /usr/share/pki/ca-trust-source/anchors` .
|
||
|
||
4. Введите пароль суперпользователя.
|
||
|
||

|
||
|
||
5. Cкопируйте в этот же каталог выпускающий сертификат. Выполните команду `sudo cp russian_trusted_sub_ca_pem.crt /usr/share/pki/ca-trust-source/anchors` .
|
||
|
||
6. Обновите общесистемное хранилище сертификатов командой `sudo update-ca-trust` .
|
||
|
||

|
||
|
||
7. Проверьте хранилище доверенных сертификатов. Воспользуйтесь командой `trust list` . В конце списка должны появиться сертификаты «Russian Trusted Root CA» и «Russian Trusted Sub CA».
|
||
|
||
Очистите кэш вашего браузераОчистите кэш браузера на устройстве, с которого осуществляется доступ. Это необходимо для корректной работы с ресурсами, защищёнными сертификатами безопасности Минцифры.
|
||
|
||
## Mozilla Firefox
|
||
|
||
1. **Скачайте сертификаты**
|
||
Скачайте [«корневой сертификат»](https://developers.alfabank.ru/assets/developers-portal.docs.alfa-api/articles/specification/articles/certificate/articles/linux/files/russian_trusted_root_ca_pem.crt) и [«выпускающий сертификат»](https://developers.alfabank.ru/assets/developers-portal.docs.alfa-api/articles/specification/articles/certificate/articles/linux/files/russian_trusted_sub_ca_pem.crt). Загрузите сертификаты в папку «Downloads».
|
||
|
||
2. **Установите сертификаты Удостоверяющего Центра Минцифры**
|
||
1. Откройте браузер Firefox → перейдите в «Настройки» → в поиске введите «Сертификат» → выберите «Просмотр сертификатов…».
|
||
|
||
2. В открывшемся окне «Управление сертификатами» нажмите на «Импортировать…».
|
||
|
||
3. Перейдите в папку со скачанными сертификатами. Дважды кликните по сертификату «russian_trusted_root_ca_pem.crt» → установите флажок «Доверять при идентификации веб-сайтов» → нажмите «ОК».
|
||
|
||
4. В открывшемся окне «Управление сертификатами» нажмите «Импортировать».
|
||
|
||
5. Вернитесь в папку со скачанными сертификатами. Дважды кликните по сертификату «russian_trusted_sub_ca_pem.crt» → установите флажок «Доверять при идентификации веб-сайтов» → нажмите «ОК».
|
||
|
||
6. Проверьте список сертификатов. Найдите в нём «The Ministry of Digital Development and Communications». Внутри должны находиться сертификаты «Russian Trusted Root CA» и «Russian Trusted Sub CA».
|
||
|
||

|
||
|
||
Очистите кэш вашего браузераОчистите кэш браузера на устройстве, с которого осуществляется доступ. Это необходимо для корректной работы с ресурсами, защищёнными сертификатами безопасности Минцифры.
|
||
|
||
## Chromium
|
||
|
||
1. **Скачайте сертификаты**
|
||
Скачайте [](https://developers.alfabank.ru/assets/developers-portal.docs.alfa-api/articles/specification/articles/certificate/articles/linux/files/russian_trusted_root_ca_pem.crt) и [](https://developers.alfabank.ru/assets/developers-portal.docs.alfa-api/articles/specification/articles/certificate/articles/linux/files/russian_trusted_sub_ca_pem.crt). Загрузите сертификаты в папку «Downloads».
|
||
|
||
2. **Установите сертификаты Удостоверяющего Центра Минцифры**
|
||
1. Откройте браузер Chromium → перейдите в «Настройки» → в строке поиска введите «Сертификат» → нажмите на «Безопасность» в разделе «Конфиденциальность и безопасность» → выберите «Настроить сертификаты».
|
||
|
||
2. Перейдите во вкладку «Центры сертификации» → выберите «Импорт».
|
||
|
||
3. Перейдите в папку со скачанными сертификатами. Дважды кликните по сертификату «russian_trusted_root_ca_pem.crt» → установите флажок «Доверять этому сертификату при идентификации сайтов» → нажмите «ОК».
|
||
|
||
4. Во вкладке «Центры сертификации» снова выберите кнопку «Импорт» → дважды кликните по сертификату «russian_trusted_sub_ca_pem.crt» → установите флажок «Доверять этому сертификату при идентификации сайтов» → нажмите «ОК».
|
||
|
||
5. Проверьте список сертификатов. Найдите «org-The Ministry of Digital Development and Communications» и раскройте список. Внутри должны находиться сертификаты «Russian Trusted Root CA» и «Russian Trusted Sub CA».
|
||
|
||

|
||
|
||
Очистите кэш вашего браузераОчистите кэш браузера на устройстве, с которого осуществляется доступ. Это необходимо для корректной работы с ресурсами, защищёнными сертификатами безопасности Минцифры.
|
||
|
||
[Сертификаты для MacOS](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/certificate/articles/macos/macos)[Как подключить](https://developers.alfabank.ru/products/alfa-api/documentation/articles/connection/articles/instruction/instruction)
|
||
]]>
|
||
</for_linux_md>
|
||
<what_it_is_and_what_it_is_for_md>
|
||
< / Общая информация / ... / Что это и для чего нужно
|
||
|
||
`B2B` `B2C` `H2H`
|
||
|
||
# Что это и для чего нужно
|
||
|
||
---
|
||
|
||
Установка сертификата Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации (Минцифры) необходима для подтверждения личности и безопасности пользователя при работе с определёнными типами данных и сервисов.
|
||
|
||
Этот сертификат используется для шифрования данных, аутентификации пользователя и защиты от мошенничества и кибератак.
|
||
|
||
Кроме того, он может потребоваться для доступа к некоторым государственным услугам и сервисам, связанным с электронной подписью и документооборотом.
|
||
|
||
Для получения защищённого доступа ко всем сайтам и онлайн-сервисам используйте браузеры с поддержкой российских сертификатов: Яндекс Браузер или Атом.
|
||
|
||
Альтернативный способ - установка корневого сертификата. Если Вы привыкли работать в других браузерах или возникли проблемы с работой сторонних программ, Вы можете установить корневой сертификат в операционную систему.
|
||
|
||
Ответы на часто задаваемые вопросы можно посмотреть здесь.
|
||
|
||
---
|
||
[Термины и определения](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/terms/terms) | [Сертификаты для Android](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/certificate/articles/android/android)
|
||
|
||
]]>
|
||
</what_it_is_and_what_it_is_for_md>
|
||
</Сертификаты_Минцифры>
|
||
</Общая_информация>
|
||
<Песочница>
|
||
<check_webhook>
|
||
<checking_the_webhook_eg_transactions_md>
|
||
< / [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | string | required | application/json |
|
||
| **Content-Type** | string | required | application/json |
|
||
|
||
### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------- | :----- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **object** | string | required | Объект/сущность, на который партнёр API хочет подписаться. Возможные значения:<br>• `ul_transaction_default` — получение выписки;<br>• `jp_sbp_incoming_payments` — получение входящих платежей |
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl -X POST https://sandbox.alfabank.ru/api/v1/webhooks-events \
|
||
-H 'Authorization: Bearer {token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{
|
||
"object": "ul_transaction_default"
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 201 Created
|
||
|
||
Нет тела ответа.
|
||
|
||
### 400 Bad Request
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :--------------------------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки. Значение: `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 401 Unauthorized
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :----------------------------------------------------------------------------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки. Значение: `invalid_token` — предоставленный токен просрочен, отозван, имеет неправильный формат или недействителен |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 403 Forbidden
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :----------------------------------------------------------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки. Значение: `insufficient_scope` — у пользователя нет прав на использование запрашиваемого сервиса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 404 Not Found
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :----------------------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки. Значение: `unknown_route` — эндпоинт не найден или неактивен |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 429 Too Many Requests
|
||
|
||
Нет тела ответа.
|
||
|
||
### 500 Internal Server Error
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :----------------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки. Значение: `internal_error` — внутренняя ошибка сервиса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
### 503 Service Unavailable
|
||
|
||
Нет тела ответа.
|
||
|
||
> **Примечание:** Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в текущей версии документации.
|
||
|
||
---
|
||
|
||
## Навигация
|
||
|
||
- ← [Инструкция по тестированию](/products/alfa-api/documentation/articles/sandbox/articles/check-webhook/articles/intro/intro)
|
||
- [Тестирование электронной подписи](/products/alfa-api/documentation/articles/sandbox/articles/check-signature/check-signature) →
|
||
|
||
]]>
|
||
</checking_the_webhook_eg_transactions_md>
|
||
<check_webhook_intro_md>
|
||
< с указанием, что хотите подключить вебхуки.
|
||
2. На своей стороне реализуйте открытый [Партнёрский метод для получения вебхуков](/products/alfa-api/documentation/articles/webhooks/articles/partner-webhook/v1/partner-webhook).
|
||
3. Создайте вебхук в песочнице с помощью метода [«Создание вебхука»](/products/alfa-api/documentation/articles/webhooks/articles/create-webhook/v1/create-webhook).
|
||
4. Вызовите метод [«Проверка работы вебхука»](/products/alfa-api/documentation/articles/sandbox/articles/check-webhook/articles/transactions/v1/transactions).
|
||
- В результате успешного запроса для `object = ul_transaction_default` создаются тестовые транзакции для следующих счетов:
|
||
- `40702810102300000001`
|
||
- `40702810402300000002`
|
||
- `40702810002300000003`
|
||
- `40702978902300000004`
|
||
- В результате успешного запроса для `object = jp_sbp_incoming_payments` будет создан тестовый платёж для счёта:
|
||
- `40702810100010000000`
|
||
5. После создания транзакций на ваш метод будет отправлен вебхук. Примеры форматов представлены ниже.
|
||
|
||
### Пример формата вебхука для выписки
|
||
|
||
```json
|
||
[
|
||
{
|
||
"actionType": "update",
|
||
"eventTime": "2022-01-12T00:00:00",
|
||
"object": "ul_transaction_default",
|
||
"organizationId": "vvvvvv",
|
||
"data": {
|
||
"amount": {
|
||
"amount": 1.0,
|
||
"currencyName": "RUR"
|
||
},
|
||
"amountRub": {
|
||
"amount": 1.0,
|
||
"currencyName": "RUR"
|
||
},
|
||
"correspondingAccount": "30101810200000000593",
|
||
"direction": "CREDIT",
|
||
"documentDate": "2022-01-12",
|
||
"filial": "АО \"АЛЬФА-БАНК\" г Москва",
|
||
"number": "178",
|
||
"operationCode": "01",
|
||
"operationDate": "2022-01-12T00:00:00",
|
||
"paymentPurpose": "Перевод собственных средств. НДС не облагается.",
|
||
"priority": "5",
|
||
"revaln": null,
|
||
"uuid": "9084d309-b30b-5083-9a54-d4522472e11a",
|
||
"transactionId": "1220112MOCO#DS4001415",
|
||
"rurTransfer": {
|
||
"cartInfo": {
|
||
"documentCode": null,
|
||
"documentContent": null,
|
||
"documentDate": null,
|
||
"documentNumber": null,
|
||
"paymentNumber": null,
|
||
"restAmount": null
|
||
},
|
||
"deliveryKind": "электронно",
|
||
"departmentalInfo": {
|
||
"uip": "1",
|
||
"drawerStatus101": "01",
|
||
"kbk": "18210102010011000110",
|
||
"oktmo": "12301000",
|
||
"reasonCode106": "ТП",
|
||
"taxPeriod107": "ГД.01.2022",
|
||
"docNumber108": "123",
|
||
"docDate109": "12.01.2022",
|
||
"paymentKind110": "1"
|
||
},
|
||
"payeeAccount": "40702810301300000763",
|
||
"payeeBankBic": "044525593",
|
||
"payeeBankCorrAccount": "30101810200000000593",
|
||
"payeeBankName": "АО \"АЛЬФА-БАНК\" г Москва",
|
||
"payeeInn": "0140237176",
|
||
"payeeKpp": "770801001",
|
||
"payeeName": "Полное наименование Орг № 11329",
|
||
"payerAccount": "40702810701300000761",
|
||
"payerBankBic": "044525593",
|
||
"payerBankCorrAccount": "30101810200000000593",
|
||
"payerBankName": "АО \"АЛЬФА-БАНК\" г Москва",
|
||
"payerInn": "0140237176",
|
||
"payerKpp": "770801001",
|
||
"payerName": "Полное наименование Орг № 11329",
|
||
"payingCondition": null,
|
||
"purposeCode": "2",
|
||
"receiptDate": "2022-01-12",
|
||
"valueDate": "2022-01-12"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
```
|
||
|
||
### Пример формата вебхука для входящих платежей
|
||
|
||
```json
|
||
[
|
||
{
|
||
"actionType": "update",
|
||
"eventTime": "2022-01-12T00:00:00",
|
||
"object": "jp_sbp_incoming_payments",
|
||
"organizationId": "vvvvvv",
|
||
"data": {
|
||
"qrcId": "AD1000038AQ1FG409KGACUQU5QRSH3FM",
|
||
"nspkTransactionId": "B467FC50C59A469A9898AB7B05EE3F07",
|
||
"amount": 1000000,
|
||
"taxAmount": 200000,
|
||
"paymentPurpose": "Оплата по договору №123456789 от 01.09.2001",
|
||
"payeeAccount": "40702810100010000000",
|
||
"payerAccount": null,
|
||
"currency": "RUR",
|
||
"timestamp": "2024-11-26T09:09:32Z",
|
||
"payerInfo": {
|
||
"name": "ИП Викулин",
|
||
"inn": "911006876365",
|
||
"bik": "044525593",
|
||
"accountType": "BBAN",
|
||
"bankName": "АО \"АЛЬФА-БАНК\"",
|
||
"bankCorrAccount": "30101810200000000593"
|
||
},
|
||
"recipientInfo": {
|
||
"name": "OOO Ромашка",
|
||
"inn": "8110068763612",
|
||
"bik": "044625503",
|
||
"accountType": null,
|
||
"bankName": "БАНК",
|
||
"bankCorrAccount": "30101810200000000522"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- ← [Начало работы в песочнице](/products/alfa-api/documentation/articles/sandbox/articles/intro/intro)
|
||
- [Проверка работы вебхука](/products/alfa-api/documentation/articles/sandbox/articles/check-webhook/articles/transactions/v1/transactions) →
|
||
|
||
]]>
|
||
</check_webhook_intro_md>
|
||
</check_webhook>
|
||
<managing_certificates_md>
|
||
<.
|
||
|
||
Первым шагом инструкции на выпуск RSA-сертификата выполняется запрос на сертификат. Для получения тестового сертификата на втором пункте с созданием закрытого ключа необходимо воспользоваться тестовым закрытым ключом [key-encrypted.zip](/assets/developers-portal.docs.alfa-api/articles/sandbox/articles/managing-certificates/files/sandbox_alfa_test_jwt_2026.zip) (пароль для архива уточняйте у персонального менеджера).
|
||
|
||
Для проверки подписи необходимо использовать тестовый [сертификат](/assets/developers-portal.docs.alfa-api/articles/sandbox/articles/managing-certificates/files/sandbox_alfa_test_jwt_2026.cer) ключа проверки подписи.
|
||
|
||
### ГОСТ
|
||
|
||
Для тестирования подписи и шифрования сообщений с помощью ГОСТ-сертификата Вам будет необходимо выпустить сертификат в любом специализированном [государственном УЦ](https://digital.gov.ru/ru/activity/govservices/certification_authority/?utm_referrer=https%3a%2f%2fwww.google.com%2f). Далее сертификат необходимо загрузить в Банк с помощью метода [«Добавление сертификата»](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/articles/post-certificates/post-certificates), указав при этом в поле `type` тип этого сертификата.
|
||
|
||
Для тестирования методов необходимо использовать URL [https://sandbox.alfabank.ru/api](https://sandbox.alfabank.ru/api).
|
||
|
||
Для проверки подписи необходимо использовать тестовый сертификат ключа проверки подписи. Для получения сертификата напишите на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru).
|
||
|
||
---
|
||
|
||
#### Навигация
|
||
|
||
- ← [Тестирование электронной подписи](/products/alfa-api/documentation/articles/sandbox/articles/check-signature/check-signature)
|
||
- [Формат исходного сообщения JSON](/products/alfa-api/documentation/articles/sandbox/articles/signature/articles/jws/v1/jws) →
|
||
|
||
]]>
|
||
</managing_certificates_md>
|
||
<payments_md>
|
||
< в песочнице необходимо сгенерировать уникальный идентификатор для передачи в параметре `externalId`.
|
||
|
||
При создании рублёвого платёжного поручения **с подписью** в параметре `certificateUuid` необходимо передать серийный номер RSA-сертификата:
|
||
`61000366d11e143acbc03a56d70001000366d1`
|
||
|
||
### Значения БИК банка для тестирования
|
||
|
||
Эти значения передаются в полях `payerBankBic` и `payeeBankBic`:
|
||
|
||
- `040173745`
|
||
- `044525593`
|
||
|
||
---
|
||
|
||
### Пример тестового запроса
|
||
|
||
```bash
|
||
curl --location --request POST 'https://sandbox.alfabank.ru/api/jp/v2/payments' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data-raw '{
|
||
"amount": 1.00,
|
||
"date": "2022-10-11",
|
||
"deliveryKind": "электронно",
|
||
"departmentalInfo": {
|
||
"uip": "0",
|
||
"drawerStatus101": "01",
|
||
"kbk": "18210102010011000110",
|
||
"oktmo": "45902000",
|
||
"reasonCode106": "ТП",
|
||
"taxPeriod107": "МС.02.2022",
|
||
"docNumber108": "000000000000001",
|
||
"docDate109": "2022-05-25"
|
||
},
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "HlaeIHXXEcGT1bFxo1NlpAzpr+kJ2IQrcxVdvDTep6xjsmD1FDb+6NIyLT+/T24S0mPfVCU75sieOMt71TBS7w==",
|
||
"certificateUuid": "61000366d11e143acbc03a56d70001000366d1"
|
||
}
|
||
],
|
||
"externalId": "22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
|
||
"number": "1047",
|
||
"operationCode": "01",
|
||
"payeeAccount": "40702810564564564531",
|
||
"payeeBankBic": "040173745",
|
||
"payeeBankCorrAccount": "30101810800000000745",
|
||
"payeeInn": "7723870785",
|
||
"payeeKpp": "553453453",
|
||
"payeeName": "Общество с ограниченной ответственностью \"Центр \"ИННОВАЦИЯ\"",
|
||
"payerAccount": "40702810102300000001",
|
||
"payerBankBic": "044525593",
|
||
"payerBankCorrAccount": "30101810200000000593",
|
||
"payerInn": "0453438040",
|
||
"payerKpp": "046773311",
|
||
"payerName": "Общество с ограниченной ответственностью \"Клиент\"",
|
||
"priority": "5",
|
||
"purpose": "Оплата заказа №1. НДС не облагается",
|
||
"urgencyCode": "NORMAL",
|
||
"vat": {
|
||
"rate": "0",
|
||
"type": "NO_VAT"
|
||
}
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
### Навигация
|
||
|
||
- ← [Формат исходного сообщения TXT](/products/alfa-api/documentation/articles/sandbox/articles/signature/articles/text/v1/text)
|
||
- [Для чего нужен SDK](/products/alfa-api/documentation/articles/sdk/articles/intro/intro) →
|
||
|
||
---
|
||
|
||
_Примечание: Данный документ предназначен для работы в среде **Песочница**._
|
||
|
||
]]>
|
||
</payments_md>
|
||
<sandbox_intro_md>
|
||
<.
|
||
|
||
2. **Получите тестовый `client_id` и `scope`**
|
||
Получите `client_id` и доступные `scope` [на Портале разработчика](/products/alfa-api/documentation/articles/selfservice/articles/test/test). Также эти данные можно найти в письме, отправленном банком вам на почту после подписания договора.
|
||
|
||
3. **Установите тестовый TLS-сертификат**
|
||
Для получения доступа к тестовой среде необходимо установить тестовый TLS-сертификат – [test_cert.zip](/assets/developers-portal.docs.alfa-api/articles/sandbox/articles/intro/files/test_cert.zip) – пароль для архива уточняйте у персонального менеджера.
|
||
|
||
**Архив состоит из файлов:**
|
||
- `sandbox_cert_2026.cer` – сертификат для клиента (открытый ключ);
|
||
- `sandbox_key_2026.key` – закрытый ключ;
|
||
- `apica_2022_chain.cer` – цепочка сертификатов УЦ (содержит в себе `root_apica_2022.cer` и `sub_root_apica_2022.cer`);
|
||
- `root_apica_2022.cer` – корневой сертификат УЦ;
|
||
- `sub_root_apica_2022.cer` – промежуточный сертификат УЦ;
|
||
- `baas_swagger_2026.p12` – контейнер p12, содержащий вышеперечисленные файлы.
|
||
|
||
Для доступа к Swagger UI можно использовать следующие комбинации (в зависимости от выбора Вашего ПО для работы с API):
|
||
- открытый ключ + закрытый ключ + цепочка сертификатов УЦ;
|
||
- открытый ключ + закрытый ключ + корневой сертификат УЦ + промежуточный сертификат УЦ;
|
||
- контейнер p12 (`baas_swagger_2026.p12`) – самый простой способ.
|
||
|
||
**Важно!** Корневой сертификат УЦ необходимо добавить в доверенные сертификаты на своей стороне.
|
||
|
||
Для вызова методов можно использовать стандартные программные средства для работы с API: Postman, SoapUI, JMeter, curl или использовать самописные программные средства или встроенные возможности ERP-системы.
|
||
|
||
4. **Установите сертификаты Минцифры**
|
||
Для корректной работы песочницы необходимо установить [сертификаты Минцифры](/products/alfa-api/documentation/articles/specification/articles/certificate/articles/intro/intro).
|
||
|
||
5. **Проверьте тестовый Swagger UI**
|
||
Тестовый Swagger UI находится по адресу [https://sandbox.alfabank.ru/swagger-ui/](https://sandbox.alfabank.ru/swagger-ui/)
|
||
|
||
6. **Получите тестовый `client_secret`**
|
||
Подробнее [на странице Client secret](/products/alfa-api/documentation/articles/connection/articles/clientsecret/clientsecret).
|
||
|
||
---
|
||
|
||
## Особенности вызовов
|
||
|
||
После выполнения указанных шагов вы можете приступать к тестированию запросов в песочнице.
|
||
|
||
При использовании песочницы все вызовы API должны осуществляться с установкой mTLS-соединения. В зависимости от требований используемого вами клиента при отправке запросов вам может понадобиться сертификат и закрытый ключ. Рекомендуем ознакомиться с документацией используемого клиента.
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl -X GET https://sandbox.alfabank.ru/api/v1/endpoint \
|
||
-v --cert test_certificate.cer \
|
||
--key test_key.key \
|
||
--header 'accept: application/json' \
|
||
--header 'content-type: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Как сообщить об ошибке
|
||
|
||
Отправьте письмо на [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru), указав следующие данные:
|
||
|
||
1. `client_id`.
|
||
2. Дата и время запроса с указанием часового пояса.
|
||
3. Метод и URI запроса.
|
||
4. Заголовки и тело запроса.
|
||
5. Полученная ошибка и заголовки ответа, включая `X-TraceId`.
|
||
6. IP-адрес, с которого был отправлен запрос.
|
||
|
||
---
|
||
|
||
## Адреса для тестирования
|
||
|
||
- **Получение кода авторизации:** [https://id-sandbox.alfabank.ru/oidc/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&scope={scope}&state={state}](https://id-sandbox.alfabank.ru/oidc/authorize?response_type=code&client_id=%7Bclient_id%7D&redirect_uri=%7Bredirect_uri%7D&scope=%7Bscope%7D&state=%7Bstate%7D)
|
||
- **Другие запросы в Alfa ID:** [https://sandbox.alfabank.ru/oidc](https://sandbox.alfabank.ru/oidc)
|
||
- **Запросы в Alfa API:** [https://sandbox.alfabank.ru/api](https://sandbox.alfabank.ru/api)
|
||
|
||
---
|
||
|
||
## Счета для тестирования
|
||
|
||
**Номера счетов:**
|
||
|
||
- `40702810102300000001`
|
||
- `40702810402300000002`
|
||
- `40702810002300000003`
|
||
- `40702810002300000004`
|
||
|
||
**Номер корреспондентского счёта:**
|
||
|
||
- `30102810102300000593`
|
||
|
||
---
|
||
|
||
## Рекомендации по тестированию Alfa ID ЮЛ (Юридические лица)
|
||
|
||
Для прохождения процедуры аутентификации используйте тестовые данные:
|
||
|
||
- **Login:** `SomeDifficultLogin`
|
||
- **Password:** `1qaz!QAZ`
|
||
- **One-Time Password (OTP):** `000000`
|
||
|
||
Для подписания формы согласия используйте:
|
||
|
||
- **One-Time Password:** `111111`
|
||
|
||
Подробнее [в разделе Alfa ID](/products/alfa-api/documentation/articles/alfa-id/alfa-id).
|
||
|
||
---
|
||
|
||
## Рекомендации по тестированию Alfa ID ФЛ (Физические лица)
|
||
|
||
Для прохождения процедуры аутентификации используйте тестовые данные:
|
||
|
||
- **Номер телефона:** `71111111111`
|
||
- **Login:** `SomeDifficultLogin`
|
||
- **Password:** `000000`
|
||
- **One-Time Password (OTP):** `000000`
|
||
|
||
Для подписания формы согласия используйте:
|
||
|
||
- **One-Time Password:** `000000`
|
||
|
||
Подробнее [в разделе Alfa ID](/products/alfa-api/documentation/articles/alfa-id/alfa-id).
|
||
|
||
---
|
||
|
||
[← API Key](/products/alfa-api/documentation/articles/api-key/api-key) | [Инструкция по тестированию вебхуков →](/products/alfa-api/documentation/articles/sandbox/articles/check-webhook/articles/intro/intro)
|
||
|
||
]]>
|
||
</sandbox_intro_md>
|
||
<signature_checking_md>
|
||
< выполняется запрос на сертификат. Для тестирования в песочнице необходимо использовать приложенный ниже `pkcs10Content` при вызове метода ["Заявка на выпуск RSA-сертификата"](/products/alfa-api/documentation/articles/signature/articles/issue-rsa/v1/issue-rsa).
|
||
|
||
### Содержимое pkcs10Content (Certificate Request)
|
||
|
||
```text
|
||
-----BEGIN CERTIFICATE REQUEST-----
|
||
MIIC/DCCAeQCAQAwgacxJTAjBgkqhkiG9w0BCQEWFlVzZXI1MDRAcG9jaHRvY2hr
|
||
YS5jb20xOzA5BgNVBAMMMtCa0YPQtNGA0Y/QstGG0LXQsiDQldGA0LzQvtC70LDQ
|
||
nuSDQmNCz0L7RgNC10LLQuNGHMQswCQYDVQQGEwJSVTEbMBkGA1UEBAwS0JrRg9C0
|
||
0YDRj9Cy0YbQtdCyMRcwFQYDVQQqDA7QldGA0LzQvtC70LDQuTCCASIwDQYJKoZI
|
||
hvcNAQEBBQADggEPADCCAQoCggEBANGTN2bX/kaOHuuEfMiOKg1f8y3SY1AseVjQ
|
||
ceoHKdaSeLoUIscPgEsuDsbtF6ezsZqV7bwyRYuJK+kMprczDWKiQNxmZPOafiKG
|
||
5MKOcxysgX9LV+R8JhVoycfQqmSqfImQBcPZ6s9bqq6J8cs04FCzy+nhPYoFUs2l
|
||
X+ZrFfLF135fO4LlRxfj4dfIbHZ4NVogiezIteBE3SPTtEeXiYj2c7SyB0Z17gbQ
|
||
dTmtWIolrb5GTZ6SyjjcMZY3U2ZR+4eyn2l1MFt5F/K9Ke47zu4DYTF7zkitST11
|
||
nr5gR64zjVZRtmrVqMU9iB7NmQ8/gS8YEsC3PTSECvqioSDHwNcCAwEAAaAPMA0G
|
||
CSqGSIb3DQEJDjEAMA0GCSqGSIb3DQEBCwUAA4IBAQBazGrfYMfeUdJ7ofbQ5lom
|
||
EsHO/cA312QUpyzFEsHbjYhy9OZTjiVXLfVExf8QrcRchi4/6IECp01S2Ed+nfMm
|
||
E/MtD3rtE2oBtH6FjA9APtZb9NZuiSYCzl7nL3rd0ui+F32Dy/JNkudktn64jsMH
|
||
YVt5u8Ik0dtxl0axa3E5RUkpJTTl7iIOWD+P8UkOOpa9EMPA2hrtrZvPr8xr60IS
|
||
d2t4vKFcHIdgdI2Qe5ATvaYfbccLGjxdWm05lXVuxRjpEOXjuhc5mRkEj06bPavD
|
||
9k7h/Tsz4Jb9gNKDZ3TEzfynQkDFFse8in6IDDkwPO21J6onTMd7KOP1gqMSYjrh
|
||
-----END CERTIFICATE REQUEST-----
|
||
```
|
||
|
||
### Данные для подтверждения
|
||
|
||
Для шага с подписанием заявки с помощью кода из СМС использовать:
|
||
**One-Time Password: 11111111**
|
||
|
||
---
|
||
|
||
#### Навигация
|
||
|
||
- ← [Проверка работы вебхука](/products/alfa-api/documentation/articles/sandbox/articles/check-webhook/articles/transactions/v1/transactions)
|
||
- [Управление сертификатами для подписи и шифрования](/products/alfa-api/documentation/articles/sandbox/articles/managing-certificates/managing-certificates) →
|
||
|
||
]]>
|
||
</signature_checking_md>
|
||
<signature_encryption_tests>
|
||
<jws_POST_md>
|
||
<.
|
||
- Процесс формирования и шифрования сообщения RSA описан [здесь](/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/articles/json-rsa/json-rsa).
|
||
- Подписание запроса и дешифрование ответа происходит с использованием закрытого ключа сертификата. Для тестирования необходимо использовать тестовый [закрытый ключ](/assets/developers-portal.docs.alfa-api/articles/sandbox/articles/signature/articles/jws/v1/files/sandbox_alfa_test_jwt_2026.zip) (пароль уточняйте у персонального менеджера).
|
||
- Процесс формирования и подписания сообщения с использованием ГОСТ-сертификата описан [здесь](/products/alfa-api/documentation/articles/signature-encryption/articles/signature/articles/json-gost/json-gost).
|
||
- Процесс формирования и шифрования сообщения ГОСТ описан [здесь](/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/articles/json-gost/json-gost).
|
||
|
||
> **Внимание**
|
||
> Способ защиты данных определяется настройками интеграции. Для уточнения информации по настройке Вашей интеграции или запроса для установления нужных настроек необходимо написать на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru). При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
|
||
|
||
---
|
||
|
||
### Параметры запроса
|
||
|
||
#### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------------------------- | :----- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| **Authorization** | string | required | Bearer {access_token} |
|
||
| **Accept** | string | required | application/jose |
|
||
| **Content-Type** | string | required | application/jose |
|
||
| **X-Request-ChannelSecurity** | string | optional | Тип защиты канала для запроса. Значения: `NO` (без защиты), `SIGNATURE` (проверка подписи), `ENCRYPTION` (дешифрование и проверка подписи). |
|
||
| **X-Response-ChannelSecurity** | string | optional | Тип защиты канала для ответа. Значения: `NO` (без защиты), `SIGNATURE` (подписание ответа), `ENCRYPTION` (подписание и шифрование ответа). |
|
||
|
||
#### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------ | :----- | :------------- | :-------------------------------- |
|
||
| (root) | string | required | Тело подписи в виде base64-строки |
|
||
|
||
---
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl -X POST https://sandbox.alfabank.ru/api/signature-encryption-tests/json \
|
||
-H 'Authorization: Bearer {access-token}' \
|
||
-H 'Accept: application/jose' \
|
||
-H 'Content-Type: application/jose' \
|
||
-H 'X-Request-ChannelSecurity: SIGNATURE' \
|
||
-H 'X-Response-ChannelSecurity: SIGNATURE' \
|
||
-d 'eyJraWQiOiI2MTAwMDM4YWFhYTAxZTRkN2YzOTM5OGQ4NDAwMDEwMDAzOGFhYSIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJjb3VudCI6MTAwLCJzb21lRmllbGQiOiJzb21lVmFsdWUiLCJpZCI6IjNiNzk1YTBlLTFjOTctNDIxMi05YTI4LWYyODJkODAxNWI1YSIsImNyZWF0aW9uRGF0ZSI6IjIwMjItMDUtMThUMTA6Mjc6MDkuNzEyWiIsInN0YXR1cyI6ImFjdGl2ZSJ9.WYQKfllUHfs7IN0DdujjKlqpnThfJZgY_A6CZN-ghFohTYbDiRAJBAk4IxIkRfj2Hxcz4rR5DEKX8remdXEOHGrBpNf4okOob0bfIutNRhaeaZAIMFKjungALPRBmMhAiU0t5-Vp3ImUwhidSnSSP08gCHrTD1by5zYrzzYBB6tyikf8lNwYJQKRxscZcXqwOU9gAWBuV4rteClIbDCeTwkx5ci6WKWAq8bv7RDuwU_1KPjh6upJmwJ1g1epmvPdaFOQq5uf9NhAxomeeptmJoBOm3c8ZSYASYMno8KNWxr94B2xAhD7NCakfFCiQZjSH9b6MjM2aJEBhDyKYo2IGw'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
#### 201 Created
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------ | :----- | :------------- | :---------- |
|
||
| (root) | string | optional | Тело ответа |
|
||
|
||
#### 400 Bad Request
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :----------------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки: `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
#### 401 Unauthorized
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :------------------------------------------------------------------------ |
|
||
| **error** | string | required | Код ошибки: `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
#### 404 Not Found
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :---------------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки: `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
#### 500 Internal Server Error
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------------- | :----- | :------------- | :------------------------------------------------------- |
|
||
| **error** | string | required | Код ошибки: `internal_error` — внутренняя ошибка сервиса |
|
||
| **error_description** | string | optional | Описание ошибки |
|
||
|
||
---
|
||
|
||
_Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в текущей версии документации._
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [← Управление сертификатами для подписи и шифрования](/products/alfa-api/documentation/articles/sandbox/articles/managing-certificates/managing-certificates)
|
||
- [Формат исходного сообщения XML →](/products/alfa-api/documentation/articles/sandbox/articles/signature/articles/xmldsig/v1/xmldsig)
|
||
|
||
]]>
|
||
</jws_POST_md>
|
||
<text_POST_md>
|
||
<, а шифрования — [здесь](https://developers.alfabank.ru/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/articles/text-rsa/text-rsa).
|
||
* **ГОСТ-сертификат:** Процесс формирования и подписания описан [здесь](https://developers.alfabank.ru/products/alfa-api/documentation/articles/signature-encryption/articles/signature/articles/text-gost/text-gost), а шифрования — [здесь](https://developers.alfabank.ru/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/articles/text-gost/text-gost).
|
||
* **Тестирование:** Подписание запроса и дешифрование ответа происходит с использованием закрытого ключа. Для тестов используйте [закрытый ключ](https://developers.alfabank.ru/assets/developers-portal.docs.alfa-api/articles/sandbox/articles/signature/articles/text/v1/files/sandbox_alfa_test_jwt_2026.zip) (пароль уточняйте у персонального менеджера).
|
||
|
||
> **⚠️ Внимание**
|
||
> Способ защиты данных определяется настройками интеграции. Для уточнения настроек или их изменения напишите на [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru), указав способ защиты (подпись или подпись с шифрованием) и алгоритм (RSA или ГОСТ).
|
||
|
||
---
|
||
|
||
### Параметры запроса
|
||
|
||
#### HEADERS
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **Authorization** | string | required | Bearer {access_token} |
|
||
| **Accept** | string | required | text/plain |
|
||
| **Content-Type** | string | required | text/plain |
|
||
| **X-Request-ChannelSecurity** | string | optional | Тип защиты запроса. Значения: `NO` (без защиты), `SIGNATURE` (подпись), `ENCRYPTION` (дешифрование и подпись). |
|
||
| **X-Response-ChannelSecurity** | string | optional | Тип защиты ответа. Значения: `NO` (без защиты), `SIGNATURE` (подпись), `ENCRYPTION` (подпись и шифрование). |
|
||
|
||
#### BODY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| — | string | required | Тело подписи в виде base64-строки |
|
||
|
||
#### Пример запроса
|
||
```bash
|
||
curl -X POST https://sandbox.alfabank.ru/api/signature-encryption-tests/text \
|
||
-H 'Authorization: Bearer {access-token}' \
|
||
-H 'Accept: text/plain' \
|
||
-H 'Content-Type: text/plain' \
|
||
-H 'X-Request-ChannelSecurity: SIGNATURE' \
|
||
-H 'X-Response-ChannelSecurity: SIGNATURE' \
|
||
-d 'eyJraWQiOiI2MTAwMDM4YWFhYTAxZTRkN2YzOTM5OGQ4NDAwMDEwMDAzOGFhYSIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJjb3VudCI6MTAwLCJzb21lRmllbGQiOiJzb21lVmFsdWUiLCJpZCI6IjNiNzk1YTBlLTFjOTctNDIxMi05YTI4LWYyODJkODAxNWI1YSIsImNyZWF0aW9uRGF0ZSI6IjIwMjItMDUtMThUMTA6Mjc6MDkuNzEyWiIsInN0YXR1cyI6ImFjdGl2ZSJ9.WYQKfllUHfs7IN0DdujjKlqpnThfJZgY_A6CZN-ghFohTYbDiRAJBAk4IxIkRfj2Hxcz4rR5DEKX8remdXEOHGrBpNf4okOob0bfIutNRhaeaZAIMFKjungALPRBmMhAiU0t5-Vp3ImUwhidSnSSP08gCHrTD1by5zYrzzYBB6tyikf8lNwYJQKRxscZcXqwOU9gAWBuV4rteClIbDCeTwkx5ci6WKWAq8bv7RDuwU_1KPjh6upJmwJ1g1epmvPdaFOQq5uf9NhAxomeeptmJoBOm3c8ZSYASYMno8KNWxr94B2xAhD7NCakfFCiQZjSH9b6MjM2aJEBhDyKYo2IGw'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
#### 201 Created
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **responseTextFiled** | string | optional | Тело ответа |
|
||
|
||
**Пример ответа:**
|
||
```text
|
||
responseTextFiled:responseTextValue
|
||
```
|
||
|
||
#### Ошибки (400, 401, 404, 500)
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | required | Код ошибки (например, `invalid_request`, `invalid_token`, `unknown_endpoint`, `internal_error`) |
|
||
| **error_description** | string | optional | Детальное описание ошибки |
|
||
|
||
---
|
||
*Примечание: Значения параметров ошибок могут изменяться. Рекомендуется предусмотреть стандартную обработку ошибок.*
|
||
|
||
]]>
|
||
</text_POST_md>
|
||
<xmldsig_POST_md>
|
||
<, а процесс формирования и шифрования сообщения описан [здесь](/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/articles/xml-rsa/xml-rsa). Подписание запроса и дешифрование ответа происходит с использованием закрытого ключа сертификата. Для тестирования необходимо использовать тестовый [закрытый ключ](/assets/developers-portal.docs.alfa-api/articles/sandbox/articles/signature/articles/xmldsig/v1/files/sandbox_alfa_test_jwt_2026.zip) (пароль уточняйте у персонального менеджера).
|
||
|
||
Процесс формирования и подписания сообщения с использованием ГОСТ-сертификата описан [здесь](/products/alfa-api/documentation/articles/signature-encryption/articles/signature/articles/xml-gost/xml-gost), а процесс формирования и шифрования сообщения описан [здесь](/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/articles/xml-gost/xml-gost).
|
||
|
||
> **Внимание**
|
||
> Способ защиты данных определяется настройками интеграции. Для уточнения информации по настройке вашей интеграции или запроса для установления нужных настроек необходимо написать на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru). При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
|
||
|
||
---
|
||
|
||
### Параметры запроса
|
||
|
||
#### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------------------------- | :----- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| **Authorization** | string | required | Bearer {access_token} |
|
||
| **Accept** | string | required | application/xml |
|
||
| **Content-Type** | string | required | application/xml |
|
||
| **X-Request-ChannelSecurity** | string | optional | Тип защиты канала для запроса. Значения: `NO` — без защиты; `SIGNATURE` — проверка подписи; `ENCRYPTION` — дешифрование и проверка подписи. |
|
||
| **X-Response-ChannelSecurity** | string | optional | Тип защиты канала для ответа. Значения: `NO` — без защиты; `SIGNATURE` — подписание ответа; `ENCRYPTION` — подписание и шифрование. |
|
||
|
||
#### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------- | :----- | :------------- | :-------------------------------- |
|
||
| (тело запроса) | string | required | Тело подписи в виде base64-строки |
|
||
|
||
#### Пример запроса
|
||
|
||
```bash
|
||
curl -X POST https://sandbox.alfabank.ru/api/signature-encryption-tests/xml \
|
||
-H 'Authorization: Bearer {access-token}' \
|
||
-H 'Accept: application/xml' \
|
||
-H 'Content-Type: application/xml' \
|
||
-H 'X-Request-ChannelSecurity: SIGNATURE' \
|
||
-H 'X-Response-ChannelSecurity: SIGNATURE' \
|
||
-d 'eyJraWQiOiI2MTAwMDM4YWFhYTAxZTRkN2YzOTM5OGQ4NDAwMDEwMDAzOGFhYSIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJjb3VudCI6MTAwLCJzb21lRmllbGQiOiJzb21lVmFsdWUiLCJpZCI6IjNiNzk1YTBlLTFjOTctNDIxMi05YTI4LWYyODJkODAxNWI1YSIsImNyZWF0aW9uRGF0ZSI6IjIwMjItMDUtMThUMTA6Mjc6MDkuNzEyWiIsInN0YXR1cyI6ImFjdGl2ZSJ9.WYQKfllUHfs7IN0DdujjKlqpnThfJZgY_A6CZN-ghFohTYbDiRAJBAk4IxIkRfj2Hxcz4rR5DEKX8remdXEOHGrBpNf4okOob0bfIutNRhaeaZAIMFKjungALPRBmMhAiU0t5-Vp3ImUwhidSnSSP08gCHrTD1by5zYrzzYBB6tyikf8lNwYJQKRxscZcXqwOU9gAWBuV4rteClIbDCeTwkx5ci6WKWAq8bv7RDuwU_1KPjh6upJmwJ1g1epmvPdaFOQq5uf9NhAxomeeptmJoBOm3c8ZSYASYMno8KNWxr94B2xAhD7NCakfFCiQZjSH9b6MjM2aJEBhDyKYo2IGw'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
#### Успешный ответ (201 Created)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------------------------- | :----- | :---------------------------------------------------------------- |
|
||
| **ds:Signature** | string | Корневой элемент XML Signature |
|
||
| **ds:SignedInfo** | string | Содержит информацию об алгоритме канонизации, подписи и дайджесте |
|
||
| **ds:CanonicalizationMethod** | string | Алгоритм канонизации (атрибут `Algorithm`) |
|
||
| **ds:SignatureMethod** | string | Алгоритм подписи (атрибут `Algorithm`) |
|
||
| **ds:DigestMethod** | string | Алгоритм дайджеста (атрибут `Algorithm`) |
|
||
| **ds:SignatureValue** | string | Значение тела подписи в кодировке base64 |
|
||
| **ds:KeyInfo** | string | Информация о ключах и сертификатах для проверки подписи |
|
||
| **ds:X509Data** | string | Информация о сертификатах |
|
||
| **ds:X509Certificate** | string | Сертификат, которым подписано тело, в base64 |
|
||
|
||
#### Пример ответа 201
|
||
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<Response>
|
||
<XmlElementName2>XmlElementValue2</XmlElementName2>
|
||
<ds:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="sigID1">
|
||
<ds:SignatureValue>H6jGW+bKLwvQ9xxbhZ6jNYRHtupT4aJ4jjlLh4W8svK0w5G7ZXf4OxqRR0t2l6aYOpNBdN2Q0+2T
|
||
1LXyadtnz7XJ7QYXNXrnWNcq7mOxM5Lj5bBQa2JPZSiMkp1lsnAV/LFDAJ+Uhruj3mFQxjiFpJLR
|
||
W/vRJzmRv925xXWopb94PFvP9mjtAwPXtBGEL5rqJICabzVo8+1BfPwFF5+8sqYzT74mmJIQmeFm
|
||
FiYVMNive5lRxlt7nXEgS4iENF1dXq5+prCPloms8hIX6I4HQo3Jn+G37Os57nv8g61gk4jnu2OK
|
||
bOsZasIzXSLVG2GrCbDQ+HFjWs3Fgg4JOkULfw==
|
||
</ds:SignatureValue>
|
||
<ds:SignedInfo>
|
||
<ds:Reference URI="">
|
||
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384">
|
||
</ds:DigestMethod>
|
||
<ds:DigestValue>xgVcc1UZhuWRp4/8K0OAVLuQUhySUtJg7mYo78Od+WWidnIZr2XZUvPqwxOpFwRY</ds:DigestValue>
|
||
<ds:Transforms>
|
||
<ds:Transform/>
|
||
<ds:Transform/>
|
||
</ds:Transforms>
|
||
</ds:Reference>
|
||
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256">
|
||
</ds:SignatureMethod>
|
||
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
|
||
</ds:CanonicalizationMethod>
|
||
</ds:SignedInfo>
|
||
<ds:KeyInfo>
|
||
<ds:X509Data>
|
||
<ds:X509Certificate>MIIGATCCBLWgAwIBAgITYQADiqqgHk1/OTmNhAABAAOKqjBBBgkqhkiG9w0BAQowNKAPMA0GCWCG... (урезано для краткости)</ds:X509Certificate>
|
||
</ds:X509Data>
|
||
</ds:KeyInfo>
|
||
</ds:Signature>
|
||
<XmlElementName1>XmlElementValue1</XmlElementName1>
|
||
</Response>
|
||
```
|
||
|
||
---
|
||
|
||
### Ошибки
|
||
|
||
| Код | Описание | Возможные значения `Error` |
|
||
| :------ | :-------------------- | :------------------------------------------------------------ |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
|
||
#### Пример ошибки 400
|
||
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<ErrorResponse>
|
||
<Error>invalid_request</Error>
|
||
<ErrorDescription>Authorization header is not present in request headers</ErrorDescription>
|
||
</ErrorResponse>
|
||
```
|
||
|
||
---
|
||
|
||
_Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в текущей версии документации._
|
||
|
||
]]>
|
||
</xmldsig_POST_md>
|
||
</signature_encryption_tests>
|
||
</Песочница>
|
||
<Подключение_к_Alfa_API>
|
||
<client_id_md>
|
||
<, сразу после его подписания. Также тестовые учётные данные будут доступны [на Портале разработчика](/products/alfa-api/documentation/articles/selfservice/articles/intro/intro).
|
||
|
||
Для получения промышленного `client_id` необходимо [создать интеграцию в проме](/products/alfa-api/documentation/articles/selfservice/articles/prod/prod) на Портале разработчика. `client_id` будет указан в карточке интеграции.
|
||
|
||
У вас может быть несколько `client_id` в случаях, если:
|
||
|
||
- вы интегрируете Alfa API / Alfa ID в свой сервис, используя разные точки входа для пользователей-физических лиц и пользователей-юридических лиц;
|
||
- вы планируете предоставлять разные сервисы своим пользователям;
|
||
- вам требуется получение данных по своей организации, а также использование партнёрского сервиса (если есть прямая интеграция банка и ERP-системы пользователя и есть отдельная интеграция продукта пользователя с Alfa API / Alfa ID).
|
||
|
||
Для получения нескольких `client_id` вам необходимо запросить у сотрудников Банка отдельный `client_id` для каждой интеграции, а также учитывать наличие нескольких `client_id` при реализации интеграции.
|
||
|
||
---
|
||
|
||
### Навигация
|
||
|
||
[← Отзыв договора](/products/alfa-api/documentation/articles/connection/articles/revoke/revoke) | [TLS-сертификат →](/products/alfa-api/documentation/articles/connection/articles/tls/tls)
|
||
|
||
---
|
||
|
||
### Содержание раздела «Подключение к Alfa API»
|
||
|
||
- [Как подключить](/products/alfa-api/documentation/articles/connection/articles/instruction/instruction)
|
||
- [Подписание договора](/products/alfa-api/documentation/articles/connection/articles/onboarding/onboarding)
|
||
- [Отзыв договора](/products/alfa-api/documentation/articles/connection/articles/revoke/revoke)
|
||
- **Client ID** (текущая страница)
|
||
- [TLS-сертификат](/products/alfa-api/documentation/articles/connection/articles/tls/tls)
|
||
- [Client secret (POST)](/products/alfa-api/documentation/articles/connection/articles/clientsecret/clientsecret)
|
||
|
||
]]>
|
||
</client_id_md>
|
||
<client_secret_md>
|
||
<![CDATA[
|
||
# Client secret
|
||
|
||
**Типы интеграции:** `B2B` | `B2C` | `H2H`
|
||
**Метод:** `POST`
|
||
|
||
> [!IMPORTANT]
|
||
> **Внимание**
|
||
> Получить и заменить `client_secret` можно двумя способами:
|
||
>
|
||
> 1. С помощью кнопки в карточке интеграции на **Портале разработчика**.
|
||
> 2. С помощью описанного ниже API-метода.
|
||
|
||
---
|
||
|
||
## Эндпоинты
|
||
|
||
| Среда | URL |
|
||
| :------------ | :----------------------------------------------------------------------- |
|
||
| **Песочница** | `POST https://sandbox.alfabank.ru/oidc/clients/{clientId}/client-secret` |
|
||
| **Пром** | `POST https://baas.alfabank.ru/oidc/clients/{clientId}/client-secret` |
|
||
|
||
---
|
||
|
||
## Описание
|
||
|
||
`client_secret` представляет собой уникальную строку символов, которая генерируется один раз и не меняется в процессе работы. Достаточно получить его **один раз** и **не менять** в дальнейшем.
|
||
|
||
При необходимости вы можете использовать этот метод для замены `client_secret` или в случае его компрометации для получения нового.
|
||
|
||
Если оперативная замена `client_secret` невозможна, необходимо уведомить Банк о факте компрометации по адресу: [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru).
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------- | :----- | :------------- | :----------------------------- |
|
||
| **Accept** | string | required | Должен быть `application/json` |
|
||
|
||
### PATH (Путь)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------- | :----- | :------------- | :--------------------------------- |
|
||
| **clientId** | string | optional | Идентификатор партнёрского сервиса |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff --request POST 'https://baas.alfabank.ru/oidc/clients/{clientId}/client-secret' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--------------- | :----- | :---------------------------------------- |
|
||
| **clientId** | string | Идентификатор партнёрского сервиса |
|
||
| **clientSecret** | string | Новый секретный ключ партнёрского сервиса |
|
||
|
||
**Пример ответа:**
|
||
|
||
```json
|
||
{
|
||
"clientId": "0cee0683-85ae-49f2-a63d-29f97aad1911",
|
||
"clientSecret": "Qwerty1234567890Qwerty1234567890!"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Возможные значения `error` |
|
||
| :------ | :------------- | :---------------------------------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверный формат запроса или отсутствуют обязательные параметры. |
|
||
| **401** | Unauthorized | `invalid_token` — ошибка авторизации. |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен. |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса. |
|
||
|
||
---
|
||
|
||
_Документация Alfa API_
|
||
|
||
]]>
|
||
</client_secret_md>
|
||
<contract_signing_md>
|
||
<
|
||
|
||
Далее на странице второго фактора аутентификации введите полученный на телефон otp-ĸод (sms, push).
|
||

|
||
|
||
Вы зашли в Альфа-Бизнес.
|
||

|
||
|
||
---
|
||
|
||
### 2. Перейдите во «Все сервисы и продукты»
|
||
Перейдите на страницу **Все сервисы и продукты** и выберите **Alfa API** в разделе **Обслуживание бизнеса**.
|
||

|
||
|
||
При отсутствии на странице пункта «Alfa API» отправьте письмо на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru).
|
||
|
||
---
|
||
|
||
### 3. Подключите Alfa API
|
||
На открывшемся лендинге нажмите на кнопку **Подключить Alfa API**.
|
||

|
||
|
||
Выберите необходимую организацию (при наличии нескольких организаций).
|
||

|
||
|
||
---
|
||
|
||
### 4. Подпишите договор
|
||
Внимательно ознакомьтесь с текстом договора. При необходимости введите e-mail для технических и для иных запросов. Нажмите на кнопку **Подписать**.
|
||

|
||
|
||
Далее на странице введите полученный на телефон otp-ĸод (sms, push).
|
||

|
||
|
||
Или подпишите договор при помощи усиленной квалифицированной электронной подписи (**УКЭП**). *Обратите внимание, что данный функционал доступен не всем пользователям.*
|
||
|
||
Вы успешно подключили Alfa API.
|
||

|
||
|
||
---
|
||
|
||
### 5. Просмотрите подписанный договор
|
||
Для просмотра договора необходимо нажать в верхнем правом углу на наименование компании. В появившейся боковой панели выберите **Настройки**.
|
||

|
||
|
||
Далее необходимо выбрать карточку **Управление согласиями**.
|
||

|
||
|
||
В разделе **Alfa API** будет отображаться подписанный вами договор. Для просмотра нажмите **Прочитать согласие**.
|
||

|
||
|
||
В открывшемся окне вы сможете прочитать договор и скачать его в формате **PDF**.
|
||

|
||
|
||
---
|
||
|
||
### 6. Приступайте к тестированию Alfa API
|
||
После успешного подписания договора вы можете:
|
||
* Получить тестовые учётные данные [на Портале разработчика](/products/alfa-api/documentation/articles/sandbox/sandbox).
|
||
* Приступить к тестированию Alfa API [в Песочнице](/products/alfa-api/documentation/articles/sandbox/sandbox).
|
||
|
||
Для работы с Порталом вашему разработчику предварительно необходимо получить права на управление настройками Alfa API. Как их назначить, описано [на странице Права доступа](/products/alfa-api/documentation/articles/selfservice/articles/access-rights/access-rights).
|
||
|
||
---
|
||
**Навигация:**
|
||
← [Как подключить](/products/alfa-api/documentation/articles/connection/articles/instruction/instruction) | [Отзыв договора](/products/alfa-api/documentation/articles/connection/articles/revoke/revoke) →
|
||
|
||
]]>
|
||
</contract_signing_md>
|
||
<contract_termination_md>
|
||
< любым удобным для вас способом.
|
||

|
||
|
||
Далее на странице второго фактора аутентификации введите полученный на телефон otp-ĸод (sms, push).
|
||

|
||
|
||
Вы зашли в Альфа-Бизнес.
|
||

|
||
|
||
### 2. Перейдите в «Управление согласиями»
|
||
|
||
Нажмите в верхнем правом углу на наименование компании. В появившейся боковой панели выберите **Настройки**.
|
||

|
||
|
||
Выберите карточку **Управление согласиями**.
|
||

|
||
|
||
### 3. Отзовите договор
|
||
|
||
В разделе **Alfa API** будет отображаться подписанный вами договор на информационно–технологическое взаимодействие посредством Alfa API. Для отзыва договора необходимо нажать на кнопку **Отозвать**.
|
||

|
||
|
||
Подтвердите своё намерение, нажав на кнопку **Да, расторгнуть**.
|
||

|
||
|
||
### 4. Подпишите уведомление
|
||
|
||
Внимательно ознакомьтесь с текстом уведомления. Нажмите на кнопку **Подписать уведомление**.
|
||

|
||
|
||
Далее на странице введите полученный на телефон otp-ĸод (sms, push).
|
||

|
||
|
||
Договор отозван.
|
||

|
||
|
||
### 5. Просмотрите отозванный договор
|
||
|
||
Для просмотра отозванного договора необходимо выбрать вкладку **Отозванные согласия**.
|
||

|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- ← [Подписание договора](/products/alfa-api/documentation/articles/connection/articles/onboarding/onboarding)
|
||
- → [Client ID](/products/alfa-api/documentation/articles/connection/articles/clientid/clientid)
|
||
|
||
]]>
|
||
</contract_termination_md>
|
||
<how_to_connect_md>
|
||
<, оформить [расчётно-кассовое обслуживание](https://alfabank.ru/sme/) и подключить [Альфа-Бизнес](https://alfabank.ru/corporate/rko/internet-bank/#form).
|
||
|
||
1. **Подпишите договор**
|
||
[Подпишите договор](https://developers.alfabank.ru/products/alfa-api/documentation/articles/connection/articles/onboarding/onboarding).
|
||
|
||
Комиссия за подключение и использование не взимается. Вопросы по заключению договора можно направлять на почту [alfa_api@alfabank.ru](https://developers.alfabank.rumailto:alfa_api@alfabank.ru).
|
||
|
||
2. **Проверьте тестовую интеграцию**
|
||
Получите тестовые учётные данные и настройте тестовую интеграцию [на Портале разработчика](https://developers.alfabank.ru/products/alfa-api/documentation/articles/selfservice/articles/test/test), реализуйте и протестируйте аутентификацию в Alfa ID и вызов методов Alfa API [в песочнице](https://developers.alfabank.ru/products/alfa-api/documentation/articles/sandbox/sandbox).
|
||
|
||
3. **Подготовьтесь к промышленной интеграции**
|
||
Создайте интеграцию в проме, выпустите TLS-сертификат и `client_secret` . Подробнее [в инструкции](https://developers.alfabank.ru/products/alfa-api/documentation/articles/selfservice/articles/prod/prod).
|
||
|
||
4. **Используйте Alfa API**
|
||
|
||
Если вы ещё не являетесь клиентом Альфа-Банка, то для подключения к Alfa API вам необходимо открыть [счёт](https://alfabank.ru/sme/quick/docstariffs/), оформить [расчётно-кассовое обслуживание](https://alfabank.ru/sme/) и подключить [Альфа-Бизнес](https://alfabank.ru/corporate/rko/internet-bank/#form).
|
||
|
||
---
|
||
[← Сертификаты для Linux](https://developers.alfabank.ru/products/alfa-api/documentation/articles/specification/articles/certificate/articles/linux/linux) [← Подписание договора](https://developers.alfabank.ru/products/alfa-api/documentation/articles/connection/articles/onboarding/onboarding)
|
||
|
||
]]>
|
||
</how_to_connect_md>
|
||
<tls_cert_md>
|
||
<.
|
||
|
||
> **Внимание**
|
||
> Данный файл уже содержит все необходимые атрибуты и не требует внесения изменений. Все остальные параметры будут введены вручную через терминал в процессе генерации закрытого ключа и запроса на сертификат.
|
||
|
||
> **Важно**
|
||
> Если возникает ошибка `object identifier routines:OBJ_create:oid exists`, необходимо закомментировать строку с объявлением этого OID в начале файла: `INNLE=1.2.643.100.4`.
|
||
|
||
### 2. Сгенерируйте закрытый ключ
|
||
|
||
1. Откройте терминал и перейдите в папку с файлом. Если это «Загрузки»:
|
||
`cd ~/Downloads`
|
||
2. Убедитесь, что файл на месте командой `ls`.
|
||
3. Сгенерируйте закрытый ключ:
|
||
`openssl genrsa -des3 -out Company.key 2048`
|
||
4. Задайте пароль для ключа (**PEM pass phrase**) и запомните его.
|
||
5. В папке появится файл `Company.key`.
|
||
|
||
> **Рекомендация для Mac OS**
|
||
> Введите дважды пароль от вашего Mac OS, когда терминал запросит подтверждение действий.
|
||
|
||
### 3. Сгенерируйте запрос на сертификат (CSR)
|
||
|
||
1. Введите команду:
|
||
`openssl req -utf8 -config openssl_INNLE.cnf -key Company.key -new -sha256 -out Company.csr`
|
||
2. Атрибут `CLIENT_ID`, а также поля `An optional company name` и `A challenge password` являются опциональными (можно оставить пустыми).
|
||
3. Введите данные организации (название, ФИО, ИНН), когда терминал их запросит.
|
||
|
||
> **Рекомендации для заполнения полей**
|
||
> Поля `OrganizationName` и `CommonName` можно заполнять транслитом или кириллицей (UTF-8).
|
||
> **ИНН:** строго 10 цифр для ЮЛ и 12 цифр для ИП (без пробелов).
|
||
> Поля `CountryName` и `INNLE` формируют имя профиля в LDAP и должны быть точными.
|
||
|
||
### 4. Проверьте атрибуты в subject
|
||
|
||
Проверьте созданный запрос командой:
|
||
`openssl req -config openssl_INNLE.cnf -noout -text -in Company.csr`
|
||
|
||
**Пример корректного ответа:**
|
||
|
||
```text
|
||
Subject: C=RU, L=Moscow, O=Company Name, CN=Ivanov Ivan Ivanovich/emailAddress=example@company.ru/INNLE=01234567890/CLIENT_ID=b95e04ed-91fe-430a-a101-894f06f3ab2a
|
||
```
|
||
|
||
### 5. Отправьте запрос в Банк
|
||
|
||
Отправьте файл `Company.csr` на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru).
|
||
|
||
- **Тема:** «Запрос на сертификат».
|
||
- **Отправитель:** почта, указанная в Договоре.
|
||
- **Имя файла:** название организации на латинице.
|
||
- **В письме:** укажите e-mail для уведомлений об истечении срока сертификата.
|
||
|
||
> **Важно!** Никому и никогда не передавайте файл закрытого ключа (`.key`).
|
||
|
||
### 6. Получите сертификат
|
||
|
||
Банк пришлет сертификат с адреса `alfa_api@alfabank.ru`.
|
||
|
||
- **Срок действия:** 375 дней. По истечении нужно выпустить новый.
|
||
|
||
### 7. Сборка файла контейнера pfx
|
||
|
||
Для установки в систему соберите контейнер командой:
|
||
`openssl pkcs12 -export -out Company.pfx -inkey Company.key -in Company.cer -certfile keys\root_apica_2022.cer -certfile keys\sub_root_apica_2022.cer`
|
||
|
||
### 8. Действия при компрометации
|
||
|
||
Если закрытый ключ был украден или утерян, немедленно напишите на [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru) для отзыва и перевыпуска.
|
||
|
||
---
|
||
|
||
## Требования к сертификату
|
||
|
||
### Global Subject (Обязательные поля)
|
||
|
||
| Атрибут | Значение |
|
||
| :------------------- | :--------------------------------- |
|
||
| **CountryName** | Код страны (ISO). Для России: `RU` |
|
||
| **OrganizationName** | Название организации |
|
||
| **CommonName** | ФИО представителя организации |
|
||
| **EmailAddress** | Служебный адрес для связи |
|
||
|
||
### Variable Subject (Зависит от формы собственности)
|
||
|
||
| Атрибут | Значение |
|
||
| :------------------------ | :------------------------------------ |
|
||
| Для ЮЛ в России | `INNLE = 1.2.643.100.4` |
|
||
| Для иностранных партнёров | `FOREIGNID = 1.3.6.1.4.1.16745.100.1` |
|
||
| Идентификатор сервиса | `CLIENT_ID = 1.3.6.1.4.1.16745.100.2` |
|
||
|
||
---
|
||
|
||
## Настройка UTF-8 для кириллицы
|
||
|
||
### Windows
|
||
|
||
1. **Панель управления** > **Часы и регион** > **Регион**.
|
||
2. Вкладка **Дополнительно** > **Изменить язык системы**.
|
||
3. Включите чекбокс: «Бета-версия: Использовать Юникод (UTF-8) для поддержки языка во всем мире».
|
||
4. Перезагрузите ПК.
|
||
|
||
### MacOS
|
||
|
||
1. Откройте **Терминал**.
|
||
2. В меню: **Terminal** > **Настройки**.
|
||
3. Вкладка **Кодировки**: убедитесь, что выбрана «Unicode (UTF-8)».
|
||
|
||
---
|
||
|
||
## Использование сертификата
|
||
|
||
Использование TLS-сертификата обязательно для установки mTLS-соединения. Пример запроса через **cURL**:
|
||
|
||
```bash
|
||
curl -X GET https://baas.alfabank.ru/api/endpoint \
|
||
-v --cert Company.cer \
|
||
--key Company.key \
|
||
-H 'Accept: application/json' \
|
||
-H 'Authorization: Bearer {access-token}' \
|
||
-H 'Content-Type: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Повторный выпуск сертификата
|
||
|
||
За **1 месяц** до истечения срока вам придет уведомление. Необходимо сформировать новый запрос по инструкции выше.
|
||
|
||
> **Внимание**
|
||
> При перевыпуске рекомендуем:
|
||
>
|
||
> - Установить защиту на удаление закрытого ключа.
|
||
> - Перезаписать старый закрытый ключ на новый.
|
||
|
||
_В случае утери сертификата или несвоевременного обновления, ответственность за простой API возлагается на сторону клиента._
|
||
|
||
---
|
||
|
||
← [Client ID](/products/alfa-api/documentation/articles/connection/articles/clientid/clientid) | [Client secret](/products/alfa-api/documentation/articles/connection/articles/clientsecret/clientsecret) →
|
||
|
||
]]>
|
||
</tls_cert_md>
|
||
</Подключение_к_Alfa_API>
|
||
<Портал_разработчика>
|
||
<access_rights_md>
|
||
<![CDATA[
|
||
# Права доступа
|
||
|
||
По умолчанию доступ к Порталу разработчика имеет только руководитель вашей организации.
|
||
|
||
Для предоставления доступа к Порталу разработчика другим пользователям руководителю необходимо в **Альфа-Бизнес** создать роль с правами на управление настройками Alfa API и присвоить её пользователю.
|
||
|
||
> **Внимание**
|
||
> В случае если у вас ИП, права разработчика можно назначить:
|
||
>
|
||
> - от имени самого индивидуального предпринимателя с ролью «Руководитель»;
|
||
> - от имени любого другого сотрудника ИП с ролью «Руководитель». В таком случае потребуется подтверждение назначения от владельца ИП. Подробнее в инструкции ниже.
|
||
|
||
---
|
||
|
||
## Инструкция по настройке прав
|
||
|
||
### Шаг 1. Перейдите в раздел «Пользователи и роли»
|
||
|
||
1. На главном экране Альфа-Бизнес перейдите в настройки компании.
|
||
2. В разделе **Моя компания** выберите карточку **Пользователи и роли**.
|
||
|
||
### Шаг 2. Создайте новую роль
|
||
|
||
> **Внимание:** Если ранее вы уже создавали роль с правами на управление Alfa API, этот шаг можно пропустить.
|
||
|
||
1. Нажмите **Создать роль**.
|
||
2. Укажите название роли.
|
||
3. Настройте права: новую роль рекомендуется создавать на основании прав руководителя, сбросив лишнее.
|
||
4. Нажмите **Снять все**, чтобы сбросить текущие права.
|
||
5. В разделе **Обслуживание бизнеса** выберите **Alfa API** и укажите необходимые полномочия.
|
||
6. При необходимости добавьте права из других разделов.
|
||
7. Нажмите **Создать роль** для сохранения.
|
||
|
||
### Шаг 3. Назначьте роль разработчику
|
||
|
||
> **Примечание:** Если пользователь еще не подключен к компании, нажмите «Подключить пользователя», заполните данные и выберите созданную роль.
|
||
|
||
1. В разделе **Пользователи** нажмите на три точки справа от нужного сотрудника.
|
||
2. Выберите **Сменить роль**.
|
||
3. В открывшейся форме выберите созданную роль и нажмите **Сменить**.
|
||
4. Подтвердите смену роли кодом из СМС.
|
||
- _Для ИП:_ Если роль назначает не сам владелец, будет создано заявление, которое владелец должен подписать в своем личном кабинете.
|
||
5. После успешного назначения статус пользователя изменится на **Подключён**.
|
||
|
||
---
|
||
|
||
## Требования к полномочиям для корректной авторизации
|
||
|
||
Для корректной работы H2H-интеграций ключ доступа (`access_token` / `API Key`) должен получать пользователь, у которого есть полномочия на использование выбранных сервисов и продуктов.
|
||
|
||
### Особенности способов авторизации:
|
||
|
||
- **При использовании ACF H2H:** Авторизацию в Alfa ID должен проходить пользователь, у которого в Альфа-Бизнес настроены соответствующие полномочия на использование выбранных `scopes`. Если вы хотите использовать учетные данные разработчика, руководитель должен выдать ему соответствующие права в разделе «Пользователи и роли».
|
||
- **При использовании авторизации по API Key:** Выпускать ключ должен пользователь, имеющий права на выбранные продукты. Если у пользователя нет прав (например, на просмотр выписок), то выпущенный им `API Key` не будет работать для этого сервиса.
|
||
|
||
**Пример:**
|
||
Если вы выдали разработчику права на _редактирование интеграций_, но не дали прав на _просмотр выписки_, то созданный им `API Key` для сервиса выписок (`transactions`) работать не будет. Ключ должен выпускать либо руководитель, либо сотрудник с полным доступом к нужным данным.
|
||
|
||
]]>
|
||
</access_rights_md>
|
||
<api_key_managment_md>
|
||
<.
|
||
|
||
Для настройки авторизации с помощью `API Key` вам необходимо выпустить ключ для H2H-интеграции, скопировать его и вручную добавить в свои рабочие инструменты. Значение ключа передаётся в заголовке: `Authorization: ApiKey {API Key}`:
|
||
|
||
### Пример запроса с использованием API Key
|
||
|
||
```bash
|
||
curl -X GET https://baas.alfabank.ru/api/endpoint \
|
||
-H 'Authorization: ApiKey akytnps_YfSpCMb0_Uat5NX4p3c7A50hf27Qapk7nXYQ81h659tSwKml87xA5IhpBXXnpKSVypV60dI2l_2918090335' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Выпуск API Key для прома
|
||
|
||
Перед выпуском `API Key` для промышленной H2H-интеграции рекомендуется сначала пройти описанные ниже шаги для тестовой H2H-интеграции в рабочей среде «Песочница» и протестировать ключ, и только после этого приступать к выпуску ключа для промышленной H2H-интеграции.
|
||
|
||
> **Важно**
|
||
> Выпускать `API Key` необходимо пользователю, у которого в Альфа-Бизнес настроены соответствующие полномочия на использование выбранных при выпуске ключа продуктов и сервисов. Если у пользователя отсутствуют эти полномочия, руководителю организации необходимо выдать их пользователю в Альфа-Бизнес (в разделе **Профиль** – **Пользователи и роли**) или выпустить ключ самому.
|
||
|
||
### Шаг 1. Нажмите "Выпустить API Key"
|
||
|
||
Нажмите **Выпустить ключ** в правой части карточки H2H-интеграции.
|
||

|
||
|
||
### Шаг 2. Заполните данные для API Key
|
||
|
||
Укажите IP-адреса, с которых будут отправляться запросы с использованием `API Key`. Отправка запросов с использованием `API Key` будет доступна только с указанных IP-адресов.
|
||
|
||
Для одного API Key вы можете указать не более 20 IP-адресов.
|
||

|
||
|
||
Укажите сервисы и продукты, доступ к которым вы хотите получать с помощью `API Key`. Вам будут доступны сервисы и продукты из набора `scopes` редактируемой H2H-интеграции, доступ к которым возможен с помощью `API Key`.
|
||

|
||
Далее проверьте и сохраните внесённые изменения.
|
||
|
||
### Шаг 3. Скопируйте и сохраните API Key
|
||
|
||
После завершения выпуска `API Key` вы получите уведомление. Скопируйте его и вручную добавьте в ваши рабочие инструменты так, чтобы при отправке запросов по H2H-интеграции в запросах передавался заголовок `Authorization: ApiKey {API Key}`.
|
||

|
||
|
||
**Срок действия:** Срок действия `API Key` неограничен, но ключ будет автоматически отозван, если с момента последнего запроса прошло более **30 дней**.
|
||
|
||
В случае потери данных либо компрометации ключа вы можете перевыпустить его. Также вы всегда можете отозвать `API Key`, если больше не хотите использовать упрощённый способ авторизации.
|
||
|
||
---
|
||
|
||
## Перевыпуск API Key
|
||
|
||
### Шаг 1. Нажмите "Перевыпустить API Key"
|
||
|
||
Нажмите на три точки в правом верхнем углу карточки H2H-интеграции и выберите **Перевыпустить API Key**.
|
||

|
||
|
||
### Шаг 2. Отредактируйте данные для API Key
|
||
|
||
При необходимости отредактируйте данные для `API Key`.
|
||

|
||
Далее проверьте внесённые изменения и нажмите «Перевыпустить».
|
||
|
||
### Шаг 3. Скопируйте и сохраните API Key
|
||
|
||
После перевыпуска `API Key` вы получите уведомление. Вам будет необходимо скопировать его и заменить в ваших рабочих инструментах. При перевыпуске `API Key` старый ключ, привязанный к этой интеграции, будет автоматически отозван.
|
||
|
||
Срок действия `API Key` неограничен, но ключ будет автоматически отозван, если с момента последнего запроса прошло более 30 дней.
|
||

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

|
||

|
||
|
||
В результате отзыва ключа упрощённая авторизация будет недоступна. При необходимости вы всегда можете выпустить новый `API Key`.
|
||
|
||
]]>
|
||
</api_key_managment_md>
|
||
<creating_prod_integration_md>
|
||
<
|
||
|
||
---
|
||
|
||
### Шаг 2. Выберите тип интеграции
|
||
|
||

|
||
|
||
---
|
||
|
||
### Шаг 3. Заполните основную информацию
|
||
|
||
Укажите название интеграции (рекомендуется использовать то же название, что и у соответствующей тестовой интеграции), `redirect_uri` и тип клиентов (выбор типа клиентов доступен только для партнёрских интеграций).
|
||
|
||
В одной интеграции вы можете указать не более 20 `redirect_uri`.
|
||
|
||

|
||
|
||
---
|
||
|
||
### Шаг 4. Выберите сервисы и продукты
|
||
|
||
> **Важно**
|
||
> Вам будут доступны сервисы и продукты, по которым при тестировании было выполнено не менее одного успешного запроса в песочнице.
|
||
|
||

|
||
|
||
---
|
||
|
||
### Шаг 5. Завершите создание промышленной интеграции
|
||
|
||
Проверьте параметры интеграции перед её сохранением.
|
||
|
||
Для создания интеграции потребуется некоторое время. После завершения создания промышленной интеграции вы получите уведомление:
|
||
|
||

|
||
|
||
---
|
||
|
||
### Шаг 6. Разблокируйте промышленную интеграцию
|
||
|
||
После создания интеграция отображается в статусе **«Заблокирована»**.
|
||
|
||
Для разблокирования интеграции создайте запрос на TLS-сертификат и отправьте его на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru). Подробнее [на странице TLS-сертификат](/products/alfa-api/documentation/articles/connection/articles/tls/tls).
|
||
|
||
Если вы уже выпускали сертификат, повторно выпускать его не нужно. Вместо этого необходимо сообщить о готовности к промышленной интеграции на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru). После этого интеграция будет разблокирована и перейдёт в статус **«Новая»**.
|
||
|
||
---
|
||
|
||
### Шаг 7. Активируйте промышленную интеграцию
|
||
|
||
Чтобы активировать интеграцию, необходимо получить `client_secret`. Для этого нажмите на иконку в карточке интеграции:
|
||
|
||

|
||
|
||
Скопируйте `client_secret` и добавьте его в ваши рабочие инструменты. Получить его можно также с помощью [метода](/products/alfa-api/documentation/articles/connection/articles/clientsecret/clientsecret).
|
||
|
||

|
||
|
||
После того как вы получите `client_secret`, интеграция перейдет в статус **«Активна»** и будет доступна к использованию в промышленной среде.
|
||
|
||
---
|
||
|
||
## Подключение новых продуктов к текущей промышленной интеграции
|
||
|
||
Для подключения новых продуктов и сервисов к промышленной интеграции сначала добавьте новые `scopes` в режиме редактирования тестовой интеграции и протестируйте их в песочнице.
|
||
|
||
После успешного тестирования отредактируйте промышленную интеграцию, добавив новые `scopes`. После этого новые продукты или сервисы будут доступны в промышленной среде.
|
||
|
||
]]>
|
||
</creating_prod_integration_md>
|
||
<testing_md>
|
||
<
|
||
|
||
1. **Вкладка «Информация»**:
|
||
- При необходимости отредактируйте название интеграции.
|
||
- Укажите необходимые `redirect_uri` для переадресации пользователя после авторизации через Alfa ID.
|
||
- _Пример redirect_uri:_ [https://romashka.ru](https://romashka.ru).
|
||
- **Важно:** В одной интеграции вы можете указать не более 20 `redirect_uri`.
|
||
|
||

|
||
|
||
2. **Вкладка «Scopes»**:
|
||
- Выберите продукты и сервисы, которые вы хотите подключить в Alfa API.
|
||
- Если вы не нашли нужные `scopes`, напишите на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru).
|
||
|
||

|
||
|
||
3. **Сохранение**:
|
||
- После завершения редактирования тестовой интеграции необходимо сохранить внесённые изменения.
|
||
|
||

|
||
|
||
---
|
||
|
||
### Шаг 2. Протестируйте интеграцию
|
||
|
||
Выполните запросы по выбранным `scopes` в тестовой среде в соответствии с [инструкцией по тестированию](/products/alfa-api/documentation/articles/sandbox/sandbox), используя учётные данные тестовой интеграции.
|
||
|
||
После успешного тестирования в песочнице вам станет доступно создание промышленной интеграции со `scopes`, по которым было выполнено не менее одного успешного запроса в песочнице.
|
||
|
||
---
|
||
|
||
### Дополнительная информация
|
||
|
||
Вы можете использовать текущие интеграции в песочнице для тестирования новых сервисов и продуктов, добавляя новые `scopes` в режиме редактирования тестовой интеграции. После успешного тестирования в песочнице вы сможете добавить новые `scopes` в промышленную интеграцию и использовать их в своих сервисах.
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [← Права доступа](/products/alfa-api/documentation/articles/selfservice/articles/access-rights/access-rights)
|
||
- [Создание интеграции в проме →](/products/alfa-api/documentation/articles/selfservice/articles/prod/prod)
|
||
|
||
]]>
|
||
</testing_md>
|
||
<what_is_for_md>
|
||
<.
|
||
|
||
> **Внимание**
|
||
> Для работы с порталом вашему разработчику необходимо получить права на управление интеграциями Alfa API. Как их назначить, описано [в статье Права доступа](/products/alfa-api/documentation/articles/selfservice/articles/access-rights/access-rights).
|
||
|
||
---
|
||
|
||
## Запуск первой промышленной интеграции
|
||
|
||
1. **Войдите на Портал разработчика**
|
||
Вход осуществляется через Портал документации по кнопке **Войти** и возможен только под учётной записью сотрудника организации, подключённой к Alfa API.
|
||

|
||
|
||
2. **Проверьте тестовую интеграцию**
|
||
[Как настроить интеграцию в песочнице и протестировать её](/products/alfa-api/documentation/articles/selfservice/articles/test/test)
|
||
|
||
3. **Создайте интеграцию в проме**
|
||
[Как создать промышленную интеграцию](/products/alfa-api/documentation/articles/selfservice/articles/prod/prod)
|
||
|
||
4. **Выпустите промышленный TLS-сертификат**
|
||
[Как выпустить TLS-сертификат](/products/alfa-api/documentation/articles/connection/articles/tls/tls)
|
||
|
||
5. **Используйте промышленную интеграцию в своих сервисах**
|
||
|
||
При необходимости вы можете подключать новые продукты и сервисы к текущей интеграции и создавать новые интеграции на Портале разработчика. Также вы можете настроить упрощённую авторизацию по H2H-интеграциям с помощью [API Key](/products/alfa-api/documentation/articles/selfservice/articles/api-key/api-key).
|
||
|
||
---
|
||
|
||
## Выбор рабочей среды
|
||
|
||
На Портале разработчика предусмотрены две рабочие среды:
|
||
|
||
- **«Песочница»** — для редактирования тестовых интеграций.
|
||
- **«Пром»** — для управления промышленными интеграциями.
|
||
|
||
Выбор рабочей среды осуществляется с помощью переключателя в правом верхнем углу портала.
|
||
|
||

|
||
|
||
---
|
||
|
||
## Работа с группой компаний
|
||
|
||
Пользователи с доступом к интеграциям нескольких компаний могут работать в двух режимах: группы компаний или одной выбранной компании. Это позволяет работать с интеграциями всех доступных компаний в едином окне.
|
||
|
||
### Как переключить режим:
|
||
|
||
1. Перейдите в профиль пользователя в правом верхнем углу Портала разработчика.
|
||

|
||
|
||
2. Выберите режим отображения компаний:
|
||
- Карточка **Все компании** — чтобы работать с интеграциями всех компаний одновременно. В этом режиме доступна единая таблица со всеми интеграциями.
|
||
- Карточка **конкретной компании** — чтобы работать только с интеграциями выбранной организации.
|
||
|
||

|
||

|
||
|
||
---
|
||
|
||
**Далее:** [Права доступа](/products/alfa-api/documentation/articles/selfservice/articles/access-rights/access-rights) | [Client secret](/products/alfa-api/documentation/articles/connection/articles/clientsecret/clientsecret)
|
||
|
||
]]>
|
||
</what_is_for_md>
|
||
</Портал_разработчика>
|
||
<продукты_и_сервисы>
|
||
<Номинальные_счета>
|
||
<get_nominal_accounts_md>
|
||
< |
|
||
| **Accept** | `string` (required) | application/json |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/api/na/jp/v1/nominal-accounts' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 (OK)
|
||
|
||
#### Пример ответа
|
||
|
||
```json
|
||
[
|
||
{
|
||
"accountNumber": "40817810306050000000",
|
||
"isActive": true
|
||
}
|
||
]
|
||
```
|
||
|
||
#### Тело ответа (BODY)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------------- | :------------------- | :------------------------------------------------------------------------------------------------------------- |
|
||
| **accountNumber** | `string` (required) | Номер номинального счёта |
|
||
| **isActive** | `boolean` (required) | Статус активности номинального счёта. Принимает значения:<br>• `true` — активен;<br>• `false` — деактивирован. |
|
||
|
||
---
|
||
|
||
### Ошибки
|
||
|
||
#### 400 (Bad Request)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :------------------ | :------------------------------------------------------------------------- |
|
||
| **error** | `string` (required) | Код ошибки. Значения:<br>• `invalid_request` — неверные параметры запроса. |
|
||
| **error_description** | `string` (optional) | Описание ошибки. |
|
||
|
||
#### 401 (Unauthorized)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :------------------ | :----------------------------------------------------------------------------------------------- |
|
||
| **error** | `string` (required) | Код ошибки. Значения:<br>• `invalid_token` — токен просрочен, отозван или имеет неверный формат. |
|
||
| **error_description** | `string` (optional) | Описание ошибки. |
|
||
|
||
#### 403 (Forbidden)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :------------------ | :--------------------------------------------------------------------------------------------------- |
|
||
| **error** | `string` (required) | Код ошибки. Значения:<br>• `insufficient_scope` — недостаточно прав (несоответствие настроек scope). |
|
||
| **error_description** | `string` (optional) | Описание ошибки. |
|
||
|
||
#### 404 (Not Found)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :------------------ | :-------------------------------------------------------------------------------- |
|
||
| **error** | `string` (required) | Код ошибки. Значения:<br>• `unknown_endpoint` — эндпоинт не найден или неактивен. |
|
||
| **error_description** | `string` (optional) | Описание ошибки. |
|
||
|
||
#### 429 (Too Many Requests)
|
||
|
||
_Нет тела ответа._
|
||
|
||
#### 500 (Internal Server Error)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :------------------ | :----------------------------------------------------------------------- |
|
||
| **error** | `string` (required) | Код ошибки. Значения:<br>• `internal_error` — внутренняя ошибка сервиса. |
|
||
| **error_description** | `string` (optional) | Описание ошибки. |
|
||
|
||
#### 503 (Service Unavailable)
|
||
|
||
_Нет тела ответа._
|
||
|
||
---
|
||
|
||
## Навигация
|
||
|
||
- ← [Как сформировать подпись](/products/alfa-api/documentation/articles/nominal-accounts/articles/signature/signature)
|
||
- → [Контрагенты: Как это работает](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/intro/intro)
|
||
|
||
]]>
|
||
</get_nominal_accounts_md>
|
||
<how_to_encrypt_your_card_number_eg_cardtoken_md>
|
||
<![CDATA[
|
||
Вот преобразованный контур документа в формате Markdown. Я сохранил структуру, технические подробности и примеры кода, очистив их от лишней разметки и служебных скриптов.
|
||
|
||
---
|
||
|
||
# Номинальные счета / Как зашифровать номер карты
|
||
|
||
**H2H**
|
||
|
||
## Как зашифровать номер карты
|
||
|
||
При проведении выплат по номеру карты в поле `pan` необходимо передавать токен номера карты. Для этого номер карты необходимо зашифровать с помощью алгоритма `RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING`.
|
||
|
||
### Примеры шифрования
|
||
|
||
#### Python с использованием Crypto.Cipher в PyCryptodome
|
||
```python
|
||
import sys
|
||
from Crypto.Hash import SHA256, SHA1
|
||
from Crypto.PublicKey import RSA
|
||
from Crypto.Cipher import PKCS1_OAEP
|
||
from base64 import b64decode, b64encode
|
||
from Crypto.Signature import pss
|
||
|
||
pubkey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwj9k2lFfc/EE2zYdRoRLZF5B42V6n8OHKfxLBLMk/0qpP2ZEYYoCqgbD9xsmLbQMTCxQ8JWj/V08JGpFjuNKJ2hRfRzLUfjTm5ReZJVPDhJa4B0QtUEvCS2R4aMqMpnQ1a1aywGAJoM5ift0apCNGKuZZYrGuFkQXeBw85lSYYNwrVmNUm55RI+tcb'
|
||
msg = "4779642610000010"
|
||
keyDER = b64decode(pubkey)
|
||
keyPub = RSA.importKey(keyDER)
|
||
cipher = PKCS1_OAEP.new(keyPub, SHA256, mgfunc=lambda x,y: pss.MGF1(x,y, SHA1))
|
||
cipher_text = cipher.encrypt(msg.encode())
|
||
encodedCard = b64encode(cipher_text)
|
||
sys.stdout.buffer.write(encodedCard)
|
||
```
|
||
|
||
#### C# с использованием библиотеки Chilkat .NET for the 4.8.* Frameworks
|
||
```csharp
|
||
Chilkat.Rsa rsa = new Chilkat.Rsa();
|
||
Chilkat.PublicKey pubkey = new Chilkat.PublicKey();
|
||
pubkey.LoadFromFile("C://cardbankkey-sandbox.pub");
|
||
string cardNumber = "4779642610000010";
|
||
rsa.ImportPublicKeyObj(pubkey);
|
||
rsa.OaepPadding = true;
|
||
rsa.OaepHash = "sha256";
|
||
string encCard = rsa.EncryptStringENC(cardNumber, false);
|
||
Console.WriteLine(encCard);
|
||
```
|
||
|
||
#### Java с базовыми библиотеками crypto
|
||
```java
|
||
import lombok.SneakyThrows;
|
||
import ru.alfabank.csp.api.decryptor.properties.CryptoServiceProperties;
|
||
import javax.crypto.Cipher;
|
||
import java.security.KeyStore;
|
||
import java.security.KeyStoreException;
|
||
import java.security.PublicKey;
|
||
|
||
public class CryptoServiceImpl {
|
||
private KeyStore keyStore;
|
||
private CryptoServiceProperties properties;
|
||
|
||
private PublicKey getPublicKey() throws KeyStoreException {
|
||
return keyStore.getCertificate(properties.getAlias()).getPublicKey();
|
||
}
|
||
|
||
@SneakyThrows
|
||
public byte[] encrypt(byte[] data) {
|
||
var rsaCipher = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING");
|
||
rsaCipher.init(Cipher.ENCRYPT_MODE, getPublicKey());
|
||
return rsaCipher.doFinal(data);
|
||
}
|
||
}
|
||
```
|
||
|
||
#### PHP
|
||
```php
|
||
public function createCypher(string $pan): FunctionResult {
|
||
$publicKey = PublicKeyLoader::load(file_get_contents($this->cardBankKey));
|
||
$algo = $publicKey->withPadding(RSA::ENCRYPTION_OAEP)->withHash('sha256')->withMGFHash('sha1');
|
||
return FunctionResult::success(base64_encode($algo->encrypt($pan)));
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Навигация
|
||
* ← [Введение](/products/alfa-api/documentation/articles/nominal-accounts/articles/intro/intro)
|
||
* → [Как сформировать подпись](/products/alfa-api/documentation/articles/nominal-accounts/articles/signature/signature)
|
||
|
||
]]>
|
||
</how_to_encrypt_your_card_number_eg_cardtoken_md>
|
||
<intro_md>
|
||
<, после чего может совершать операции с денежными средствами номинального счёта:
|
||
|
||
- Идентифицировать поступаемые на номинальный счёт денежные средства — раздел [Идентификация пополнений номинального счёта](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/intro/intro).
|
||
- Осуществлять выплаты с номинального счёта удобным ему способом:
|
||
- [Безопасные сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/intro/intro): деньги перейдут получателю только после выполнения условий сделки.
|
||
- [Прямые выплаты](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/intro/intro): выплаты без создания сделки – с биллингом (например, вывод средств бенефициара или уплата налога за исполнителя), или без биллинга (например, перевод зарегистрированному контрагенту).
|
||
|
||
> **Важно**
|
||
> Для работы с сервисом необходимо использовать электронную подпись. Допускается использование сертификата, выпущенного с помощью [сервиса Электронная подпись](/products/alfa-api/documentation/articles/signature/articles/intro/intro), или сертификата УКЭП, выпущенного в любом аккредитованном УЦ. Процесс формирования подписи описан [в статье Как сформировать подпись](/products/alfa-api/documentation/articles/nominal-accounts/articles/signature/signature).
|
||
|
||
### Термины и определения
|
||
|
||
**Номинальный счёт** — это специальный банковский счёт, открытый владельцем номинального счёта для совершения операций с денежными средствами, права на которые принадлежат другому лицу – бенефициару.
|
||
|
||
**Владелец номинального счёта (клиент банка)** — лицо, которое открыло номинальный счёт и имеет право распоряжаться денежными средствами, получать информацию о движении денежных средств и закрыть номинальный счёт.
|
||
|
||
**Бенефициар** — лицо, которому принадлежат права на денежные средства, находящиеся на номинальном счёте. У одного номинального счёта может быть как один, так и несколько бенефициаров, но каждый из них имеет права только на свою часть денежных средств.
|
||
|
||
**Универсальный реципиент** — лицо, которое не является бенефициаром и не имеет права на денежные средства, находящиеся на номинальном счёте. Может выступать только в качестве реципиента (получателя) в безопасных сделках и при выплатах с номинального счёта.
|
||
|
||
---
|
||
|
||
### Навигация
|
||
|
||
- ← [Получение подписанного реестра](/products/alfa-api/documentation/articles/factoring/articles/documents/v1/documents)
|
||
- → [Как зашифровать номер карты](/products/alfa-api/documentation/articles/nominal-accounts/articles/cardtoken/cardtoken)
|
||
|
||
---
|
||
|
||
_Медиа-материалы:_
|
||
|
||
- [Видео-презентация сервиса](/assets/developers-portal.docs.alfa-api/articles/nominal-accounts/articles/intro/files/nominal-accounts.mp4)
|
||
|
||
]]>
|
||
</intro_md>
|
||
<signature_md>
|
||
<.
|
||
|
||
Для подписания алгоритмом RSA необходимо выполнить следующие шаги:
|
||
|
||
#### 1. Подготовьте данные для подписи в формате JSON
|
||
|
||
Подписываться должен весь блок данных тела запроса, исключая `digestSignatures`.
|
||
|
||
#### 2. Выполните каноникализацию JSON-данных
|
||
|
||
Используйте правила [RFC 8785](https://datatracker.ietf.org/doc/html/rfc8785).
|
||
|
||
**Пример каноникализированного JSON-сообщения:**
|
||
|
||
```json
|
||
{
|
||
"company": { "accountNumber": "40702810201400022055" },
|
||
"externalId": "eb19f3ef-ca6a-4f84-a28f-c6e7b469b486",
|
||
"requisite": [
|
||
{
|
||
"payoutId": "b766f52d-f6e6-4a47-bd71-ab332bd0d314",
|
||
"payoutRequisite": {
|
||
"byPan": {
|
||
"comment": "Курьерские услуги за период с 1.12.2020-20.12.2020",
|
||
"pan": "JSv++SDzmKNPIBrLc0G2k3W8lx6DjsHwSFptBCGvUAkq7hVe7KWeACIjjTOAeFKujHQguSIKcqmX93rakldGsTa6c5iZTEAsyhBp5dcPLti8F9x90iXNvCUgvPEXGclqBNvTCuVGaNbmAWrGbogHTn4LKmxxrmzeMIL+e51/YFdTpTnJ384xhiYzAzX4XxFY2CsgNOlyN5xCesOjgeYz+UBlW0MCcY9c8AJBh7+DwU09+zlS0GNtpti7GoETeQrjUv6aPqqu2IMGfO116/xVheUdwLNhcDCT2uvbRpmk9B7pMuLuekGhaA1odvoTghjvY1d1RWnjyO4ZrHpBMpVesg=="
|
||
},
|
||
"payoutTotalAmount": "24.00",
|
||
"payoutType": "CARD"
|
||
},
|
||
"selfemployed": {
|
||
"name": "Диогенович",
|
||
"patronymic": "Камень",
|
||
"surname": "Безукоризненный"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
#### 3. Сформируйте контейнер электронной подписи в формате PKCS#7 (CMS)
|
||
|
||
Контейнер в виде структуры `ContentInfo` должен соответствовать стандарту [RFC 5652](https://www.ietf.org/rfc/rfc5652.txt).
|
||
|
||
Для создания структуры, вычисления хэша и подписи используйте криптографические провайдеры (например, Bouncy Castle или OpenSSL).
|
||
|
||
**Технические требования:**
|
||
|
||
1. **Тип:** Рекомендуется присоединённая подпись.
|
||
2. **Формат:** [RFC 5652](https://www.ietf.org/rfc/rfc5652.txt) (PKCS#7/CMS).
|
||
3. **Алгоритм хэш-функции:** SHA-256 (OID 2.16.840.1.101.3.4.2.1).
|
||
4. **Алгоритм подписи:** `sha256WithRSAEncryption`.
|
||
|
||
Структура `SignedData`:
|
||
|
||
```asn1
|
||
SignedData ::= SEQUENCE {
|
||
version CMSVersion,
|
||
digestAlgorithms DigestAlgorithmIdentifiers,
|
||
encapContent Info EncapsulatedContentInfo,
|
||
certificates [0] IMPLICIT CertificateSet OPTIONAL,
|
||
crls [1] IMPLICIT Revocation InfoChoices OPTIONAL,
|
||
signerInfos SignerInfos
|
||
}
|
||
```
|
||
|
||
Структура `SignerInfo`:
|
||
|
||
```asn1
|
||
SignerInfo ::= SEQUENCE {
|
||
version CMSVersion,
|
||
sid SignerIdentifier,
|
||
digestAlgorithm DigestAlgorithmIdentifier,
|
||
signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,
|
||
signatureAlgorithm SignatureAlgorithmIdentifier,
|
||
signature SignatureValue,
|
||
unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL
|
||
}
|
||
```
|
||
|
||
**Обязательные атрибуты в `signedAttrs`:**
|
||
|
||
- ContentType = OID 1.2.840.113549.1.7.1
|
||
- SigningTime = OID 1.2.840.113549.1.9.5
|
||
- CMSAlgorithmProtection = OID 1.2.840.113549.1.9.52 (RFC 6211)
|
||
- messageDigest = OID 1.2.840.113549.1.9.4
|
||
|
||
_Примечание: Атрибут `unsignedAttrs` не используется._
|
||
|
||
#### 4. Закодируйте контейнер и передайте подпись в запросе
|
||
|
||
Полученный PKCS#7-контейнер закодируйте в `base64` и передайте в параметре `base64Encoded` массива `digestSignatures` в теле запроса.
|
||
|
||
---
|
||
|
||
### Примеры кода
|
||
|
||
#### Пример формирования подписи на Java
|
||
|
||
```java
|
||
@Override
|
||
public RsaSignResponse sign(RsaSignRequest request) throws Exception {
|
||
Security.addProvider(new BouncyCastleProvider());
|
||
BouncyCastleProvider provider = (BouncyCastleProvider) Security.getProvider("BC");
|
||
PrivateKey key = (PrivateKey) keyStore.getKey(KEYSTORE_ALIAS, KEYSTORE_PWD.toCharArray());
|
||
X509Certificate cert = (X509Certificate) keyStore.getCertificate(KEYSTORE_ALIAS);
|
||
CMSTypedData msg = new CMSProcessableByteArray(request.getDataToSign().getBytes());
|
||
CMSSignedDataGenerator signedDataGen = new CMSSignedDataGenerator();
|
||
X509CertificateHolder signCert = new X509CertificateHolder(cert.getEncoded());
|
||
ContentSigner signer = new JcaContentSignerBuilder("sha256WithRSAEncryption")
|
||
.setProvider(provider)
|
||
.build(key);
|
||
signedDataGen.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(
|
||
new JcaDigestCalculatorProviderBuilder().setProvider(provider).build()
|
||
).setDirectSignature(true).build(signer, signCert));
|
||
// добавляем сертификат в подпись
|
||
JcaCertStore certs = new JcaCertStore(Collections.singletonList(cert));
|
||
signedDataGen.addCertificates(certs);
|
||
CMSSignedData signedData = signedDataGen.generate(msg, true);
|
||
byte[] signatureBytes = signedData.getEncoded("DER");
|
||
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
|
||
byte[] hashedString = messageDigest.digest(request.getDataToSign().getBytes());
|
||
return new RsaSignResponse()
|
||
.base64Encoded(new String(Base64.getEncoder().encode(signatureBytes)));
|
||
}
|
||
```
|
||
|
||
#### Пример формирования подписи на PHP
|
||
|
||
```php
|
||
public function sign(string $data, string $password = null): string
|
||
{
|
||
$key = file_get_contents($this->private_key);
|
||
$cert = file_get_contents($this->certificate);
|
||
$privateKey = openssl_pkey_get_private($key, $password ?: $this->private_key_password);
|
||
$certid = openssl_x509_read($cert);
|
||
$inputTmpFile = tmpfile();
|
||
fwrite($inputTmpFile, $data);
|
||
fseek($inputTmpFile, 0);
|
||
$outputTmpFile = tmpfile();
|
||
openssl_pkcs7_sign(
|
||
stream_get_meta_data($inputTmpFile)['uri'],
|
||
stream_get_meta_data($outputTmpFile)['uri'],
|
||
$certid,
|
||
$privateKey,
|
||
[],
|
||
PKCS7_ATTACHED
|
||
);
|
||
fseek($outputTmpFile, 0);
|
||
$signature = fread($outputTmpFile, filesize(stream_get_meta_data($outputTmpFile)['uri']));
|
||
$signature = trim(explode("\n\n", $signature, 2)[1]);
|
||
fclose($inputTmpFile);
|
||
fclose($outputTmpFile);
|
||
return str_replace("\n", '', $signature);
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Подписание алгоритмом ГОСТ с использованием сертификата УКЭП
|
||
|
||
Для подписания может использоваться сертификат УКЭП, выпущенный любым аккредитованным УЦ. Если сертификат выдан уполномоченному лицу (не руководителю по уставу), дополнительно потребуется машиночитаемая доверенность (МЧД).
|
||
|
||
1. Сформируйте электронную подпись с использованием криптопровайдера **КриптоПро CSP**.
|
||
2. Закодируйте полученное значение **отсоединённой** электронной подписи в формат `base64`.
|
||
3. Передайте значение в параметре `base64Encoded` массива `digestSignatures`.
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [Как зашифровать номер карты](/products/alfa-api/documentation/articles/nominal-accounts/articles/cardtoken/cardtoken)
|
||
- [Получение списка номинальных счетов](/products/alfa-api/documentation/articles/nominal-accounts/articles/get-accounts/v1/get-accounts)
|
||
|
||
]]>
|
||
</signature_md>
|
||
<Безопасные_сделки>
|
||
<add_deal_md>
|
||
< |
|
||
| **Accept** | string | required | application/json |
|
||
| **Content-Type** | string | required | application/json |
|
||
|
||
### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------------- | :----- | :------------- | :----------------------------------------------- |
|
||
| **accountNumber** | string | required | Номер номинального счёта |
|
||
| **expireDate** | string | required | Дата истечения сделки |
|
||
| **digestSignatures** | array | required | Электронная подпись УЛ клиента (массив объектов) |
|
||
| — **base64Encoded** | string | required | Значение электронной подписи в Base64 |
|
||
| — **signatureType** | string | required | Тип подписи: `rsa` (RSA) или `kep` (КЭП) |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/api/na/jp/v1/deals' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"accountNumber": "40817810306050000000",
|
||
"expireDate": "2032-03-02",
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------- | :------ | :------------- | :--------------------------------------------- |
|
||
| **dealId** | string | required | Идентификатор сделки |
|
||
| **status** | string | required | Статус сделки: `DRAFT` (принята для обработки) |
|
||
| **expireDate** | string | required | Дата истечения сделки |
|
||
| **isValid** | boolean | required | Флаг валидности сделки |
|
||
|
||
**Пример JSON:**
|
||
|
||
```json
|
||
{
|
||
"dealId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"status": "DRAFT",
|
||
"expireDate": "2032-03-02",
|
||
"isValid": false
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Ошибка | Описание |
|
||
| :------ | :------------------- | :------------------------------------------------------------ |
|
||
| **400** | `invalid_request` | Неверные входные параметры запроса |
|
||
| **401** | `invalid_token` | Токен просрочен, отозван или недействителен |
|
||
| **403** | `insufficient_scope` | Нет прав на использование сервиса (ошибка в настройках scope) |
|
||
| **404** | `unknown_endpoint` | Эндпоинт не найден или неактивен |
|
||
| **429** | — | Слишком много запросов (Too Many Requests) |
|
||
| **500** | `internal_error` | Внутренняя ошибка сервиса |
|
||
| **503** | — | Сервис временно недоступен |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [← Как это работает](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/intro/intro)
|
||
- [Получение списка сделок →](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deals/v1/get-deals)
|
||
|
||
]]>
|
||
</add_deal_md>
|
||
<add_step_md>
|
||
< необходимо создать этапы сделки для совершения финансовых операций. Этап сделки можно создать только для сделок в статусе `DRAFT`.
|
||
|
||
- Если сделка предполагает совершение переводов денежных средств одновременно всем реципиентам, то достаточно создать один этап сделки.
|
||
- Если переводы денежных средств должны совершаться последовательно в несколько этапов, то следует создать соответствующее количество этапов сделки.
|
||
|
||
#### Завершение этапа сделки
|
||
|
||
При наступлении момента проведения расчётов по этапу сделки необходимо инициировать завершение этапа сделки. При завершении этапа сделки происходят все финансовые операции между участниками этапа сделки, и он переходит в статус `COMPLETED`.
|
||
|
||
- Если при [добавлении реципиента](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/step-contractors/v1/step-contractors) в этап сделки был проставлен признак `keepOnNominalAccount = false`, то денежные средства переводятся с захолдированного кошелька депонента на основной и налоговый кошельки реципиента, холдируются там, а затем производится выплата по реквизитам реципиента с номинального счёта.
|
||
- Если был проставлен признак `keepOnNominalAccount = true`, то денежные средства переводятся на кошельки реципиента внутри системы без фактического перевода с номинального счёта.
|
||
|
||
Завершить этап сделки можно только после [подтверждения сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-actions/v1/deal-actions).
|
||
|
||
---
|
||
|
||
### Параметры запроса
|
||
|
||
#### Headers
|
||
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- | :------------- |
|
||
| **Authorization** | Bearer {access_token}, полученный по [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) | string | required |
|
||
| **Accept** | application/json | string | required |
|
||
| **Content-Type** | application/json | string | required |
|
||
|
||
#### Body
|
||
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :------------------- | :------------------------------------------------------------------- | :--------------- | :------------- |
|
||
| **dealId** | Идентификатор сделки | string | required |
|
||
| **stepId** | Идентификатор этапа сделки | string | optional |
|
||
| **action** | Действие по этапу сделки: `CREATE` (создать), `COMPLETE` (завершить) | string | required |
|
||
| **description** | Описание этапа сделки (при создании) | string | optional |
|
||
| **digestSignatures** | Массив объектов: Электронная подпись УЛ клиента | array of objects | required |
|
||
| └ **base64Encoded** | Значение электронной подписи в Base64 | string | required |
|
||
| └ **signatureType** | Тип подписи: `rsa` или `kep` | string | required |
|
||
|
||
---
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/api/na/jp/v1/deals/steps' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"dealId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"stepId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"action": "CREATE",
|
||
"description": "Этап 1",
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
#### Успешное создание (200 OK)
|
||
|
||
| Атрибут | Описание | Тип |
|
||
| :-------------- | :------------------------- | :------ |
|
||
| **dealId** | Идентификатор сделки | string |
|
||
| **stepId** | Идентификатор этапа сделки | string |
|
||
| **stepNumber** | Порядковый номер этапа | integer |
|
||
| **description** | Описание этапа | string |
|
||
|
||
**Пример ответа 200:**
|
||
|
||
```json
|
||
{
|
||
"dealId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"stepId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"stepNumber": 1,
|
||
"description": "Этап 1"
|
||
}
|
||
```
|
||
|
||
#### Запрос принят (202 Accepted) — при завершении этапа
|
||
|
||
| Атрибут | Описание | Тип |
|
||
| :------------ | :----------------------------------------------------------------------------------------------- | :----- |
|
||
| **status** | Статус запроса: `FAILED`, `TIMEOUT`, `PENDING`, `PAYMENT_FAILED`, `TRANSFER_FAILED`, `COMPLETED` | string |
|
||
| **requestId** | Идентификатор запроса | string |
|
||
|
||
---
|
||
|
||
### Ошибки
|
||
|
||
| Код | Описание (error / error_description) |
|
||
| :-------------------------- | :------------------------------------------------------- |
|
||
| **400 Bad Request** | `invalid_request` — неверные входные параметры |
|
||
| **401 Unauthorized** | `invalid_token` — токен просрочен или недействителен |
|
||
| **403 Forbidden** | `insufficient_scope` — нет прав на использование сервиса |
|
||
| **404 Not Found** | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429 Too Many Requests** | Превышен лимит запросов (тело ответа отсутствует) |
|
||
| **500 Internal Error** | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503 Service Unavailable** | Сервис недоступен (тело ответа отсутствует) |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- Предыдущий раздел: [Выполнение действия по сделке](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-actions/v1/deal-actions)
|
||
- Следующий раздел: [Получение статуса запроса на завершение этапа сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal-request-status/v1/get-deal-request-status)
|
||
|
||
]]>
|
||
</add_step_md>
|
||
<deal_actions_md>
|
||
<.
|
||
|
||
---
|
||
|
||
### Параметры запроса
|
||
|
||
#### HEADERS
|
||
|
||
| Атрибут | Описание |
|
||
| :---------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **Authorization** <br> _string, required_ | Bearer {access_token}, полученный по [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** <br> _string, required_ | application/json |
|
||
| **Content-Type** <br> _string, required_ | application/json |
|
||
|
||
#### BODY
|
||
|
||
| Атрибут | Описание |
|
||
| :----------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| **dealId** <br> _string, required_ | Идентификатор сделки |
|
||
| **action** <br> _string, required_ | Действие по сделке. Возможные значения: <ul><li>`ACCEPT` — подтвердить сделку;</li><li>`COMPLETE` — завершить сделку;</li><li>`CANCEL` — отменить сделку.</li></ul> |
|
||
| **digestSignatures** <br> _array of objects, required_ | Электронная подпись УЛ клиента |
|
||
| **└ base64Encoded** <br> _string, required_ | Значение электронной подписи, закодированное в Base64 |
|
||
| **└ signatureType** <br> _string, required_ | Тип электронной подписи. Возможные значения: <ul><li>`rsa` — RSA;</li><li>`kep` — КЭП.</li></ul> |
|
||
|
||
---
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl --location --request PATCH 'https://baas.alfabank.ru/api/na/jp/v1/deals/action' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"dealId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"action": "ACCEPT",
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
**204 No Content**
|
||
_Нет тела ответа_
|
||
|
||
**400 Bad Request**
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** <br> _string, required_ | Код ошибки: `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** <br> _string, optional_ | Описание ошибки |
|
||
|
||
**401 Unauthorized**
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** <br> _string, required_ | Код ошибки: `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **error_description** <br> _string, optional_ | Описание ошибки |
|
||
|
||
**403 Forbidden**
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** <br> _string, required_ | Код ошибки: `insufficient_scope` — нет прав на использование сервиса (настройки scope) |
|
||
| **error_description** <br> _string, optional_ | Описание ошибки |
|
||
|
||
**404 Not Found**
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** <br> _string, required_ | Код ошибки: `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **error_description** <br> _string, optional_ | Описание ошибки |
|
||
|
||
**429 Too Many Requests**
|
||
_Нет тела ответа_
|
||
|
||
**500 Internal Server Error**
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** <br> _string, required_ | Код ошибки: `internal_error` — внутренняя ошибка сервиса |
|
||
| **error_description** <br> _string, optional_ | Описание ошибки |
|
||
|
||
**503 Service Unavailable**
|
||
_Нет тела ответа_
|
||
|
||
---
|
||
|
||
### Навигация
|
||
|
||
- [← Получение списка платежей по сделке](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal-payoffs/v1/get-deal-payoffs)
|
||
- [Выполнение действия по этапам сделки →](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/add-step/v1/add-step)
|
||
|
||
]]>
|
||
</deal_actions_md>
|
||
<deal_is_valid_md>
|
||
< |
|
||
| **Accept** | string (required) | application/json |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--------- | :---------------- | :------------------- |
|
||
| **dealId** | string (required) | Идентификатор сделки |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff --request PATCH 'https://baas.alfabank.ru/api/na/jp/v1/deals/{dealId}/is-valid' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 OK
|
||
|
||
**Пример ответа:**
|
||
|
||
```json
|
||
{
|
||
"dealId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"isValid": true,
|
||
"description": [
|
||
"Неверная сумма депонированных средств по этапу сделки ab9cbb96-360a-4462-a683-955cc29f7f54;"
|
||
]
|
||
}
|
||
```
|
||
|
||
**Структура тела (BODY):**
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **dealId** | string (required) | Идентификатор сделки |
|
||
| **isValid** | boolean (required) | Результат прохождения проверки: `true` — сделка прошла валидацию; `false` — сделка не прошла валидацию. |
|
||
| **description** | array of strings (optional) | Описание ошибок. Возвращается при неудачном прохождении валидации. |
|
||
|
||
---
|
||
|
||
### Коды ошибок
|
||
|
||
| Код | Описание | Атрибуты ответа |
|
||
| :------ | :------------------ | :-------------------------------------------------------------------------- |
|
||
| **400** | Bad Request | `error`: `invalid_request` — неверные входные параметры запроса. |
|
||
| **401** | Unauthorized | `error`: `invalid_token` — токен просрочен, отозван или недействителен. |
|
||
| **403** | Forbidden | `error`: `insufficient_scope` — недостаточно прав на использование сервиса. |
|
||
| **404** | Not Found | `error`: `unknown_endpoint` — эндпоинт не найден или неактивен. |
|
||
| **429** | Too Many Requests | Нет тела ответа. |
|
||
| **500** | Internal Error | `error`: `internal_error` — внутренняя ошибка сервиса. |
|
||
| **503** | Service Unavailable | Нет тела ответа. |
|
||
|
||
---
|
||
|
||
## Навигация
|
||
|
||
- **Назад:** [Получение информации о сделке](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal/v1/get-deal)
|
||
- **Вперед:** [Получение списка платежей по сделке](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal-payoffs/v1/get-deal-payoffs)
|
||
|
||
]]>
|
||
</deal_is_valid_md>
|
||
<get_contractors_md>
|
||
< | string | required |
|
||
| **Accept** | application/json | string | required |
|
||
|
||
### QUERY
|
||
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :--------------- | :----------------------------------------------------------------------------------------------------------- | :----- | :------------- |
|
||
| **contractorId** | Идентификатор участника сделки | string | optional |
|
||
| **role** | Роль участника этапа сделки. Возможные значения:<br>• `DEPONENT` — плательщик;<br>• `RECIPIENT` — получатель | string | optional |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :--------- | :------------------------- | :----- | :------------- |
|
||
| **dealId** | Идентификатор сделки | string | required |
|
||
| **stepId** | Идентификатор этапа сделки | string | required |
|
||
|
||
---
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/deals/{dealId}/steps/{stepId}/contractors?contractorId=ab9cbb96-360a-4462-a683-955cc29f7f54&role={role}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Пример ответа 200 (OK)
|
||
|
||
```json
|
||
[
|
||
{
|
||
"beneficiaryId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"role": "DEPONENT",
|
||
"amount": "10.00",
|
||
"purpose": "Назначение платежа",
|
||
"requisiteId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"keepOnNominalAccount": true,
|
||
"amounts": [
|
||
{
|
||
"walletType": "MAIN",
|
||
"amount": "10.00"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
```
|
||
|
||
### BODY (Успешный ответ)
|
||
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :--------------- | :------------- |
|
||
| **beneficiaryId** | Идентификатор бенефициара или универсального реципиента | string | optional |
|
||
| **role** | Роль участника этапа сделки: `DEPONENT` (плательщик), `RECIPIENT` (получатель) | string | optional |
|
||
| **amount** | Сумма депонирования в рублях | string | optional |
|
||
| **purpose** | Назначение платежа реципиента | string | optional |
|
||
| **requisiteId** | Идентификатор платёжного реквизита реципиента | string | optional |
|
||
| **keepOnNominalAccount** | Признак вывода денег на виртуальный счёт:<br>• `true` — оставить в рамках номинального счёта;<br>• `false` — вывести по ID реквизита | boolean | optional |
|
||
| **amounts** | Массив объектов: Суммы реципиента | array of objects | optional |
|
||
|
||
**Вложенные поля `amounts`:**
|
||
|
||
- **walletType** (string, optional): Тип суммы (`MAIN` — основная, `TAX` — налоговая).
|
||
- **amount** (string, optional): Сумма в рублях.
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Возможные значения `error` |
|
||
| :------ | :------------------ | :------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
]]>
|
||
</get_contractors_md>
|
||
<get_deal_md>
|
||
< |
|
||
| Accept | string | Да | application/json |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| dealId | string | Да | Идентификатор сделки |
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/deals/{dealId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа (200 OK)
|
||
|
||
### Пример тела ответа
|
||
```json
|
||
{
|
||
"dealId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"status": "DRAFT",
|
||
"expireDate": "2032-03-02",
|
||
"isValid": false,
|
||
"steps": [
|
||
{
|
||
"id": "f099f9dd-d5e7-4ab3-89f5-24932aa808ad",
|
||
"description": "Этап 1",
|
||
"stepNumber": 1,
|
||
"status": "NEW",
|
||
"isValid": false
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### Структура ответа (BODY)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **dealId** | string | Да | Идентификатор сделки |
|
||
| **status** | string | Да | Статус сделки. Возможные значения: `DRAFT` (принята), `ACTIVE` (успешно обработана), `BLOCKED` (ошибка обработки), `PAYMENT_FAILED` (ошибка платежа), `CLOSED` (отменена), `COMPLETED` (успешно завершена) |
|
||
| **expireDate** | string | Да | Дата истечения сделки |
|
||
| **isValid** | boolean | Да | Флаг валидности сделки |
|
||
| **steps** | array | Нет | Данные об этапах сделки (список объектов) |
|
||
|
||
### Параметры этапа сделки (внутри массива steps)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **id** | string | Да | Идентификатор этапа |
|
||
| **description** | string | Да | Описание этапа |
|
||
| **stepNumber** | integer | Да | Порядковый номер этапа |
|
||
| **status** | string | Да | Статус этапа: `NEW` (принят), `IN_PROGRESS` (в обработке), `PAYMENT_FAILED` (ошибка платежа), `COMPLETED` (завершен) |
|
||
| **isValid** | string | Да | Флаг валидности этапа |
|
||
|
||
---
|
||
|
||
## Коды ответов и ошибок
|
||
|
||
| Код | Описание | Значение error / error_description |
|
||
| :--- | :--- | :--- |
|
||
| **200** | OK | Успешное получение информации |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или неверный формат |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса (проверьте scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Превышено количество запросов (без тела ответа) |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Сервис временно недоступен (без тела ответа) |
|
||
|
||
---
|
||
**Навигация:**
|
||
[← Получение списка сделок](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deals/v1/get-deals) | [Проверка возможности выплат →](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-is-valid/v1/deal-is-valid)
|
||
|
||
|
||
]]>
|
||
</get_deal_md>
|
||
<get_deal_payoffs_md>
|
||
< |
|
||
| **Accept** | string | required | `application/json` |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------- | :----- | :------------- | :------------------- |
|
||
| **dealId** | string | required | Идентификатор сделки |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/deals/{dealId}/payoffs' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа (200 OK)
|
||
|
||
### BODY (JSON)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------- | :----- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **stepId** | string | required | Идентификатор этапа сделки |
|
||
| **payoffId** | string | required | Идентификатор платежа |
|
||
| **payoffType** | string | required | Тип платежа:<br>• `EXTERNAL` — внешний (выплата с номинального счёта)<br>• `INTERNAL` — внутренний (выплата внутри номинального счёта) |
|
||
| **deponentId** | string | required | Идентификатор депонента |
|
||
| **recipientId** | string | required | Идентификатор реципиента |
|
||
| **amount** | string | required | Сумма в рублях |
|
||
| **status** | string | required | Статус запроса:<br>• `PENDING` — запрос в процессе обработки<br>• `MANUAL_ACCEPTANCE` — ожидание ручного подтверждения запроса-дубля<br>• `AWAIT_EXTERNAL` — ожидание исполнения внешнего платежа<br>• `FAILED` — ошибка обработки<br>• `FAILED_DUPLICATE` — дубль отклонен<br>• `COMPLETE` — успешно завершено |
|
||
|
||
### Пример ответа 200
|
||
|
||
```json
|
||
[
|
||
{
|
||
"stepId": "f099f9dd-d5e7-4ab3-89f5-24932aa808ad",
|
||
"payoffId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"payoffType": "EXTERNAL",
|
||
"deponentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"recipientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"amount": "100.00",
|
||
"status": "PENDING"
|
||
}
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Тело ответа (основные атрибуты) |
|
||
| :------ | :------------------ | :---------------------------------------------------- |
|
||
| **400** | Bad Request | `error`: `invalid_request` — неверные параметры |
|
||
| **401** | Unauthorized | `error`: `invalid_token` — токен недействителен |
|
||
| **403** | Forbidden | `error`: `insufficient_scope` — нет прав доступа |
|
||
| **404** | Not Found | `error`: `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `error`: `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- Предыдущий метод: [Проверка возможности осуществления выплат по сделке](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-is-valid/v1/deal-is-valid)
|
||
- Следующий метод: [Выполнение действия по сделке](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-actions/v1/deal-actions)
|
||
|
||
]]>
|
||
</get_deal_payoffs_md>
|
||
<get_deal_request_status_md>
|
||
< |
|
||
| **Accept** | string | required | application/json |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------ | :----- | :------------- | :-------------------- |
|
||
| **dealId** | string | required | Идентификатор сделки |
|
||
| **requestId** | string | required | Идентификатор запроса |
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/deals/{dealId}/requests/{requestId}/status' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 (OK)
|
||
|
||
**Пример тела ответа:**
|
||
|
||
```json
|
||
{
|
||
"requestId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "COMPLETE",
|
||
"description": "Произошла техническая ошибка. Обратитесь в службу поддержки и сообщите код ошибки afc9b019-77ac-49ef-afb9-688b38b74cc2"
|
||
}
|
||
```
|
||
|
||
**Описание полей (BODY):**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **requestId** | string | required | Идентификатор запроса |
|
||
| **status** | string | required | Статус запроса. Возможные значения:
|
||
`FAILED` — ошибка обработки;
|
||
`TIMEOUT` — превышено время ожидания;
|
||
`PENDING` — в процессе обработки;
|
||
`PAYMENT_FAILED` — неудача внешнего платежа;
|
||
`TRANSFER_FAILED` — неудача внутреннего платежа (внутри НС);
|
||
`COMPLETED` — успешно завершено. |
|
||
| **description** | string | optional | Описание причины, по которой запрос завершился неудачей. Возвращается, если статус равен `FAILED`. |
|
||
|
||
---
|
||
|
||
### Ошибки
|
||
|
||
#### 400 Bad Request
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :----- | :----------------------------------------------------- |
|
||
| **error** | string | `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | string | Описание ошибки |
|
||
|
||
#### 401 Unauthorized
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :----- | :------------------------------------------------------------ |
|
||
| **error** | string | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **error_description** | string | Описание ошибки |
|
||
|
||
#### 403 Forbidden
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :----- | :----------------------------------------------------------------------------- |
|
||
| **error** | string | `insufficient_scope` — нет прав на использование сервиса (недостаточный scope) |
|
||
| **error_description** | string | Описание ошибки |
|
||
|
||
#### 404 Not Found
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :----- | :---------------------------------------------------- |
|
||
| **error** | string | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **error_description** | string | Описание ошибки |
|
||
|
||
#### 429 Too Many Requests
|
||
|
||
Нет тела ответа. Превышен лимит запросов.
|
||
|
||
#### 500 Internal Server Error
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :----- | :------------------------------------------- |
|
||
| **error** | string | `internal_error` — внутренняя ошибка сервиса |
|
||
| **error_description** | string | Описание ошибки |
|
||
|
||
#### 503 Service Unavailable
|
||
|
||
Нет тела ответа. Сервис временно недоступен.
|
||
|
||
]]>
|
||
</get_deal_request_status_md>
|
||
<get_deals_md>
|
||
< |
|
||
| **Accept** | string | required | application/json |
|
||
|
||
### QUERY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **accountNumber** | string | required | Номер номинального счёта |
|
||
| **limit** | integer | optional | Количество объектов на одной странице |
|
||
| **offset** | integer | optional | Количество объектов в списке, которые необходимо пропустить |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/deals?accountNumber={accountNumber}&limit=100&offset={offset}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 OK
|
||
Пример тела ответа:
|
||
```json
|
||
{
|
||
"pagination": {
|
||
"limit": 100,
|
||
"offset": 0,
|
||
"totalCount": 1
|
||
},
|
||
"deals": [
|
||
{
|
||
"dealId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"status": "DRAFT",
|
||
"expireDate": "2032-03-02",
|
||
"isValid": false,
|
||
"steps": [
|
||
{
|
||
"id": "f099f9dd-d5e7-4ab3-89f5-24932aa808ad",
|
||
"description": "Этап 1",
|
||
"stepNumber": 1,
|
||
"status": "NEW",
|
||
"isValid": false
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
#### Описание полей ответа (200 OK)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **pagination** | object | optional | Данные пагинации |
|
||
| ∟ **limit** | number | optional | Количество записей на одной странице |
|
||
| ∟ **offset** | number | optional | Количество записей в списке, которые были пропущены |
|
||
| ∟ **totalCount** | number | optional | Общее количество записей |
|
||
| **deals** | array | optional | Данные о сделках |
|
||
| ∟ **dealId** | string | required | Идентификатор сделки |
|
||
| ∟ **status** | string | required | Статус сделки: `DRAFT`, `ACTIVE`, `BLOCKED`, `PAYMENT_FAILED`, `CLOSED`, `COMPLETED` |
|
||
| ∟ **expireDate** | string | required | Дата истечения сделки |
|
||
| ∟ **isValid** | boolean | required | Флаг валидности сделки |
|
||
| ∟ **steps** | array | optional | Данные об этапах сделки |
|
||
| ∟ ∟ **id** | string | required | Идентификатор этапа сделки |
|
||
| ∟ ∟ **description** | string | required | Описание этапа сделки |
|
||
| ∟ ∟ **stepNumber** | integer | required | Порядковый номер этапа сделки |
|
||
| ∟ ∟ **status** | string | required | Статус этапа: `NEW`, `IN_PROGRESS`, `PAYMENT_FAILED`, `COMPLETED` |
|
||
| ∟ ∟ **isValid** | boolean | required | Флаг валидности этапа сделки |
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание (error) | error_description |
|
||
| :--- | :--- | :--- |
|
||
| **400** | `invalid_request` | Неверные входные параметры запроса |
|
||
| **401** | `invalid_token` | Токен просрочен, отозван или имеет неправильный формат |
|
||
| **403** | `insufficient_scope` | Нет прав на использование сервиса (настройки scope) |
|
||
| **404** | `unknown_endpoint` | Эндпоинт не найден или неактивен |
|
||
| **429** | — | Слишком много запросов (нет тела ответа) |
|
||
| **500** | `internal_error` | Внутренняя ошибка сервиса |
|
||
| **503** | — | Сервис недоступен (нет тела ответа) |
|
||
|
||
---
|
||
**Навигация:**
|
||
[← Регистрация сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/add-deal/v1/add-deal) | [Получение информации о сделке →](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal/v1/get-deal)
|
||
|
||
]]>
|
||
</get_deals_md>
|
||
<get_step_md>
|
||
< |
|
||
| **Accept** | string | required | application/json |
|
||
|
||
### PATH (Путь)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------- | :----- | :------------- | :------------------------- |
|
||
| **dealId** | string | required | Идентификатор сделки |
|
||
| **stepId** | string | required | Идентификатор этапа сделки |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/deals/{dealId}/steps/{stepId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
**Пример тела ответа:**
|
||
|
||
```json
|
||
{
|
||
"stepId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"stepNumber": 1,
|
||
"description": "Этап 1",
|
||
"status": "DRAFT",
|
||
"isValid": false
|
||
}
|
||
```
|
||
|
||
**Описание полей:**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **stepId** | string | required | Идентификатор этапа сделки |
|
||
| **stepNumber** | integer | required | Порядковый номер этапа сделки |
|
||
| **description** | string | required | Описание этапа сделки |
|
||
| **status** | string | required | Статус этапа сделки (см. ниже) |
|
||
| **isValid** | boolean | required | Флаг валидности этапа сделки |
|
||
|
||
#### Возможные значения статуса (`status`):
|
||
|
||
- `DRAFT` — принят для последующей обработки;
|
||
- `ACTIVE` — успешно обработан;
|
||
- `BLOCKED` — ошибка в процессе обработки;
|
||
- `IN_PROGRESS` — в процессе обработки;
|
||
- `PAYMENT_FAILED` — платёж завершился неудачей;
|
||
- `CLOSED` — отменен;
|
||
- `COMPLETED` — успешно завершен.
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание (error) | Детали (error_description) |
|
||
| :------ | :------------------- | :-------------------------------------------- |
|
||
| **400** | `invalid_request` | Неверные входные параметры запроса |
|
||
| **401** | `invalid_token` | Токен просрочен, отозван или недействителен |
|
||
| **403** | `insufficient_scope` | У пользователя нет прав (недостаточный scope) |
|
||
| **404** | `unknown_endpoint` | Эндпоинт не найден или неактивен |
|
||
| **429** | — | Слишком много запросов (нет тела ответа) |
|
||
| **500** | `internal_error` | Внутренняя ошибка сервиса |
|
||
| **503** | — | Сервис недоступен (нет тела ответа) |
|
||
|
||
---
|
||
|
||
_Документация Alfa API_
|
||
|
||
]]>
|
||
</get_step_md>
|
||
<get_steps_md>
|
||
< |
|
||
| **Accept** | string (required) | `application/json` |
|
||
|
||
### QUERY
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--------- | :----------------- | :--------------------------------------------------------------------------------------- |
|
||
| **offset** | integer (optional) | Количество элементов в списке, которое необходимо пропустить. Значение по умолчанию: `0` |
|
||
| **limit** | integer (optional) | Количество элементов в списке, которое необходимо вывести. Значение по умолчанию: `50` |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--------- | :---------------- | :------------------- |
|
||
| **dealId** | string (required) | Идентификатор сделки |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/deals/{dealId}/steps?offset={offset}&limit={limit}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Пример ответа 200 (OK)
|
||
|
||
```json
|
||
[
|
||
{
|
||
"stepId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"stepNumber": 1,
|
||
"description": "Этап 1",
|
||
"status": "DRAFT",
|
||
"isValid": false
|
||
}
|
||
]
|
||
```
|
||
|
||
### BODY (200 OK)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **stepId** | string (required) | Идентификатор этапа сделки |
|
||
| **stepNumber** | integer (required) | Порядковый номер этапа сделки |
|
||
| **description** | string (required) | Описание этапа сделки |
|
||
| **status** | string (required) | Статус этапа сделки. Возможные значения:<br>• `DRAFT` — принят для последующей обработки;<br>• `ACTIVE` — успешно обработан;<br>• `BLOCKED` — ошибка в процессе обработки;<br>• `IN_PROGRESS` — в процессе обработки;<br>• `PAYMENT_FAILED` — платёж завершился неудачей;<br>• `CLOSED` — отменен;<br>• `COMPLETED` — успешно завершен |
|
||
| **isValid** | boolean (required) | Флаг валидности этапа сделки |
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :------ | :-------------------- | :----------------------------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса (недостаточный scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- Предыдущий метод: [Получение статуса запроса на завершение этапа сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal-request-status/v1/get-deal-request-status)
|
||
- Следующий метод: [Получение информации об этапе сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-step/v1/get-step)
|
||
|
||
]]>
|
||
</get_steps_md>
|
||
<intro_md>
|
||
<.
|
||
2. [Идентифицировать денежные средства, поступившие на номинальный счёт](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/intro/intro).
|
||
|
||
> **Важно**
|
||
> В рамках этапа сделки выполнять платежи от бенефициара самому себе нельзя. Совершить такой перевод можно напрямую без создания сделки, используя метод [«Создание запроса на выплату с номинального счёта»](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/payoff/v1/payoff).
|
||
|
||
---
|
||
|
||
### Механизм работы сделок
|
||
|
||
1. **Зарегистрируйте сделку**
|
||
Создайте черновик сделки для дальнейшего её наполнения этапами и участниками с помощью метода [«Регистрация сделки»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/add-deal/v1/add-deal).
|
||
|
||
2. **Создайте этапы сделки**
|
||
Используйте метод [«Выполнение действия по этапам сделки»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/add-step/v1/add-step).
|
||
_Внимание!_ Каждая сделка должна содержать не менее одного этапа.
|
||
|
||
3. **Добавьте депонента в этапы сделки**
|
||
Добавьте информацию о бенефициаре (плательщике) этапа с помощью метода [«Выполнение действия по участникам этапа сделки»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/step-contractors/v1/step-contractors).
|
||
_Внимание!_ В одном этапе сделки может быть указан только один депонент (плательщик).
|
||
|
||
4. **Добавьте реципиентов в этапы сделки**
|
||
Добавьте информацию о получателях денежных средств с помощью метода [«Выполнение действия по участникам этапа сделки»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/step-contractors/v1/step-contractors). Реципиентами могут быть бенефициары или универсальные реципиенты.
|
||
_Внимание!_ В одном этапе сделки может быть несколько реципиентов.
|
||
|
||
5. **Проверьте возможность выплат по сформированной сделке**
|
||
Проверьте правильность наполнения с помощью метода [«Проверка возможности осуществления выплат по сделке»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-is-valid/v1/deal-is-valid). Для перехода к следующему шагу необходимо получить в ответе `isValid = true`.
|
||
|
||
6. **Подтвердите сделку**
|
||
Подтвердите создание с помощью метода [«Выполнение действия по сделке»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-actions/v1/deal-actions). Статус изменится с `DRAFT` на `ACTIVE`.
|
||
_Внимание!_ При подтверждении сделки денежные средства депонентов холдируются.
|
||
|
||
7. **Завершите этапы сделки**
|
||
Для проведения расчётов инициируйте завершение этапа через метод [«Выполнение действия по этапам сделки»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/add-step/v1/add-step).
|
||
Для контроля используйте метод [«Получение статуса запроса на завершение этапа сделки»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal-request-status/v1/get-deal-request-status). При завершении этапа осуществляются выплаты.
|
||
|
||
8. **Завершите сделку**
|
||
Используйте метод [«Выполнение действия по сделке»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-actions/v1/deal-actions). Статус изменится с `ACTIVE` на `COMPLETED`.
|
||
|
||
---
|
||
|
||
### Отмена сделки
|
||
|
||
Для отмены используйте метод [«Выполнение действия по сделке»](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/deal-actions/v1/deal-actions).
|
||
|
||
> **Важно**
|
||
> Отменить сделку можно только при условии, что ни один из её этапов не был завершён. При отмене ранее захолдированные средства депонентов будут расхолдированы.
|
||
|
||
---
|
||
|
||
### Информация о сделках и выплатах по ним
|
||
|
||
**По сделкам:**
|
||
|
||
- [Получение информации о сделке](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal/v1/get-deal)
|
||
- [Получение списка сделок](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deals/v1/get-deals)
|
||
|
||
**По этапам:**
|
||
|
||
- [Получение информации об этапе сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-step/v1/get-step)
|
||
- [Получение списка этапов сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-steps/v1/get-steps)
|
||
|
||
**По участникам:**
|
||
|
||
- [Получить информацию об участниках этапа сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-contractors/v1/get-contractors)
|
||
|
||
**По переводам (платежам):**
|
||
|
||
- [Получение списка платежей по сделке](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/get-deal-payoffs/v1/get-deal-payoffs)
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- Назад: [Получение статуса запроса на возврат неидентифицированного пополнения](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/get-transaction-refund-request-status/v1/get-transaction-refund-request-status)
|
||
- Вперед: [Регистрация сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/add-deal/v1/add-deal)
|
||
|
||
]]>
|
||
</intro_md>
|
||
<step_contractors_md>
|
||
<, который считается основным (`isMain = true`).
|
||
|
||
### Изменение участника сделки
|
||
|
||
- **Для депонента:** можно изменить сумму депонированных средств.
|
||
- **Для реципиента:** можно изменить суммы, назначение платежа, признак вывода денег на виртуальный счёт и идентификатор платёжных реквизитов.
|
||
|
||
### Удаление участника сделки
|
||
|
||
Позволяет удалить депонента или реципиента из этапа сделки.
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### Headers
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------------- | :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **Authorization** | `string` (required) | Bearer {access_token}, полученный по [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | `string` (required) | application/json |
|
||
| **Content-Type** | `string` (required) | application/json |
|
||
|
||
### Body
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :----------------------- | :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------- |
|
||
| **action** | `string` (required) | Тип действия: `ADD_DEPONENT`, `ADD_RECIPIENT`, `DELETE_DEPONENT`, `DELETE_RECIPIENT`, `UPDATE_DEPONENT`, `UPDATE_RECIPIENT` |
|
||
| **dealId** | `string` (required) | Идентификатор сделки |
|
||
| **stepId** | `string` (required) | Идентификатор этапа сделки |
|
||
| **beneficiaryId** | `string` (required) | Идентификатор бенефициара или универсального реципиента |
|
||
| **amount** | `string` (optional) | Сумма депонирования в рублях. Доступно только для депонента |
|
||
| **purpose** | `string` (optional) | Назначение платежа реципиента. Доступно только для реципиента |
|
||
| **amounts** | `array of objects` (optional) | Суммы реципиента. Доступно только для реципиента (см. ниже) |
|
||
| **keepOnNominalAccount** | `boolean` (optional) | Признак вывода на вирт. счёт: `true` — оставить на ном. счёте; `false` — вывести на реквизиты |
|
||
| **requisiteId** | `string` (optional) | Идентификатор платёжного реквизита контрагента |
|
||
| **digestSignatures** | `array of objects` (required) | Электронная подпись УЛ Клиента (см. ниже) |
|
||
|
||
#### Объект `amounts` (внутри Body)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :------------- | :------------------ | :------------------------------------------------- |
|
||
| **walletType** | `string` (optional) | Тип кошелька: `MAIN` (основной), `TAX` (налоговый) |
|
||
| **amount** | `string` (optional) | Сумма в рублях |
|
||
|
||
#### Объект `digestSignatures` (внутри Body)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------------- | :------------------ | :------------------------------------ |
|
||
| **base64Encoded** | `string` (required) | Значение подписи в Base64 |
|
||
| **signatureType** | `string` (required) | Тип подписи: `rsa` (RSA), `kep` (КЭП) |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --request PATCH 'https://baas.alfabank.ru/api/na/jp/v1/deals/steps/contractors' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"action": "ADD_DEPONENT",
|
||
"dealId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"stepId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"beneficiaryId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"amount": "10.00",
|
||
"purpose": "Назначение платежа",
|
||
"amounts": [
|
||
{
|
||
"walletType": "MAIN",
|
||
"amount": "10.00"
|
||
}
|
||
],
|
||
"keepOnNominalAccount": true,
|
||
"requisiteId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
| Код | Статус | Описание |
|
||
| :------ | :-------------------- | :-------------------------------------------- |
|
||
| **204** | No Content | Успешное выполнение. Тело ответа отсутствует. |
|
||
| **400** | Bad Request | Неверные входные параметры. |
|
||
| **401** | Unauthorized | Токен просрочен или недействителен. |
|
||
| **403** | Forbidden | Недостаточно прав (insufficient_scope). |
|
||
| **404** | Not Found | Эндпоинт не найден. |
|
||
| **429** | Too Many Requests | Слишком много запросов. |
|
||
| **500** | Internal Server Error | Внутренняя ошибка сервиса. |
|
||
| **503** | Service Unavailable | Сервис временно недоступен. |
|
||
|
||
### Структура ошибки (400, 401, 403, 404, 500)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------------- | :------- | :------------------------------------------------------------------------------ |
|
||
| **error** | `string` | Код ошибки (например, `invalid_request`, `invalid_token`, `insufficient_scope`) |
|
||
| **error_description** | `string` | Подробное описание ошибки |
|
||
|
||
---
|
||
|
||
_Документация Alfa API_
|
||
|
||
]]>
|
||
</step_contractors_md>
|
||
</Безопасные_сделки>
|
||
<Выплаты>
|
||
<get_payoff_md>
|
||
< |
|
||
| **Accept** | string | required | `application/json` |
|
||
|
||
### Path
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------- | :----- | :------------- | :-------------------- |
|
||
| **payoffId** | string | required | Идентификатор платежа |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/payoffs/{payoffId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
#### Тело ответа (JSON)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :---------------------------------------------------------------------------------- |
|
||
| **dealId** | string | optional | Идентификатор сделки |
|
||
| **stepId** | string | optional | Идентификатор этапа |
|
||
| **paymentType** | string | optional | Тип платежа: `REGULAR` (обычный), `DEAL` (выплата внутри сделки), `TAX` (налоговый) |
|
||
| **requisiteType** | string | optional | Тип реквизита: `ACCOUNT` (счёт), `CARD` (токен карты), `PHONE` (номер телефона) |
|
||
| **payer** | object | optional | Информация о плательщике (см. ниже) |
|
||
| **recipient** | object | optional | Информация о получателе (см. ниже) |
|
||
| **amount** | string | optional | Сумма в рублях |
|
||
| **purpose** | string | optional | Назначение платежа |
|
||
| **status** | string | optional | Статус: `IN_PROGRESS` (в обработке), `FAILED` (ошибка), `READY` (успешно завершён) |
|
||
|
||
#### Объект `payer` (Плательщик)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :----------------------- |
|
||
| **accountNumber** | string | required | Номер счёта |
|
||
| **name** | string | required | Наименование организации |
|
||
| **inn** | string | required | ИНН |
|
||
| **kpp** | string | required | КПП |
|
||
|
||
#### Объект `recipient` (Получатель)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :------------------------ |
|
||
| **beneficiaryId** | string | optional | Идентификатор бенефициара |
|
||
| **accountNumber** | string | optional | Номер счёта |
|
||
| **bik** | string | optional | БИК банка |
|
||
| **name** | string | optional | ФИО реципиента |
|
||
| **inn** | string | optional | ИНН |
|
||
|
||
### Пример успешного ответа
|
||
|
||
```json
|
||
{
|
||
"dealId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"stepId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"paymentType": "REGULAR",
|
||
"requisiteType": "ACCOUNT",
|
||
"payer": {
|
||
"accountNumber": "40817810306050000000",
|
||
"name": "Акционерное общество «Ромашка»",
|
||
"inn": "1122334455",
|
||
"kpp": "123456789"
|
||
},
|
||
"recipient": {
|
||
"beneficiaryId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"accountNumber": "40817810306050000000",
|
||
"bik": "044525593",
|
||
"name": "Иванов Иван Иванович",
|
||
"inn": "112233445566"
|
||
},
|
||
"amount": "10.00",
|
||
"purpose": "Назначение платежа",
|
||
"status": "IN_PROGRESS"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Возможные значения `error` |
|
||
| :------ | :-------------------- | :--------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — недостаточно прав (проверьте scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа (превышен лимит запросов) |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа (сервис временно недоступен) |
|
||
|
||
---
|
||
|
||
_Документация Alfa API_
|
||
|
||
]]>
|
||
</get_payoff_md>
|
||
<get_payoff_request_status_md>
|
||
< |
|
||
| **Accept** | `string` | required | `application/json` |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **payoffId** | `string` | required | Идентификатор запроса, полученный с помощью метода [«Создание запроса на выплату с номинального счёта»](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/payoff/v1/payoff) |
|
||
|
||
### Пример запроса (cURL)
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/payoffs/{payoffId}/status' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
**Пример тела ответа:**
|
||
```json
|
||
{
|
||
"payoffId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "PENDING",
|
||
"description": "Произошла техническая ошибка. Обратитесь в службу поддержки и сообщите код ошибки afc9b019-77ac-49ef-afb9-688b38b74cc2"
|
||
}
|
||
```
|
||
|
||
**Описание полей BODY:**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **payoffId** | `string` | required | Идентификатор запроса |
|
||
| **status** | `string` | required | Статус запроса (см. ниже) |
|
||
| **description** | `string` | optional | Описание причины, по которой запрос завершился неудачей. Возвращается, если статус равен `FAILED` |
|
||
|
||
#### Возможные значения поля `status`:
|
||
* `PENDING` — запрос в процессе обработки;
|
||
* `MANUAL_ACCEPTANCE` — ожидание ручного подтверждения отправки запроса-дубля на обработку;
|
||
* `AWAIT_EXTERNAL` — ожидание исполнения внешнего платежа;
|
||
* `FAILED` — обработка запроса завершилась ошибкой;
|
||
* `FAILED_DUPLICATE` — обработка запроса-дубля отклонена;
|
||
* `COMPLETE` — обработка запроса завершилась успешно.
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Возможные значения `error` / Примечание |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав (scope) на использование сервиса |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Нет тела ответа. Превышен лимит запросов |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа. Сервис временно недоступен |
|
||
|
||
---
|
||
|
||
## Дополнительные ссылки
|
||
* [Предыдущий шаг: Создание запроса на выплату](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/payoff/v1/payoff)
|
||
* [Следующий шаг: Подтверждение или отклонение запроса-дубля](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/payoff-accept/v1/payoff-accept)
|
||
|
||
]]>
|
||
</get_payoff_request_status_md>
|
||
<get_tax_refund_request_status_md>
|
||
< |
|
||
| **Accept** | string | required | `application/json` |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------- | :----- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **taxRefundId** | string | required | Идентификатор запроса, полученный с помощью метода [«Создание запроса на возврат денежных средств с налогового виртуального кошелька»](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/tax-refund/v1/tax-refund) |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/tax-refund/{taxRefundId}/status' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
**Пример тела ответа:**
|
||
|
||
```json
|
||
{
|
||
"taxRefundId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "FAILED",
|
||
"description": "Произошла техническая ошибка. Обратитесь в службу поддержки и сообщите код ошибки afc9b019-77ac-49ef-afb9-688b38b74cc2"
|
||
}
|
||
```
|
||
|
||
**Описание полей BODY:**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **taxRefundId** | string | required | Идентификатор запроса |
|
||
| **status** | string | required | Статус запроса (см. ниже) |
|
||
| **description** | string | optional | Описание причины неудачи. Возвращается только при статусе `FAILED` |
|
||
|
||
#### Возможные значения статуса (`status`):
|
||
|
||
- `PENDING` — запрос в процессе обработки;
|
||
- `MANUAL_ACCEPTANCE` — ожидание ручного подтверждения отправки запроса-дубля на обработку;
|
||
- `AWAIT_EXTERNAL` — ожидание исполнения внешнего платежа;
|
||
- `FAILED` — обработка запроса завершилась ошибкой;
|
||
- `FAILED_DUPLICATE` — обработка запроса-дубля отклонена;
|
||
- `COMPLETE` — обработка запроса завершилась успешно.
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :------ | :-------------------- | :------------------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — недостаточно прав (проверьте настройки scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
## Навигация
|
||
|
||
- **Предыдущий метод:** [Создание запроса на возврат налоговых денежных средств](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/tax-refund/v1/tax-refund)
|
||
- **Следующий метод:** [Подтверждение или отклонение запроса-дубля на возврат налоговых денежных средств](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/tax-refund-accept/v1/tax-refund-accept)
|
||
|
||
]]>
|
||
</get_tax_refund_request_status_md>
|
||
<intro_md>
|
||
<, участвующего в выплате.
|
||
|
||
## Общий механизм выплат с номинального счёта
|
||
|
||
1. **Создайте запрос на выплату**
|
||
Метод [«Создание запроса на выплату с номинального счёта»](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/payoff/v1/payoff)
|
||
|
||
2. **Получите статус запроса на выплату**
|
||
Метод [«Получение статуса запроса на выплату с номинального счёта»](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-payoff-request-status/v1/get-payoff-request-status)
|
||
|
||
3. **Подтвердите или отклоните обработку запроса-дубля на выплату**
|
||
В случае, если статус запроса на выплату уже был создан ранее, он примет статус `MANUAL_ACCEPTANCE` и его нужно будет подтвердить или отклонить.
|
||
Метод [«Подтвердить или отклонить запрос-дубль на выплату»](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/payoff-accept/v1/payoff-accept)
|
||
|
||
4. **Получите информацию о платеже по его идентификатору**
|
||
Метод [«Получение информации о платеже»](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-payoff/v1/get-payoff)
|
||
|
||
---
|
||
|
||
Выплаты с номинального счёта делятся на два типа:
|
||
|
||
- выплаты без биллинга на стороне Банка;
|
||
- выплаты с биллингом на стороне Банка.
|
||
|
||
## Выплаты без биллинга на стороне Банка
|
||
|
||
Данный тип выплаты позволяет произвести выплату с номинального счёта в пользу зарегистрированного контрагента без создания сделки.
|
||
|
||
Необходимо учитывать:
|
||
|
||
- На номинальном счёте должен быть положительный баланс.
|
||
- Если выплата производится в пользу универсального реципиента, то для него предварительно необходимо зарегистрировать платёжные реквизиты с помощью метода [«Добавление платёжных реквизитов универсального реципиента»](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/add-requisites/v1/add-requisites).
|
||
|
||
В качестве платёжных реквизитов получателя могут быть указаны:
|
||
|
||
- реквизиты счёта;
|
||
- номер телефона (СБП);
|
||
- зашифрованный номер карты (как зашифровать номер карты, описано [здесь](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/cardtoken/cardtoken));
|
||
- идентификатор платёжных реквизитов контрагента.
|
||
|
||
## Выплаты с биллингом на стороне Банка
|
||
|
||
> **Важно**
|
||
>
|
||
> У бенефициара должен быть положительный баланс на налоговом виртуальном счёте.
|
||
|
||
- **Вывод собственных средств бенефициара с номинального счёта.** Позволяет вывести с номинального счёта денежные средства бенефициара без создания сделки.
|
||
- **Выплата с целью уплаты налога на профессиональный доход за исполнителя.** Позволяет аккумулировать денежные средства на виртуальном налоговом счёте исполнителя и перевести денежные средства бенефициара, задепонированные с целью уплаты налога на профессиональный доход за исполнителя, на счёт в управление казначейства.
|
||
- **Возврат денежных средств с налогового виртуального кошелька.** Позволяет вернуть денежные средства бенефициара, задепонированные с целью уплаты налога на профессиональный доход за исполнителя, если оплата налога не потребовалась.
|
||
|
||
### Механизм возврата денежных средств с налогового виртуального кошелька
|
||
|
||
1. **Создайте запрос на возврат денежных средств с налогового виртуального кошелька**
|
||
Метод [«Создание запроса на возврат денежных средств с налогового виртуального кошелька»](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/tax-refund/v1/tax-refund)
|
||
|
||
2. **Получите статус запроса на возврат налоговых денежных средств**
|
||
Метод [«Получение статуса запроса на возврат налоговых денежных средств»](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-tax-refund-request-status/v1/get-tax-refund-request-status)
|
||
|
||
3. **Подтвердите или отклоните обработку запроса-дубля на возврат денежных средств с налогового виртуального кошелька**
|
||
В случае, если статус запроса на выплату уже был создан ранее, он примет статус `MANUAL_ACCEPTANCE` и его нужно будет подтвердить или отклонить.
|
||
Метод [«Подтверждение или отклонение запроса-дубля на возврат денежных средств с налогового виртуального кошелька»](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/tax-refund-accept/v1/tax-refund-accept)
|
||
|
||
]]>
|
||
</intro_md>
|
||
<payoff_accept_md>
|
||
< |
|
||
| **Accept** | string | Да | `application/json` |
|
||
| **Content-Type** | string | Да | `application/json` |
|
||
|
||
### Path (Путь)
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **payoffId** | string | Да | Идентификатор запроса, полученный методом [«Создание запроса на выплату с номинального счёта»](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/payoff/v1/payoff) |
|
||
|
||
### Body (Тело запроса)
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **accept** | boolean | Да | Флаг обработки запроса-дубля:<br>• `true` – продолжить обработку;<br>• `false` – завершить (отклонить) обработку. |
|
||
|
||
### Пример запроса (cURL)
|
||
```bash
|
||
curl --location --globoff --request PATCH 'https://baas.alfabank.ru/api/na/jp/v1/payoffs/{payoffId}/accept' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"accept": true
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **result** | boolean | Да | Статус обработки:<br>• `true` – обработка продолжена;<br>• `false` – обработка завершена. |
|
||
|
||
**Пример JSON:**
|
||
```json
|
||
{
|
||
"result": true
|
||
}
|
||
```
|
||
|
||
### Ошибки
|
||
| Код | Описание (error) | Описание (error_description) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | `invalid_request` | Неверные входные параметры запроса. |
|
||
| **401** | `invalid_token` | Токен просрочен, отозван или имеет неверный формат. |
|
||
| **403** | `insufficient_scope` | Нет прав на использование сервиса (недостаточный scope). |
|
||
| **404** | `unknown_endpoint` | Эндпоинт не найден или неактивен. |
|
||
| **429** | — | Too Many Requests (слишком много запросов). Тело ответа отсутствует. |
|
||
| **500** | `internal_error` | Внутренняя ошибка сервиса. |
|
||
| **503** | — | Service Unavailable (сервис недоступен). Тело ответа отсутствует. |
|
||
|
||
---
|
||
|
||
## Навигация
|
||
* **Назад:** [Получение статуса запроса на выплату с номинального счёта](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-payoff-request-status/v1/get-payoff-request-status)
|
||
* **Вперед:** [Получение информации о платеже](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-payoff/v1/get-payoff)
|
||
|
||
]]>
|
||
</payoff_accept_md>
|
||
<payoff_md>
|
||
<![CDATA[
|
||
Вот очищенная и структурированная версия документа в формате Markdown.
|
||
|
||
---
|
||
|
||
# Создание запроса на выплату с номинального счёта
|
||
|
||
**Тип интеграции:** H2H
|
||
**Scope:** `beneficiary-payments`
|
||
|
||
## Эндпоинты
|
||
|
||
* **Песочница:** `POST https://sandbox.alfabank.ru/api/na/jp/v1/payoffs`
|
||
* **Пром:** `POST https://baas.alfabank.ru/api/na/jp/v1/payoffs`
|
||
|
||
## Описание
|
||
Метод позволяет вывести собственные средства бенефициара с номинального счёта по заранее зарегистрированным платёжным реквизитам (с биллингом) или осуществить выплату зарегистрированным контрагентам (без биллинга).
|
||
|
||
> [!IMPORTANT]
|
||
> **Важно**
|
||
> Если идентичный запрос на выплату уже был создан ранее, то текущий запрос примет статус `MANUAL_ACCEPTANCE`. Его нужно будет подтвердить или отклонить с помощью метода [«Подтверждение или отклонение запроса-дубля на выплату»](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/payoff-accept/v1/payoff-accept).
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **Authorization** | string | Да | Bearer {access_token}, полученный по [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | string | Да | `application/json` |
|
||
| **Content-Type** | string | Да | `application/json` |
|
||
|
||
### BODY
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **type** | string | Да | Тип платежа: `REGULAR` (обычный), `TAX` (налоговый) |
|
||
| **accountNumber** | string | Да | Номер номинального счёта |
|
||
| **deponent** | string | Нет | Идентификатор бенефициара-плательщика |
|
||
| **recipient** | object | Да | **Получатель** (см. ниже) |
|
||
| **payoutRequisite** | object | Да | **Реквизиты обычного платежа** (см. ниже) |
|
||
| **requisites** | object | Нет | **Реквизиты для налогового платежа** (см. ниже) |
|
||
| **amount** | string | Да | Сумма в рублях |
|
||
| **purpose** | string | Да | Назначение платежа |
|
||
| **tax** | object | Нет | **Параметры для налогового платежа** (см. ниже) |
|
||
| **digestSignatures** | array | Да | **Электронная подпись УЛ клиента** (см. ниже) |
|
||
|
||
#### Вложенный объект: recipient (Получатель)
|
||
* **type** (string, обязат.): Тип получателя. Значения: `BENEFICIARY` (контрагент), `SIMPLE_PAYEE` (простой получатель).
|
||
* **name** (string, опц.): Наименование (ФИО для ФЛ, название для ЮЛ/ИП). Обязательно для `SIMPLE_PAYEE`.
|
||
* **inn** (string, опц.): ИНН (12 цифр для ФЛ/ИП, 10 для ЮЛ). Обязательно для `SIMPLE_PAYEE`.
|
||
* **kpp** (string, опц.): КПП получателя.
|
||
* **beneficiaryId** (string, опц.): Идентификатор контрагента. Обязательно для `BENEFICIARY`.
|
||
|
||
#### Вложенный объект: payoutRequisite (Реквизиты выплаты)
|
||
* **type** (string, обязат.): Тип реквизита: `ACCOUNT`, `CARD`, `PHONE`, `BENEFICIARY_REQUISITE`.
|
||
* **requisiteId** (string, опц.): ID реквизитов контрагента. Обязательно для `BENEFICIARY_REQUISITE`.
|
||
* **pan** (string, опц.): Токен номера карты. Обязательно для `CARD`. [Инструкция по токенизации](/products/alfa-api/documentation/articles/nominal-accounts/articles/cardtoken/cardtoken).
|
||
* **phoneNumber** (string, опц.): Номер телефона. Обязательно для `PHONE`.
|
||
* **bankId** (string, опц.): ID банка получателя. Обязательно для `PHONE`.
|
||
* **accountNumber** (string, опц.): Номер счёта. Обязательно для `ACCOUNT`.
|
||
* **bik** (string, опц.): БИК банка. Обязательно для `ACCOUNT`.
|
||
|
||
#### Вложенный объект: tax (Налоговые параметры)
|
||
* **uin** (string, обязат.): УИН (поле 22).
|
||
* **payerStatus** (string, обязат.): Статус составителя (поле 101). Примеры: `01`, `02`, `08`, `13` и др.
|
||
* **kbk** (string, обязат.): КБК (поле 104).
|
||
* **oktmo** (string, обязат.): ОКТМО (поле 105).
|
||
* **reason** (string, обязат.): Основание платежа (поле 106). Примеры: `ТП`, `ЗД`, `0`.
|
||
* **period** (string, обязат.): Налоговый период (поле 107). Формат ДД.ММ.ГГГГ или `0`.
|
||
* **docNumber** (string, обязат.): Номер документа (поле 108).
|
||
* **docDate** (string, обязат.): Дата документа (поле 109).
|
||
* **paymentKind** (string, опц.): Код типа платежа (поле 110). `ПЕ`, `ПЦ` или `0`.
|
||
|
||
#### Вложенный объект: digestSignatures (Подписи)
|
||
* **base64Encoded** (string, обязат.): Значение подписи в Base64.
|
||
* **signatureType** (string, обязат.): Тип подписи: `rsa` или `kep`.
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/api/na/jp/v1/payoffs' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"type": "REGULAR",
|
||
"accountNumber": "40817810306050000000",
|
||
"deponent": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"recipient": {
|
||
"type": "BENEFICIARY",
|
||
"name": "Иванов Иван Иванович",
|
||
"inn": "112233445566",
|
||
"kpp": "123456789",
|
||
"beneficiaryId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
||
},
|
||
"payoutRequisite": {
|
||
"type": "ACCOUNT",
|
||
"requisiteId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"pan": "wS7fElYo8VWeJ8KelaJ0XA==",
|
||
"phoneNumber": "79130000011",
|
||
"bankId": "012345678910",
|
||
"accountNumber": "40817810306050000000",
|
||
"bik": "044525593"
|
||
},
|
||
"amount": "10.00",
|
||
"purpose": "Назначение платежа",
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (202 Accepted)
|
||
```json
|
||
{
|
||
"payoffId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "PENDING"
|
||
}
|
||
```
|
||
|
||
**Описание полей ответа:**
|
||
* **payoffId** (string): Уникальный идентификатор платежа.
|
||
* **status** (string): Статус запроса. Возможные значения:
|
||
* `PENDING` — в процессе обработки.
|
||
* `MANUAL_ACCEPTANCE` — ожидание ручного подтверждения (для дублей).
|
||
* `AWAIT_EXTERNAL` — ожидание исполнения внешнего платежа.
|
||
* `FAILED` — ошибка обработки.
|
||
* `FAILED_DUPLICATE` — запрос-дубль отклонен.
|
||
* `COMPLETE` — успешно завершено.
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав доступа |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
**Навигация:**
|
||
* [Как это работает](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/intro/intro)
|
||
* [Получение статуса запроса на выплату](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-payoff-request-status/v1/get-payoff-request-status)
|
||
|
||
]]>
|
||
</payoff_md>
|
||
<tax_refund_accept_md>
|
||
< |
|
||
| **Accept** | string | required | `application/json` |
|
||
|
||
### PATH (Путь)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------- | :----- | :------------- | :------------------------------- |
|
||
| **taxRefundId** | string | required | Идентификатор запроса на возврат |
|
||
|
||
### QUERY (Параметры строки)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--------- | :------ | :------------- | :-------------------------------------------------------------------------------------------------------- |
|
||
| **accept** | boolean | required | Флаг обработки дубля:<br>• `true` – продолжить обработку;<br>• `false` – завершить (отклонить) обработку. |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff --request PATCH \
|
||
'https://baas.alfabank.ru/api/na/jp/v1/tax-refund/{taxRefundId}/accept?accept={accept}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
**Тело ответа (JSON):**
|
||
|
||
```json
|
||
{
|
||
"result": true
|
||
}
|
||
```
|
||
|
||
**Описание полей:**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **result** | boolean | required | Статус обработки: `true` — продолжена, `false` — завершена. |
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Статус | Ошибка (`error`) | Описание |
|
||
| :------ | :------------------ | :------------------- | :----------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` | Неверные входные параметры запроса. |
|
||
| **401** | Unauthorized | `invalid_token` | Токен просрочен, отозван или имеет неверный формат. |
|
||
| **403** | Forbidden | `insufficient_scope` | Нет прав на использование сервиса (не настроен scope). |
|
||
| **404** | Not Found | `unknown_endpoint` | Эндпоинт не найден или неактивен. |
|
||
| **429** | Too Many Requests | — | Слишком много запросов (нет тела ответа). |
|
||
| **500** | Internal Error | `internal_error` | Внутренняя ошибка сервиса. |
|
||
| **503** | Service Unavailable | — | Сервис временно недоступен (нет тела ответа). |
|
||
|
||
---
|
||
|
||
## Навигация
|
||
|
||
- **Предыдущий шаг:** [Получение статуса запроса на возврат налоговых денежных средств](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-tax-refund-request-status/v1/get-tax-refund-request-status)
|
||
- **Раздел:** Номинальные счета / Выплаты
|
||
|
||
]]>
|
||
</tax_refund_accept_md>
|
||
<tax_refund_md>
|
||
<![CDATA[
|
||
# Создание запроса на возврат налоговых денежных средств
|
||
|
||
**Продукт:** Alfa API / Номинальные счета / Выплаты
|
||
**Тип интеграции:** H2H
|
||
**Scope:** `beneficiary-payments`
|
||
|
||
## Эндпоинты
|
||
|
||
| Окружение | Метод | URL |
|
||
| :------------ | :----- | :---------------------------------------------------- |
|
||
| **Песочница** | `POST` | `https://sandbox.alfabank.ru/api/na/jp/v1/tax-refund` |
|
||
| **Пром** | `POST` | `https://baas.alfabank.ru/api/na/jp/v1/tax-refund` |
|
||
|
||
## Описание
|
||
|
||
Метод позволяет создать запрос на возврат бенефициару его денежных средств с налогового кошелька, если оплата налога не потребовалась.
|
||
|
||
- Если нужно вернуть налоговые средства на основной виртуальный счёт бенефициара без вывода с номинального счёта, передавайте `keepOnNominalAccount = true`.
|
||
- Если нужно вернуть налоговые средства бенефициару с выводом с номинального счёта, передавайте `keepOnNominalAccount = false`.
|
||
|
||
> [!IMPORTANT]
|
||
> **Важно**
|
||
> Если идентичный запрос на возврат налоговых денежных средств уже был создан ранее, то текущий запрос примет статус `MANUAL_ACCEPTANCE`. Его нужно будет подтвердить или отклонить с помощью метода [«Подтверждение или отклонение запроса-дубля на возврат налоговых денежных средств»](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/tax-refund-accept/v1/tax-refund-accept).
|
||
|
||
## Параметры запроса
|
||
|
||
### Заголовки (Headers)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :----- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **Authorization** | string | required | Bearer {access_token}, полученный по [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | string | required | `application/json` |
|
||
| **Content-Type** | string | required | `application/json` |
|
||
|
||
### Тело запроса (Body)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------------------- | :------ | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **beneficiaryId** | string | required | Идентификатор бенефициара |
|
||
| **amount** | string | required | Сумма |
|
||
| **purpose** | string | required | Назначение платежа |
|
||
| **keepOnNominalAccount** | boolean | required | Признак вывода денег на основной виртуальный счёт. <br>• `true` — оставить в рамках номинального счёта; <br>• `false` — вывести по идентификатору платёжного реквизита бенефициара. |
|
||
| **requisiteId** | string | optional | Идентификатор платёжного реквизита бенефициара для вывода. Если не заполнено, используются основные реквизиты. |
|
||
| **digestSignatures** | array | required | Массив объектов электронной подписи УЛ клиента. |
|
||
|
||
**Объект в digestSignatures:**
|
||
|
||
- **base64Encoded** (string, required): Значение электронной подписи в Base64.
|
||
- **signatureType** (string, required): Тип подписи: `rsa` (RSA) или `kep` (КЭП).
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/api/na/jp/v1/tax-refund' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"beneficiaryId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"amount": "10.00",
|
||
"purpose": "Назначение платежа",
|
||
"keepOnNominalAccount": false,
|
||
"requisiteId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (202 Accepted)
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :-------------- | :----- | :------------- | :--------------------------------------- |
|
||
| **taxRefundId** | string | required | Идентификатор возврата налоговых средств |
|
||
| **status** | string | required | Статус запроса (см. ниже) |
|
||
|
||
**Возможные значения статуса:**
|
||
|
||
- `PENDING` — запрос в процессе обработки;
|
||
- `MANUAL_ACCEPTANCE` — ожидание ручного подтверждения запроса-дубля;
|
||
- `AWAIT_EXTERNAL` — ожидание исполнения внешнего платежа;
|
||
- `FAILED` — ошибка обработки;
|
||
- `FAILED_DUPLICATE` — запрос-дубль отклонен;
|
||
- `COMPLETE` — успешно завершено.
|
||
|
||
**Пример ответа 202:**
|
||
|
||
```json
|
||
{
|
||
"taxRefundId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "PENDING"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :------ | :------------------ | :---------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен недействителен или просрочен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав (недостаточный scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
**Связанные методы:**
|
||
|
||
- [Получение информации о платеже](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-payoff/v1/get-payoff)
|
||
- [Получение статуса запроса на возврат налоговых денежных средств](/products/alfa-api/documentation/articles/nominal-accounts/articles/na-payments/articles/get-tax-refund-request-status/v1/get-tax-refund-request-status)
|
||
|
||
]]>
|
||
</tax_refund_md>
|
||
</Выплаты>
|
||
<Идентификация_пополнений>
|
||
<get_identify_request_status_md>
|
||
< |
|
||
| **Accept** _string, required_ | application/json |
|
||
|
||
#### PATH
|
||
|
||
| Атрибут | Описание |
|
||
| :-------------------------------- | :--------------------------------------------------------- |
|
||
| **id** _string, required_ | Идентификатор операции пополнения |
|
||
| **identifyId** _string, required_ | Идентификатор запроса на идентификацию операции пополнения |
|
||
|
||
---
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/unidentified-transactions/{id}/identify/{identifyId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
#### 200 (OK) — BODY
|
||
|
||
| Атрибут | Описание |
|
||
| :--------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **identifyId** _string, required_ | Идентификатор запроса на идентификацию операции пополнения |
|
||
| **status** _string, required_ | Статус запроса. Возможные значения: `PENDING` - в процессе обработки;`VALIDATED` - провалидирован;`FAILED` - возникла ошибка;`COMPLETE` - обработан успешно |
|
||
| **description** _string, optional_ | Описание причины, по которой запрос завершился неудачей. Возвращается, если статус запроса равен `FAILED` |
|
||
|
||
#### Пример ответа 200 (OK)
|
||
|
||
```json
|
||
{
|
||
"identifyId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "PENDING",
|
||
"description": "Произошла техническая ошибка. Обратитесь в службу поддержки и сообщите код ошибки afc9b019-77ac-49ef-afb9-688b38b74cc2"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### Ошибки
|
||
|
||
| Код | Описание |
|
||
| :-------------------------- | :------------------------------------------------------------------- |
|
||
| **400 Bad Request** | `invalid_request` — неверные входные параметры запроса |
|
||
| **401 Unauthorized** | `invalid_token` — предоставленный токен просрочен или недействителен |
|
||
| **403 Forbidden** | `insufficient_scope` — недостаточно прав (не настроен scope) |
|
||
| **404 Not Found** | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429 Too Many Requests** | Превышен лимит запросов (тело ответа отсутствует) |
|
||
| **500 Internal Error** | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503 Service Unavailable** | Сервис временно недоступен (тело ответа отсутствует) |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [Предыдущий метод: Создание запроса на идентификацию](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/identify/v1/identify)
|
||
- [Следующий метод: Создание запроса на возврат](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/transaction-refund/v1/transaction-refund)
|
||
|
||
]]>
|
||
</get_identify_request_status_md>
|
||
<get_transaction_refund_request_status_md>
|
||
< |
|
||
| **Accept** <br>`string`, required | application/json |
|
||
|
||
### PATH
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **id** <br>`string`, required | Идентификатор операции пополнения, по которой необходимо вернуть денежные средства |
|
||
| **refundId** <br>`string`, required | Идентификатор запроса на возврат неидентифицированного пополнения, полученный с помощью метода [«Создание запроса на возврат неидентифицированного пополнения»](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/transaction-refund/v1/transaction-refund) |
|
||
|
||
### Пример запроса (cURL)
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/unidentified-transactions/{id}/refunds/{refundId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 (OK)
|
||
**BODY**
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **refundId** <br>`string`, required | Уникальный идентификатор запроса на возврат неидентифицированного пополнения |
|
||
| **status** <br>`string`, required | Статус запроса. Принимает возможные значения: <br>• `PENDING` - запрос в процессе обработки;<br>• `FAILED` - обработка запроса завершилась ошибкой;<br>• `COMPLETE` - обработка запроса завершилась успешно |
|
||
| **description** <br>`string`, optional | Описание причины, по которой запрос завершился ошибкой. <br>**Примечание:** поле доступно только при статусе запроса `FAILED` |
|
||
|
||
#### Пример ответа 200 (OK)
|
||
```json
|
||
{
|
||
"refundId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "FAILED",
|
||
"description": "Произошла техническая ошибка. Обратитесь в службу поддержки и сообщите код ошибки afc9b019-77ac-49ef-afb9-688b38b74cc2"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Возможные значения `error` |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав (отсутствует нужный scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
**Навигация:**
|
||
* Предыдущий метод: [Создание запроса на возврат неидентифицированного пополнения](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/transaction-refund/v1/transaction-refund)
|
||
* Следующий раздел: [Безопасные сделки: Как это работает](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/intro/intro)
|
||
|
||
]]>
|
||
</get_transaction_refund_request_status_md>
|
||
<get_unidentified_transactions_md>
|
||
< |
|
||
| **Accept** | string | required | application/json |
|
||
|
||
### QUERY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **accountNumber** | string | required | Номер номинального счёта |
|
||
| **limit** | integer | optional | Количество объектов на одной странице |
|
||
| **offset** | integer | optional | Количество объектов в списке, которые необходимо пропустить |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/unidentified-transactions?accountNumber=40817810306050000000&limit=100&offset={offset}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Ответ 200 (OK) — BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **offset** | integer | required | Порядковый номер первого неидентифицированного пополнения в списке |
|
||
| **limit** | integer | required | Порядковый номер последнего неидентифицированного пополнения в списке |
|
||
| **totalCount** | integer | required | Всего неидентифицированных пополнений |
|
||
| **unidentifiedTransactions** | array of objects | optional | Список неидентифицированных пополнений |
|
||
|
||
#### Объект unidentifiedTransactions:
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **id** | string | required | ID операции пополнения |
|
||
| **documentNumber** | string | optional | Номер платёжного поручения |
|
||
| **date** | string | optional | Дата и время пополнения по МСК |
|
||
| **amount** | string | required | Сумма пополнения в рублях |
|
||
| **purpose** | string | optional | Назначение платежа |
|
||
| **payer** | object | optional | Информация о плательщике |
|
||
|
||
#### Объект payer:
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **inn** | string | optional | ИНН плательщика |
|
||
| **kpp** | string | optional | КПП плательщика |
|
||
| **accountNumber** | string | optional | Номер счёта плательщика |
|
||
| **name** | string | optional | Имя плательщика |
|
||
| **bankAccount** | string | optional | Номер счёта банка плательщика |
|
||
| **bankBik** | string | optional | БИК банка плательщика |
|
||
| **bankName** | string | optional | Наименования банка плательщика |
|
||
|
||
### Пример ответа 200
|
||
|
||
```json
|
||
{
|
||
"offset": 0,
|
||
"limit": 100,
|
||
"totalCount": 1,
|
||
"unidentifiedTransactions": [
|
||
{
|
||
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"documentNumber": "Номер платёжного поручения",
|
||
"date": "2025-04-08T10:47:17.927Z",
|
||
"amount": "10.00",
|
||
"purpose": "Назначение платежа",
|
||
"payer": {
|
||
"inn": "221284672706",
|
||
"kpp": "641914992",
|
||
"accountNumber": "87149728127096890679",
|
||
"name": "Имя плательщика",
|
||
"bankAccount": "3932755239052037086628",
|
||
"bankBik": "108997635",
|
||
"bankName": "Наименования банка плательщика"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание (error) | error_description / Комментарий |
|
||
| :--- | :--- | :--- |
|
||
| **400** | `invalid_request` | неверные входные параметры запроса |
|
||
| **401** | `invalid_token` | предоставленный токен просрочен, отозван или недействителен |
|
||
| **403** | `insufficient_scope` | у пользователя нет прав на использование сервиса (настройки scope) |
|
||
| **404** | `unknown_endpoint` | эндпоинт не найден или неактивен |
|
||
| **429** | — | Too Many Requests (Нет тела ответа) |
|
||
| **500** | `internal_error` | внутренняя ошибка сервиса |
|
||
| **503** | — | Service Unavailable (Нет тела ответа) |
|
||
|
||
]]>
|
||
</get_unidentified_transactions_md>
|
||
<how_it_works_intro_md>
|
||
<
|
||
|
||
2. **Создать запрос на идентификацию денежных средств**
|
||
- Метод [«Создание запроса на идентификацию пополнения номинального счёта»](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/identify/v1/identify)
|
||
|
||
3. **Получить статус запроса на идентификацию денежных средств**
|
||
- Метод [«Получение статуса запроса на идентификацию пополнения номинального счёта»](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/get-identify-request-status/v1/get-identify-request-status)
|
||
|
||
---
|
||
|
||
### Навигация
|
||
|
||
- ← [Изменение признаков платёжных реквизитов универсального реципиента](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/change-requisites/v1/change-requisites)
|
||
- → [Получение списка неидентифицированных пополнений номинального счёта](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/get-unidentified-transactions/v1/get-unidentified-transactions)
|
||
|
||
]]>
|
||
</how_it_works_intro_md>
|
||
<identify_md>
|
||
< |
|
||
| **Accept** | string | Да | application/json |
|
||
| **Content-Type** | string | Да | application/json |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **id** | string | Да | Идентификатор операции пополнения, которую необходимо распределить между бенефициарами |
|
||
|
||
### BODY
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **transactionId** | string | Да | Идентификатор операции пополнения |
|
||
| **accountNumber** | string | Да | Номер номинального счёта |
|
||
| **amountDistribution** | array of objects | Да | Распределение денежных средств (список бенефициаров) |
|
||
| └─ **beneficiaryId** | string | Да | Идентификатор бенефициара |
|
||
| └─ **amount** | string | Да | Сумма пополнения в рублях |
|
||
| **digestSignatures** | array of objects | Да | Электронная подпись УЛ клиента |
|
||
| └─ **base64Encoded** | string | Да | Значение электронной подписи в Base64 |
|
||
| └─ **signatureType** | string | Да | Тип подписи: `rsa` (RSA) или `kep` (КЭП) |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/unidentified-transactions/{id}/identify' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"transactionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"accountNumber": "40817810306050000000",
|
||
"amountDistribution": [
|
||
{
|
||
"beneficiaryId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"amount": "10.00"
|
||
}
|
||
],
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 202 Accepted (Успешно принято)
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **identifyId** | string | Идентификатор созданного запроса |
|
||
| **status** | string | Статус запроса: `PENDING` (в процессе), `VALIDATED` (провалидирован), `FAILED` (ошибка), `COMPLETE` (успешно) |
|
||
|
||
**Пример ответа 202:**
|
||
```json
|
||
{
|
||
"identifyId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "PENDING"
|
||
}
|
||
```
|
||
|
||
### Ошибки
|
||
* **400 Bad Request:** `invalid_request` — неверные входные параметры.
|
||
* **401 Unauthorized:** `invalid_token` — токен просрочен или недействителен.
|
||
* **403 Forbidden:** `insufficient_scope` — нет прав на использование сервиса.
|
||
* **404 Not Found:** `unknown_endpoint` — эндпоинт не найден.
|
||
* **429 Too Many Requests:** Превышен лимит запросов (тело ответа отсутствует).
|
||
* **500 Internal Server Error:** `internal_error` — внутренняя ошибка сервиса.
|
||
* **503 Service Unavailable:** Сервис временно недоступен (тело ответа отсутствует).
|
||
|
||
---
|
||
**Навигация:**
|
||
* [Предыдущая: Получение списка неидентифицированных пополнений](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/get-unidentified-transactions/v1/get-unidentified-transactions)
|
||
* [Следующая: Получение статуса запроса на идентификацию](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/get-identify-request-status/v1/get-identify-request-status)
|
||
|
||
]]>
|
||
</identify_md>
|
||
<transaction_refund_md>
|
||
< |
|
||
| **Accept** | string | required | application/json |
|
||
| **Content-Type** | string | required | application/json |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **id** | string | required | Идентификатор операции пополнения, по которой необходимо вернуть денежные средства |
|
||
|
||
### BODY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **accountNumber** | string | required | Номер номинального счета |
|
||
| **id** | string | required | Идентификатор операции пополнения, по которой необходимо вернуть денежные средства |
|
||
| **digestSignatures** | array of objects | required | Электронная подпись УЛ клиента (см. детали ниже) |
|
||
|
||
#### Детали объекта digestSignatures
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **base64Encoded** | string | required | Значение электронной подписи, закодированное в Base64 |
|
||
| **certificateUuid** | string | optional | Идентификатор сертификата, использованного при создании электронной подписи |
|
||
| **signatureType** | string | required | Тип электронной подписи. Возможные значения: `rsa` (RSA), `kep` (КЭП) |
|
||
| **poaNumber** | string | optional | Номер машиночитаемой доверенности |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/unidentified-transactions/{id}/refunds' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"accountNumber": "40817810306050000000",
|
||
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"certificateUuid": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"signatureType": "rsa",
|
||
"poaNumber": "DOVER_CBR_7702235133_20211102_1"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 202 (Accepted)
|
||
Запрос успешно принят в обработку.
|
||
|
||
**Пример тела ответа:**
|
||
```json
|
||
{
|
||
"refundId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "PENDING"
|
||
}
|
||
```
|
||
|
||
**Описание полей:**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **refundId** | string | required | Уникальный идентификатор запроса на возврат неидентифицированного пополнения |
|
||
| **status** | string | required | Статус запроса: `PENDING` (в процессе), `FAILED` (ошибка), `COMPLETE` (успешно) |
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Превышено количество запросов (нет тела ответа) |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Сервис недоступен (нет тела ответа) |
|
||
|
||
---
|
||
|
||
**Следующие шаги:**
|
||
* [Получение статуса запроса на возврат неидентифицированного пополнения](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/get-transaction-refund-request-status/v1/get-transaction-refund-request-status)
|
||
* [Получение статуса запроса на идентификацию пополнения](/products/alfa-api/documentation/articles/nominal-accounts/articles/identify-transactions/articles/get-identify-request-status/v1/get-identify-request-status)
|
||
|
||
]]>
|
||
</transaction_refund_md>
|
||
</Идентификация_пополнений>
|
||
<Контрагенты>
|
||
<get_request_status_md>
|
||
< |
|
||
| **Accept** | string | required | `application/json` |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------ | :----- | :------------- | :-------------------------------------------------------------------------------------------------------- |
|
||
| **requestId** | string | required | Идентификатор запроса, полученный при создании запроса на регистрацию, изменение или проверку контрагента |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/requests/{requestId}/status' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
**Пример тела ответа:**
|
||
|
||
```json
|
||
{
|
||
"requestId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "COMPLETE",
|
||
"beneficiaryId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"universalRecipientId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"description": "Произошла техническая ошибка. Обратитесь в службу поддержки и сообщите код ошибки afc9b019-77ac-49ef-afb9-688b38b74cc2",
|
||
"resultData": "Данные субъекта не прошли проверку: N05 PBS0023\nСубъект не прошел скоринг и деактивирован в системе.\n"
|
||
}
|
||
```
|
||
|
||
**Описание полей BODY:**
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :----------------------- | :----- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **requestId** | string | required | Идентификатор запроса |
|
||
| **status** | string | required | Статус запроса. Возможные значения:<br>• `PENDING` – запрос в процессе обработки;<br>• `FAILED` – обработка запроса завершилась ошибкой;<br>• `COMPLETE` – обработка запроса завершилась успешно |
|
||
| **beneficiaryId** | string | optional | Идентификатор бенефициара. Возвращается при получении статуса запроса на регистрацию бенефициара |
|
||
| **universalRecipientId** | string | optional | Идентификатор универсального реципиента. Возвращается при получении статуса запроса на регистрацию универсального реципиента |
|
||
| **description** | string | optional | Описание причины, по которой запрос завершился неудачей. Возвращается, если статус запроса равен `FAILED` |
|
||
| **resultData** | string | optional | Результаты прохождения проверки. Возвращается при получении статуса запроса на проверку бенефициара |
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Ошибка (`error`) | Детали |
|
||
| :------ | :-------------------- | :------------------- | :--------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` | Неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` | Токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` | Нет прав на использование сервиса (настройки scope) |
|
||
| **404** | Not Found | `unknown_endpoint` | Эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | — | Превышен лимит запросов (тело ответа отсутствует) |
|
||
| **500** | Internal Server Error | `internal_error` | Внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | — | Сервис временно недоступен (тело ответа отсутствует) |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [← Как это работает](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/intro/intro)
|
||
- [Создание запроса на регистрацию бенефициара →](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/add-beneficiary/v1/add-beneficiary)
|
||
|
||
]]>
|
||
</get_request_status_md>
|
||
<intro_md>
|
||
<
|
||
* [«Получение статуса запроса»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/get-request-status/v1/get-request-status)
|
||
|
||
**Универсальные реципиенты**
|
||
При осуществлении переводов с номинального счёта, помимо бенефициаров, получателем денежных средств может быть универсальный реципиент. Для участия универсального реципиента в сделке его также необходимо зарегистрировать.
|
||
Каждому универсальному реципиенту в рамках номинального счёта будет присвоен уникальный идентификатор — `universalRecipientId`.
|
||
|
||
Для этого используются методы:
|
||
* [«Создание запроса на регистрацию универсального реципиента»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/add-ur/v1/add-ur)
|
||
* [«Получение статуса запроса»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/get-request-status/v1/get-request-status)
|
||
|
||
### 2. Зарегистрируйте платёжные реквизиты контрагентов
|
||
|
||
После регистрации бенефициара или универсального реципиента необходимо указать платёжные реквизиты, на которые он будет получать денежные средства.
|
||
|
||
Для этого используются методы:
|
||
* [«Добавление платёжных реквизитов бенефициара»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/add-requisites/v1/add-requisites)
|
||
* [«Добавление платёжных реквизитов универсального реципиента»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/add-requisites/v1/add-requisites)
|
||
|
||
---
|
||
|
||
## Изменение информации о бенефициаре
|
||
|
||
Изменить данные о бенефициаре можно с помощью методов:
|
||
* [«Создание запроса на изменение информации о бенефициаре»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/change-beneficiary/v1/change-beneficiary)
|
||
* [«Получение статуса запроса»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/get-request-status/v1/get-request-status)
|
||
|
||
В случае, если бенефициар больше не является участником расчётов и на его виртуальных счетах не осталось денежных средств, необходимо направить запрос на деактивацию бенефициара. Если в дальнейшем на номинальный счёт деактивированного бенефициара снова поступят денежные средства, его необходимо будет активировать.
|
||
|
||
## Проверка актуальности данных бенефициара
|
||
|
||
Проверить актуальность ранее зарегистрированных данных о бенефициаре можно с помощью методов:
|
||
* [«Создание запроса на проверку бенефициара»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/beneficiary-scoring/v1/beneficiary-scoring)
|
||
* [«Получение статуса запроса»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/get-request-status/v1/get-request-status)
|
||
|
||
## Изменение признаков платёжных реквизитов контрагентов
|
||
|
||
Изменить признаки платёжных реквизитов контрагентов можно с помощью методов:
|
||
* [«Изменение признаков платёжных реквизитов бенефициара»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/change-requisites/v1/change-requisites)
|
||
* [«Изменение признаков платёжных реквизитов универсального реципиента»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/change-requisites/v1/change-requisites)
|
||
|
||
---
|
||
|
||
## Учёт денежных средств бенефициара
|
||
|
||
> **Важно**
|
||
> Биллинг для универсальных реципиентов не проводится, поскольку они не являются бенефициарами и не могут иметь собственных средств на номинальном счёте.
|
||
|
||
> **Внимание**
|
||
> Учёт денежных средств на виртуальных счетах бенефициаров будет вестись корректно только при условии, что владелец номинального счёта не использует другие каналы вывода средств (банк-клиент, бумажные поручения и др.).
|
||
|
||
Для учёта денежных средств бенефициара — биллинга на стороне Банка — используются **виртуальные счета**.
|
||
|
||
При регистрации бенефициара по умолчанию создается **основной виртуальный счёт**. На нём учитываются денежные средства, права на которые принадлежат бенефициару. В случае необходимости уплаты налога (при [добавлении бенефициара в качестве реципиента в этап сделки](/products/alfa-api/documentation/articles/nominal-accounts/articles/deals/articles/step-contractors/v1/step-contractors)) дополнительно создаётся **налоговый виртуальный счёт**.
|
||
|
||
Виртуальный счёт состоит из доступных и захолдированных денежных средств:
|
||
* **Доступные денежные средства** не обременены обязательствами, их можно использовать при проведении расчётов или вывести с номинального счёта.
|
||
* **Захолдированные денежные средства** — деньги, которые уже участвуют в незавершенной сделке, их нельзя использовать для других целей или вывести.
|
||
|
||
### Информация о балансе и операциях бенефициара
|
||
* Узнать балансы по виртуальным счетам можно с помощью метода [«Получение информации о балансе бенефициара»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-balance/v1/get-balance).
|
||
* Получить список денежных операций бенефициара можно с помощью метода [«Получение списка денежных операций бенефициара»](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-transactions/v1/get-transactions).
|
||
|
||
]]>
|
||
</intro_md>
|
||
<Бенефициары>
|
||
<add_beneficiary_md>
|
||
< |
|
||
| **Accept** | string | required | application/json |
|
||
| **Content-Type** | string | required | application/json |
|
||
|
||
#### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------------------ | :------ | :------------- | :------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **accountNumber** | string | required | Номер номинального счёта |
|
||
| **type** | string | required | Тип бенефициара. Возможные значения: `FL_RESIDENT`, `FL_NONRESIDENT`, `UL_RESIDENT`, `UL_NONRESIDENT`, `IP_RESIDENT`, `IP_NONRESIDENT` |
|
||
| **taxResidentUS** | boolean | required | Признак налогового резидента США |
|
||
| **foreignTaxResident** | boolean | required | Признак иностранного налогового резидента |
|
||
| **financialActivities** | boolean | optional | Признак осуществления финансовой деятельности. Обязательно для `UL_RESIDENT` и `UL_NONRESIDENT` |
|
||
| **countryOfTaxResidence** | string | required | Страна налогового резидентства (ISO 3166-1 alpha-2) |
|
||
| **name** | string | optional | Наименование организации. Обязательно для `UL_RESIDENT` и `UL_NONRESIDENT` |
|
||
| **registrationDate** | string | optional | Дата регистрации. Обязательно для `UL_RESIDENT` и `UL_NONRESIDENT` |
|
||
| **inn** | string | optional | ИНН. Обязательно для `UL_RESIDENT` и `UL_NONRESIDENT`. Для ФЛ/ИП указывается в `personalInformation` |
|
||
| **kpp** | string | optional | КПП. Обязательно для `UL_RESIDENT` |
|
||
| **ogrn** | string | optional | ОГРН. Обязательно для `UL_RESIDENT` |
|
||
| **personalInformation** | object | optional | Персональные данные. Заполняется только для ФЛ и ИП |
|
||
| **phoneNumber** | string | optional | Телефон |
|
||
| **email** | string | optional | Адрес электронной почты |
|
||
| **addresses** | array | required | Список адресов бенефициара |
|
||
| **documents** | array | optional | Документы (подробнее ниже) |
|
||
| **digestSignatures** | array | required | Электронная подпись УЛ клиента |
|
||
|
||
---
|
||
|
||
### Детальное описание объектов
|
||
|
||
#### personalInformation (для ФЛ и ИП)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------------- | :----- | :------------------------------------------------ |
|
||
| **inn** | string | ИНН. Обязательно для резидентов и нерезидентов ИП |
|
||
| **firstName** | string | Имя |
|
||
| **middleName** | string | Отчество (optional) |
|
||
| **lastName** | string | Фамилия |
|
||
| **citizenship** | string | Гражданство: `RU`, `BY`, `AM`, `KZ`, `KG` |
|
||
| **birthDate** | string | Дата рождения |
|
||
| **birthPlace** | string | Место рождения |
|
||
| **snils** | string | СНИЛС. Обязательно для резидентов |
|
||
|
||
#### addresses
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------- | :----- | :------------------------------------------------------------------ |
|
||
| **type** | string | `REGISTRATION_ADDRESS`, `RESIDENCE_ADDRESS`, `LEGAL_ENTITY_ADDRESS` |
|
||
| **address** | string | Текстовый адрес |
|
||
| **country** | string | Код страны (ISO 3166-1 alpha-2) |
|
||
|
||
#### documents
|
||
|
||
_Для резидентов обязателен `PASSPORT`. Для граждан РБ — `FOREIGN_PASSPORT`. Для остальных нерезидентов — не менее 2 документов._
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--------------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| **type** | string | `PASSPORT`, `FOREIGN_PASSPORT`, `RESIDENCE_PERMIT`, `STATELESS_RESIDENCE_CERTIFICATE`, `TEMPORARY_RESIDENCE_PERMIT`, `MIGRATION_CARD` |
|
||
| **serial** | string | Серия (optional) |
|
||
| **number** | string | Номер |
|
||
| **issueDate** | string | Дата выдачи |
|
||
| **expireDate** | string | Дата истечения (optional) |
|
||
| **division** | string | Код подразделения (optional) |
|
||
| **organization** | string | Орган, выдавший документ |
|
||
|
||
---
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data-raw '{
|
||
"accountNumber": "40817810306050000000",
|
||
"type": "FL_RESIDENT",
|
||
"taxResidentUS": false,
|
||
"foreignTaxResident": false,
|
||
"financialActivities": false,
|
||
"countryOfTaxResidence": "RU",
|
||
"name": "Акционерное общество «Ромашка»",
|
||
"registrationDate": "2025-12-18",
|
||
"inn": "0123456789",
|
||
"kpp": "0123456789",
|
||
"ogrn": "0123456789101",
|
||
"personalInformation": {
|
||
"inn": "112233445566",
|
||
"firstName": "Иван",
|
||
"middleName": "Иванoвич",
|
||
"lastName": "Иванов",
|
||
"citizenship": "RU",
|
||
"birthDate": "2000-03-02",
|
||
"birthPlace": "Г. Иркутск",
|
||
"snils": "12345678910"
|
||
},
|
||
"phoneNumber": "79130000011",
|
||
"email": "IvanovIvan@mail.ru",
|
||
"addresses": [
|
||
{
|
||
"type": "REGISTRATION_ADDRESS",
|
||
"address": "ул. Максима Горького 55",
|
||
"country": "RU"
|
||
}
|
||
],
|
||
"documents": [
|
||
{
|
||
"type": "PASSPORT",
|
||
"serial": "6953",
|
||
"number": "987435",
|
||
"issueDate": "2022-03-02",
|
||
"expireDate": "2022-03-02",
|
||
"division": "123-321",
|
||
"organization": "ОВД Иркутской области по Г. Иркутску по Октябрьскому району"
|
||
}
|
||
],
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
#### 202 Accepted
|
||
|
||
Запрос принят в обработку.
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :------------ | :----- | :---------------------------------------------------------------------- |
|
||
| **requestId** | string | Идентификатор запроса |
|
||
| **status** | string | Статус: `PENDING` (в процессе), `FAILED` (ошибка), `COMPLETE` (успешно) |
|
||
|
||
**Пример ответа 202:**
|
||
|
||
```json
|
||
{
|
||
"requestId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "COMPLETE"
|
||
}
|
||
```
|
||
|
||
#### Коды ошибок
|
||
|
||
- **400 Bad Request**: `invalid_request` — неверные параметры.
|
||
- **401 Unauthorized**: `invalid_token` — токен недействителен.
|
||
- **403 Forbidden**: `insufficient_scope` — нет прав доступа (недостаточный scope).
|
||
- **404 Not Found**: `unknown_endpoint` — эндпоинт не найден.
|
||
- **429 Too Many Requests**: Превышен лимит запросов.
|
||
- **500 Internal Server Error**: `internal_error` — внутренняя ошибка сервера.
|
||
- **503 Service Unavailable**: Сервис временно недоступен.
|
||
|
||
]]>
|
||
</add_beneficiary_md>
|
||
<add_requisites_md>
|
||
< |
|
||
| **Accept** | string | Да | `application/json` |
|
||
| **Content-Type** | string | Да | `application/json` |
|
||
|
||
### Path
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :---------------- | :----- | :---- | :------------------------ |
|
||
| **beneficiaryId** | string | Да | Идентификатор бенефициара |
|
||
|
||
### Body
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :------------------- | :------ | :---- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **beneficiaryId** | string | Нет | Идентификатор бенефициара |
|
||
| **type** | string | Да | Тип платёжного реквизита. Возможные значения:<br>• `ACCOUNT` — реквизиты счёта;<br>• `CARD` — номер карты (токен);<br>• `PHONE` — номер телефона |
|
||
| **pan** | string | Нет | Токен номера карты. Поле обязательно при типе `CARD`. [Как сформировать токен](/products/alfa-api/documentation/articles/nominal-accounts/articles/cardtoken/cardtoken) |
|
||
| **phoneNumber** | string | Нет | Номер телефона. Поле обязательно при типе `PHONE` |
|
||
| **bankId** | string | Нет | Идентификатор банка контрагента-получателя. Поле обязательно при типе `PHONE` |
|
||
| **accountNumber** | string | Нет | Номер счёта. Поле обязательно при типе `ACCOUNT` |
|
||
| **bik** | string | Нет | БИК банка. Поле обязательно при типе `ACCOUNT` |
|
||
| **name** | string | Нет | Тип контрагента |
|
||
| **inn** | string | Нет | ИНН организации или физического лица |
|
||
| **kpp** | string | Нет | КПП организации (только для юридических лиц) |
|
||
| **isMain** | boolean | Нет | Признак основных реквизитов. По умолчанию для первых — `true`, для следующих — `false` |
|
||
| **digestSignatures** | array | Да | Электронная подпись УЛ клиента (список объектов) |
|
||
| └ **base64Encoded** | string | Да | Значение электронной подписи в Base64 |
|
||
| └ **signatureType** | string | Да | Тип подписи: `rsa` или `kep` |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/{beneficiaryId}/requisites' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"beneficiaryId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"type": "ACCOUNT",
|
||
"pan": "wS7fElYo8VWeJ8KelaJ0XA==",
|
||
"phoneNumber": "79130000011",
|
||
"bankId": "012345678910",
|
||
"accountNumber": "40817810306050000000",
|
||
"bik": "044525593",
|
||
"name": "ООО Ромашка",
|
||
"inn": "1234567890",
|
||
"kpp": "123456789",
|
||
"isMain": true,
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :----------- | :------ | :---- | :-------------------------------------------- |
|
||
| **id** | string | Да | Идентификатор платёжного реквизита |
|
||
| **isMain** | boolean | Да | Признак основного реквизита (`true`/`false`) |
|
||
| **isActive** | boolean | Да | Признак активности реквизита (`true`/`false`) |
|
||
|
||
**Пример ответа:**
|
||
|
||
```json
|
||
{
|
||
"id": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"isMain": true,
|
||
"isActive": true
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :------ | :------------------ | :------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
← [Создание запроса на проверку бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/beneficiary-scoring/v1/beneficiary-scoring) | [Получение платёжных реквизитов бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-requisites/v1/get-requisites) →
|
||
|
||
]]>
|
||
</add_requisites_md>
|
||
<beneficiary_scoring_md>
|
||
< |
|
||
| **Accept** | `string` | required | `application/json` |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :---------------- | :------- | :------------- | :------------------------ |
|
||
| **beneficiaryId** | `string` | required | Идентификатор бенефициара |
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff --request POST 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/{beneficiaryId}/scoring' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 202 (Accepted)
|
||
|
||
Успешное принятие запроса в обработку.
|
||
|
||
**BODY**
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **requestId** | `string` | required | Идентификатор запроса |
|
||
| **status** | `string` | required | Статус запроса. Возможные значения:<br>• `PENDING` – запрос в процессе обработки;<br>• `FAILED` – обработка запроса завершилась ошибкой;<br>• `COMPLETE` – обработка запроса завершилась успешно |
|
||
|
||
**Пример ответа:**
|
||
|
||
```json
|
||
{
|
||
"requestId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "COMPLETE"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :------ | :------------------ | :------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав (scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
## Навигация
|
||
|
||
- **Предыдущий метод:** [Создание запроса на изменение информации о бенефициаре](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/change-beneficiary/v1/change-beneficiary)
|
||
- **Следующий метод:** [Добавление платёжных реквизитов бенефициара](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/add-requisites/v1/add-requisites)
|
||
|
||
]]>
|
||
</beneficiary_scoring_md>
|
||
<change_beneficiary_md>
|
||
< |
|
||
| **Accept** <br/>_string, required_ | `application/json` |
|
||
| **Content-Type** <br/>_string, required_ | `application/json` |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Описание |
|
||
| :---------------------------------------- | :------------------------ |
|
||
| **beneficiaryId** <br/>_string, required_ | Идентификатор бенефициара |
|
||
|
||
### BODY
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------------------- | :--------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **type** | _string, required_ | Тип контрагента. Возможные значения: <ul><li>`FL_RESIDENT` — физ. лицо, резидент;</li><li>`UL_RESIDENT` — юр. лицо, резидент.</li></ul> |
|
||
| **name** | _string, optional_ | Наименование организации. Поле обязательно для бенефициаров с типом `UL_RESIDENT`. |
|
||
| **registrationDate** | _string, optional_ | Дата регистрации. Поле обязательно для бенефициаров с типом `UL_RESIDENT`. |
|
||
| **personalInformation** | _object, optional_ | Обновленные персональные данные. Заполняется для бенефициаров с типом `FL_RESIDENT`. |
|
||
| ∟ **firstName** | _string, optional_ | Имя |
|
||
| ∟ **middleName** | _string, optional_ | Отчество |
|
||
| ∟ **lastName** | _string, optional_ | Фамилия |
|
||
| ∟ **birthDate** | _string, optional_ | Дата рождения |
|
||
| ∟ **birthPlace** | _string, optional_ | Место рождения |
|
||
| **phoneNumber** | _string, optional_ | Телефон |
|
||
| **email** | _string, optional_ | Адрес электронной почты |
|
||
| **addresses** | _array of objects, optional_ | Адрес бенефициара |
|
||
| ∟ **type** | _string, required_ | Тип адреса: `REGISTRATION_ADDRESS` (адрес регистрации) или `LEGAL_ENTITY_ADDRESS` (адрес юр. лица). |
|
||
| ∟ **address** | _string, required_ | Строка адреса |
|
||
| **documents** | _array of objects, optional_ | Документы. Заполняется, если `citizenship` равен `RU`. |
|
||
| ∟ **type** | _string, required_ | Тип документа: `PASSPORT`, `FOREIGN_PASSPORT`, `RESIDENCE_PERMIT`, `STATELESS_RESIDENCE_CERTIFICATE`, `TEMPORARY_RESIDENCE_PERMIT`, `MIGRATION_CARD`. |
|
||
| ∟ **serial** | _string, required_ | Серия документа |
|
||
| ∟ **number** | _string, required_ | Номер документа |
|
||
| ∟ **issueDate** | _string, required_ | Дата выдачи |
|
||
| ∟ **division** | _string, required_ | Код подразделения |
|
||
| ∟ **organization** | _string, required_ | Орган, выдавший документ |
|
||
| **isActive** | _boolean, optional_ | Статус активности бенефициара |
|
||
| **digestSignatures** | _array of objects, required_ | Электронная подпись УЛ клиента |
|
||
| ∟ **base64Encoded** | _string, required_ | Значение электронной подписи в Base64 |
|
||
| ∟ **signatureType** | _string, required_ | Тип подписи: `rsa` или `kep`. |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff --request PUT 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/{beneficiaryId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data-raw '{
|
||
"type": "FL_RESIDENT",
|
||
"name": "Акционерное общество «Ромашка»",
|
||
"registrationDate": "2025-12-23",
|
||
"personalInformation": {
|
||
"firstName": "Иван",
|
||
"middleName": "Иванoвич",
|
||
"lastName": "Иванов",
|
||
"birthDate": "2000-03-02",
|
||
"birthPlace": "Г. Иркутск"
|
||
},
|
||
"phoneNumber": "79130000011",
|
||
"email": "IvanovIvan@mail.ru",
|
||
"addresses": [
|
||
{
|
||
"type": "REGISTRATION_ADDRESS",
|
||
"address": "ул. Максима Горького 55"
|
||
}
|
||
],
|
||
"documents": [
|
||
{
|
||
"type": "PASSPORT",
|
||
"serial": "6953",
|
||
"number": "987435",
|
||
"issueDate": "2022-03-02",
|
||
"division": "123-321",
|
||
"organization": "ОВД Иркутской области по Г. Иркутску по Октябрьскому району"
|
||
}
|
||
],
|
||
"isActive": true,
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (202 Accepted)
|
||
|
||
```json
|
||
{
|
||
"requestId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "COMPLETE"
|
||
}
|
||
```
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :------------ | :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **requestId** | _string, required_ | Идентификатор запроса |
|
||
| **status** | _string, required_ | Статус запроса: <ul><li>`PENDING` — в процессе обработки;</li><li>`FAILED` — ошибка обработки;</li><li>`COMPLETE` — успешно завершено.</li></ul> |
|
||
|
||
### Коды ошибок
|
||
|
||
| Код | Описание | Тело ответа (основные атрибуты) |
|
||
| :------ | :------------------ | :------------------------------ |
|
||
| **400** | Bad Request | `error`: `invalid_request` |
|
||
| **401** | Unauthorized | `error`: `invalid_token` |
|
||
| **403** | Forbidden | `error`: `insufficient_scope` |
|
||
| **404** | Not Found | `error`: `unknown_endpoint` |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `error`: `internal_error` |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
### Навигация
|
||
|
||
- [← Получение информации о бенефициаре](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-beneficiary/v1/get-beneficiary)
|
||
- [Создание запроса на проверку бенефициара →](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/beneficiary-scoring/v1/beneficiary-scoring)
|
||
|
||
]]>
|
||
</change_beneficiary_md>
|
||
<change_requisites_md>
|
||
< |
|
||
| **Content-Type** | string (required) | application/json |
|
||
|
||
#### PATH
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------------- | :---------------- | :--------------------------------- |
|
||
| **beneficiaryId** | string (required) | Идентификатор бенефициара |
|
||
| **requisiteId** | string (required) | Идентификатор платёжного реквизита |
|
||
|
||
#### BODY
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :------------------- | :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **pan** | string (optional) | Токен номера карты контрагента. [Как сформировать токен номера карты](/products/alfa-api/documentation/articles/nominal-accounts/articles/cardtoken/cardtoken) |
|
||
| **keyId** | string (optional) | Идентификатор публичного ключа для расшифровки токена номера карты |
|
||
| **phoneNumber** | string (optional) | Номер телефона контрагента |
|
||
| **bankId** | string (optional) | Идентификатор банка контрагента |
|
||
| **accountNumber** | string (optional) | Номер счёта контрагента |
|
||
| **bik** | string (optional) | БИК банка контрагента |
|
||
| **isMain** | boolean (optional) | Признак основного платёжного реквизита. <br> • `true` - основной; <br> • `false` - неосновной |
|
||
| **isActive** | boolean (optional) | Признак активности платёжного реквизита. <br> • `true` - активен; <br> • `false` - деактивирован |
|
||
| **digestSignatures** | array of objects (required) | Электронная подпись УЛ клиента |
|
||
|
||
**Объект digestSignatures:**
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **base64Encoded** | string (required) | Значение электронной подписи, закодированное в Base64 |
|
||
| **signatureType** | string (required) | Тип электронной подписи: <br> • `rsa` - RSA; <br> • `kep` - КЭП |
|
||
|
||
---
|
||
|
||
### Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff --request PATCH 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/{beneficiaryId}/requisites/{requisiteId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--data '{
|
||
"pan": "wS7fElYo8VWeJ8KelaJ0XA==",
|
||
"keyId": "1",
|
||
"phoneNumber": "79130000011",
|
||
"bankId": "012345678910",
|
||
"accountNumber": "40817810306050000000",
|
||
"bik": "044525593",
|
||
"isMain": true,
|
||
"isActive": true,
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
### Параметры ответа
|
||
|
||
**204 No Content**
|
||
_Нет тела ответа_
|
||
|
||
**400 Bad Request**
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **error** | string (required) | `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | string (optional) | Описание ошибки |
|
||
|
||
**401 Unauthorized**
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **error** | string (required) | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
|
||
**403 Forbidden**
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **error** | string (required) | `insufficient_scope` — у пользователя нет прав на использование сервиса |
|
||
|
||
**404 Not Found**
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **error** | string (required) | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
|
||
**429 Too Many Requests**
|
||
_Превышен лимит запросов. Нет тела ответа._
|
||
|
||
**500 Internal Server Error**
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **error** | string (required) | `internal_error` — внутренняя ошибка сервиса |
|
||
|
||
**503 Service Unavailable**
|
||
_Сервис временно недоступен._
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- Предыдущая статья: [Получение платёжных реквизитов бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-requisites/v1/get-requisites)
|
||
- Следующая статья: [Получение информации о балансе бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-balance/v1/get-balance)
|
||
|
||
]]>
|
||
</change_requisites_md>
|
||
<get_balance_md>
|
||
< | string | required |
|
||
| **Accept** | application/json | string | required |
|
||
|
||
### QUERY
|
||
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :---------------- | :----------------------- | :----- | :------------- |
|
||
| **accountNumber** | Номер номинального счёта | string | required |
|
||
| **date** | Дата | string | required |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :---------------- | :------------------------ | :----- | :------------- |
|
||
| **beneficiaryId** | Идентификатор бенефициара | string | required |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/{beneficiaryId}/balance?accountNumber=40817810306050000000&date=2024-01-01' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 (OK) — Тело ответа (BODY)
|
||
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :---------------- | :------------------------ | :--------------- | :------------- |
|
||
| **beneficiaryId** | Идентификатор бенефициара | string | required |
|
||
| **accountNumber** | Номер счёта | string | required |
|
||
| **date** | Дата | string | required |
|
||
| **balances** | Балансы бенефициара | array of objects | optional |
|
||
|
||
#### Вложенные атрибуты `balances`:
|
||
|
||
- **walletType** (string, optional): Тип кошелька. Принимает значения:
|
||
- `MAIN` — основной кошелек;
|
||
- `TAX` — налоговый кошелек.
|
||
- **freeBalance** (string, optional): Свободные денежные средства в рублях.
|
||
- **heldBalance** (string, optional): Захолдированные денежные средства в рублях.
|
||
|
||
#### Пример ответа 200:
|
||
|
||
```json
|
||
{
|
||
"beneficiaryId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"accountNumber": "40817810306050000000",
|
||
"date": "2024-01-01",
|
||
"balances": [
|
||
{
|
||
"walletType": "MAIN",
|
||
"freeBalance": "10.00",
|
||
"heldBalance": "10.00"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
### 400 (Bad Request)
|
||
|
||
- **error** (string): `invalid_request` — неверные входные параметры запроса.
|
||
- **error_description** (string, optional): Описание ошибки.
|
||
|
||
### 401 (Unauthorized)
|
||
|
||
- **error** (string): `invalid_token` — предоставленный токен просрочен, отозван или недействителен.
|
||
- **error_description** (string, optional): Описание ошибки.
|
||
|
||
### 403 (Forbidden)
|
||
|
||
- **error** (string): `insufficient_scope` — у пользователя нет прав на использование запрашиваемого сервиса.
|
||
- **error_description** (string, optional): Описание ошибки.
|
||
|
||
### 404 (Not Found)
|
||
|
||
- **error** (string): `unknown_endpoint` — эндпоинт не найден или неактивен.
|
||
- **error_description** (string, optional): Описание ошибки.
|
||
|
||
### 429 (Too Many Requests)
|
||
|
||
- Тело ответа отсутствует.
|
||
|
||
### 500 (Internal Server Error)
|
||
|
||
- **error** (string): `internal_error` — внутренняя ошибка сервиса.
|
||
- **error_description** (string, optional): Описание ошибки.
|
||
|
||
### 503 (Service Unavailable)
|
||
|
||
- Тело ответа отсутствует.
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- Предыдущий метод: [Изменение признаков платёжных реквизитов бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/change-requisites/v1/change-requisites)
|
||
- Следующий метод: [Получение списка денежных операций бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-transactions/v1/get-transactions)
|
||
|
||
]]>
|
||
</get_balance_md>
|
||
<get_beneficiaries_md>
|
||
< / Получение списка бенефициаров номинального счёта
|
||
|
||
## 1. Общая информация
|
||
|
||
Метод позволяет получить подробный список всех бенефициаров, привязанных к конкретному номинальному счёту, с возможностью фильтрации и пагинации.
|
||
|
||
### Конечные точки (Endpoints)
|
||
|
||
| Среда | Метод | URL |
|
||
| :--- | :--- | :--- |
|
||
| **Песочница** | `GET` | `https://sandbox.alfabank.ru/api/na/jp/v1/beneficiaries` |
|
||
| **Пром** | `GET` | `https://baas.alfabank.ru/api/na/jp/v1/beneficiaries` |
|
||
|
||
**Требуемый Scope:** `beneficiaries`
|
||
|
||
---
|
||
|
||
## 2. Параметры запроса
|
||
|
||
### Заголовки (Headers)
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **Authorization** | `STRING` | Да | `Bearer {access_token}`, полученный по схеме Authorization Code Flow H2H. |
|
||
| **Accept** | `STRING` | Да | Должен быть `application/json`. |
|
||
|
||
### Параметры строки запроса (Query)
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **accountNumber** | `STRING` | **Да** | Номер номинального счёта (20 знаков). |
|
||
| **type** | `STRING` | **Да** | Тип бенефициара: `FL_RESIDENT`, `FL_NONRESIDENT`, `UL_RESIDENT`, `UL_NONRESIDENT`, `IP_RESIDENT`, `IP_NONRESIDENT`. |
|
||
| **limit** | `INTEGER` | Нет | Кол-во объектов на странице (по умолчанию обычно 100). |
|
||
| **offset** | `INTEGER` | Нет | Смещение (кол-во пропускаемых объектов). |
|
||
| **inn** | `STRING` | Нет | ИНН (10 цифр для ЮЛ, 12 — для ФЛ/ИП). |
|
||
| **lastName** | `STRING` | Нет | Фамилия (для ФЛ и ИП). |
|
||
| **firstName** | `STRING` | Нет | Имя (для ФЛ и ИП). |
|
||
| **middleName** | `STRING` | Нет | Отчество (для ФЛ и ИП). |
|
||
| **kpp** | `STRING` | Нет | КПП (только для `UL_RESIDENT`). |
|
||
| **name** | `STRING` | Нет | Название организации (для ЮЛ). |
|
||
| **ogrn** | `STRING` | Нет | ОГРН (только для `UL_RESIDENT`). |
|
||
| **isVpr** | `BOOLEAN` | Нет | `true` — является выгодоприобретателем, `false` — нет. |
|
||
| **isActive** | `BOOLEAN` | Нет | Статус: `true` — активен, `false` — деактивирован. |
|
||
| **date** | `STRING` | Нет | Дата выборки. |
|
||
|
||
**Пример вызова (cURL):**
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries?accountNumber=40817810306050000000&type=FL_RESIDENT' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Параметры ответа (200 OK)
|
||
|
||
В случае успеха возвращается объект со списком бенефициаров и данными пагинации.
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **pagination** | `OBJECT` | Информация о страницах: `limit`, `offset`, `totalCount`. |
|
||
| **accountNumber**| `STRING` | Номер счёта, по которому сделан запрос. |
|
||
| **beneficiaries** | `ARRAY` | Массив объектов бенефициаров (включает ФИО, ИНН, адреса, документы и балансы). |
|
||
|
||
---
|
||
|
||
## 4. Обработка ошибок
|
||
|
||
Ниже приведен полный перечень возможных ошибок с описанием их причин.
|
||
|
||
### Сводная таблица кодов
|
||
| Код | Описание | Тело ответа |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | Ошибка в параметрах запроса. |
|
||
| **401** | Unauthorized | Проблемы с токеном доступа. |
|
||
| **403** | Forbidden | Недостаточно прав (Scope). |
|
||
| **404** | Not Found | Ресурс или эндпоинт не найден. |
|
||
| **429** | Too Many Requests | Превышен лимит запросов (без тела). |
|
||
| **500** | Internal Server Error | Внутренняя ошибка сервера. |
|
||
| **503** | Service Unavailable | Сервис временно недоступен (без тела). |
|
||
|
||
---
|
||
|
||
### Детальное описание бизнес-ошибок
|
||
|
||
#### 400 Bad Request
|
||
Возникает при передаче невалидных данных (например, неверный формат номера счета).
|
||
* `error`: `invalid_request`
|
||
* `error_description`: Описание конкретной ошибки валидации.
|
||
|
||
#### 401 Unauthorized
|
||
Проблема с авторизационным заголовком или самим токеном.
|
||
* `error`: `invalid_token`
|
||
* `error_description`: Предоставленный токен просрочен, отозван, имеет неправильный формат или недействителен.
|
||
|
||
#### 403 Forbidden
|
||
Доступ к методу ограничен настройками безопасности.
|
||
* `error`: `insufficient_scope`
|
||
* `error_description`: У пользователя нет прав на использование сервиса (отсутствует нужный scope в токене).
|
||
|
||
#### 404 Not Found
|
||
Запрашиваемый адрес API не существует или отключен.
|
||
* `error`: `unknown_endpoint`
|
||
* `error_description`: Эндпоинт не найден или неактивен.
|
||
|
||
#### 500 Internal Server Error
|
||
Непредвиденная ошибка на стороне банка.
|
||
* `error`: `internal_error`
|
||
* `error_description`: Внутренняя ошибка сервиса при выполнении обработки запроса.
|
||
|
||
---
|
||
|
||
## 5. Навигация
|
||
|
||
← [Создание запроса на регистрацию бенефициара](#) | [Получение информации о бенефициаре](#) →
|
||
|
||
]]>
|
||
</get_beneficiaries_md>
|
||
<get_beneficiary_md>
|
||
< |
|
||
| **Accept** | string | Да | application/json |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **beneficiaryId** | string | Да | Идентификатор бенефициара |
|
||
|
||
### Пример запроса (cURL)
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/{beneficiaryId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
#### Пример тела ответа
|
||
```json
|
||
{
|
||
"beneficiaryId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"type": "FL_RESIDENT",
|
||
"personalInformation": {
|
||
"inn": "112233445566",
|
||
"firstName": "Иван",
|
||
"middleName": "Иванoвич",
|
||
"lastName": "Иванов",
|
||
"citizenship": "RU",
|
||
"birthDate": "2000-03-02",
|
||
"birthPlace": "Г. Иркутск",
|
||
"snils": 12345678910
|
||
},
|
||
"countryOfTaxResidence": "RU",
|
||
"phoneNumber": "79130000011",
|
||
"email": "IvanovIvan@mail.ru",
|
||
"addresses": [
|
||
{
|
||
"type": "REGISTRATION_ADDRESS",
|
||
"address": "ул. Пушкина 55",
|
||
"index": "123456",
|
||
"region_code": "77",
|
||
"uin": "550e8400-e29b-41d4-a716-446655440000",
|
||
"municipal_district": {
|
||
"type_code": 1,
|
||
"name": "Ленинский муниципальный район"
|
||
},
|
||
"settlement": {
|
||
"type_code": 1,
|
||
"name": "Городское поселение Ленинское"
|
||
},
|
||
"locality": {
|
||
"type": "город",
|
||
"name": "Ленинск"
|
||
},
|
||
"planning_structure": {
|
||
"type": "микрорайон",
|
||
"name": "Центральный"
|
||
},
|
||
"street_network": {
|
||
"type": "улица",
|
||
"name": "Ленина"
|
||
},
|
||
"buildings": [
|
||
{
|
||
"type": "дом",
|
||
"name": "3"
|
||
}
|
||
],
|
||
"building_premises": {
|
||
"type": "квартира",
|
||
"name": "42"
|
||
},
|
||
"flat_premises": {
|
||
"type": "комната",
|
||
"name": "гостиная"
|
||
}
|
||
}
|
||
],
|
||
"documents": [
|
||
{
|
||
"type": "PASSPORT",
|
||
"serial": "6953",
|
||
"number": "987435",
|
||
"issueDate": "2022-03-02",
|
||
"expireDate": "2022-03-02",
|
||
"division": "123-321",
|
||
"organization": "ОВД Иркутской области по Г. Иркутску по Октябрьскому району"
|
||
}
|
||
],
|
||
"name": "Акционерное общество «Ромашка»",
|
||
"registrationDate": "2025-12-18",
|
||
"inn": "0123456789",
|
||
"kpp": "0123456789",
|
||
"ogrn": "0123456789101",
|
||
"isActive": true,
|
||
"actualizationDateExpire": "2025-12-18",
|
||
"balances": [
|
||
{
|
||
"walletType": "MAIN",
|
||
"freeBalance": "10.00",
|
||
"heldBalance": "10.00"
|
||
}
|
||
],
|
||
"isBeneficiary": true,
|
||
"isVpr": true
|
||
}
|
||
```
|
||
|
||
#### Описание полей (BODY)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **beneficiaryId** | string | Идентификатор бенефициара |
|
||
| **type** | string | Тип контрагента: `FL_RESIDENT`, `FL_NONRESIDENT`, `UL_RESIDENT`, `UL_NONRESIDENT`, `IP_RESIDENT`, `IP_NONRESIDENT` |
|
||
| **personalInformation** | object | Персональные данные (только для ФЛ и ИП) |
|
||
| ∟ **inn** | string | ИНН |
|
||
| ∟ **firstName** | string | Имя |
|
||
| ∟ **lastName** | string | Фамилия |
|
||
| ∟ **citizenship** | string | Гражданство: `RU`, `BY`, `AM`, `KZ`, `KG` |
|
||
| **countryOfTaxResidence**| string | Страна налогового резидентства (ISO 3166-1 alpha-2) |
|
||
| **addresses** | array | Список адресов |
|
||
| ∟ **type** | string | `REGISTRATION_ADDRESS`, `RESIDENCE_ADDRESS`, `LEGAL_ENTITY_ADDRESS` |
|
||
| **documents** | array | Список документов (Для резидентов обязателен `PASSPORT`) |
|
||
| **name** | string | Наименование организации (для UL) |
|
||
| **isActive** | boolean | Статус активности бенефициара (`true`/`false`) |
|
||
| **balances** | array | Балансы бенефициара |
|
||
| ∟ **walletType** | string | Тип кошелька: `MAIN` (основной), `TAX` (налоговый) |
|
||
| **isBeneficiary** | boolean | `true` — бенефициар, `false` — универсальный реципиент |
|
||
| **isVpr** | boolean | Признак выгодоприобретателя (ВПР) |
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Возможные причины (`error`) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — недостаточно прав (проверьте scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Превышен лимит запросов (нет тела ответа) |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Сервис временно недоступен |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
* [← Получение списка бенефициаров номинального счёта](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-beneficiaries/v1/get-beneficiaries)
|
||
* [Создание запроса на изменение информации о бенефициаре →](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/change-beneficiary/v1/change-beneficiary)
|
||
|
||
]]>
|
||
</get_beneficiary_md>
|
||
<get_requisites_md>
|
||
< |
|
||
| **Accept** (string, required) | application/json |
|
||
|
||
### Путь (PATH)
|
||
|
||
| Атрибут | Описание |
|
||
| :----------------------------------- | :------------------------ |
|
||
| **beneficiaryId** (string, required) | Идентификатор бенефициара |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/{beneficiaryId}/requisites' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ: 200 (OK)
|
||
|
||
**Пример тела ответа:**
|
||
|
||
```json
|
||
[
|
||
{
|
||
"Id": "cba2888c-71ad-4211-9420-a85f6e4c10f9",
|
||
"type": "ACCOUNT",
|
||
"pan": "wS7fElYo8VWeJ8KelaJ0XA==",
|
||
"phoneNumber": "79130000011",
|
||
"bankId": "012345678910",
|
||
"accountNumber": "40817810306050000000",
|
||
"bik": "044525593",
|
||
"isMain": true,
|
||
"isActive": true
|
||
}
|
||
]
|
||
```
|
||
|
||
**Описание полей (BODY):**
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :---------------- | :----------------- | :----------------------------------------------------------------------------------------- |
|
||
| **Id** | string (required) | Идентификатор платёжного реквизита |
|
||
| **type** | string (required) | Тип платёжного реквизита: ACCOUNT (счёт), CARD (номер карты/токен), PHONE (номер телефона) |
|
||
| **pan** | string (optional) | Токен номера карты. Заполняется при типе CARD |
|
||
| **phoneNumber** | string (optional) | Номер телефона. Заполняется при типе PHONE |
|
||
| **bankId** | string (optional) | Идентификатор банка контрагента-получателя. Заполняется при типе PHONE |
|
||
| **accountNumber** | string (optional) | Номер счёта. Заполняется при типе ACCOUNT |
|
||
| **bik** | string (optional) | БИК банка. Заполняется при типе ACCOUNT |
|
||
| **isMain** | boolean (required) | Признак основного реквизита: true — основной, false — неосновной |
|
||
| **isActive** | boolean (required) | Признак активности: true — активен, false — деактивирован |
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Статус | Код ошибки (error) и описание |
|
||
| :------ | :------------------ | :------------------------------------------------------ |
|
||
| **400** | Bad Request | invalid_request — неверные входные параметры |
|
||
| **401** | Unauthorized | invalid_token — токен недействителен или просрочен |
|
||
| **403** | Forbidden | insufficient_scope — нет прав доступа к сервису (scope) |
|
||
| **404** | Not Found | unknown_endpoint — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Превышено количество запросов (без тела ответа) |
|
||
| **500** | Internal Error | internal_error — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Сервис временно недоступен (без тела ответа) |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
|
||
- [Добавление платёжных реквизитов бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/add-requisites/v1/add-requisites)
|
||
- [Изменение признаков платёжных реквизитов бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/change-requisites/v1/change-requisites)
|
||
|
||
]]>
|
||
</get_requisites_md>
|
||
<get_transactions_md>
|
||
< |
|
||
| **Accept** | string | required | `application/json` |
|
||
|
||
### QUERY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **limit** | integer | required | Количество объектов на одной странице |
|
||
| **offset** | integer | required | Количество объектов в списке, которые необходимо пропустить |
|
||
| **dateFrom** | string | required | Дата начала выборки (ГГГГ-ММ-ДД) |
|
||
| **dateTo** | string | required | Дата конца выборки (ГГГГ-ММ-ДД) |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **beneficiaryId** | string | required | Идентификатор бенефициара |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/beneficiaries/{beneficiaryId}/transactions?limit=100&offset={offset}&dateFrom=2024-01-01&dateTo=2024-01-01' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 OK
|
||
#### BODY (Object)
|
||
* **pagination** (object, optional): Данные пагинации
|
||
* **limit** (number, optional): Количество записей на одной странице
|
||
* **offset** (number, optional): Количество записей в списке, которые были пропущены
|
||
* **totalCount** (number, optional): Общее количество записей
|
||
* **transactionsList** (array of objects, optional): Список операций
|
||
* **type** (string, required): Тип операции. Возможные значения:
|
||
* `Пополнение` — увеличение денежных средств бенефициара на номинальном счёте;
|
||
* `Вывод` — уменьшение денежных средств бенефициара на номинальном счёте;
|
||
* `Заморозка` — холдирование денежных средств бенефициара на номинальном счёте;
|
||
* `Разморозка` — расхолдирование замороженных денежных средств бенефициара на номинальном счёте;
|
||
* `Исходящий перевод` — перевод денежных средств другому бенефициару;
|
||
* `Входящий перевод` — поступление денежных средств от другого бенефициара.
|
||
* **amount** (string, required): Сумма операции в рублях.
|
||
* **comment** (string, optional): Комментарий к операции.
|
||
|
||
### Пример ответа 200
|
||
|
||
```json
|
||
{
|
||
"pagination": {
|
||
"limit": 100,
|
||
"offset": 0,
|
||
"totalCount": 10000
|
||
},
|
||
"transactionsList": [
|
||
{
|
||
"type": "Пополнение",
|
||
"amount": "10.00",
|
||
"comment": "Ручное выравнивание баланса"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Тело ответа (error / error_description) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав (не настроен scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
* Предыдущий метод: [Получение информации о балансе бенефициара](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-balance/v1/get-balance)
|
||
* Следующий раздел: [Создание запроса на регистрацию универсального реципиента](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/add-ur/v1/add-ur)
|
||
|
||
]]>
|
||
</get_transactions_md>
|
||
</Бенефициары>
|
||
<Универсальные_реципиенты>
|
||
<add_requisites_md>
|
||
< |
|
||
| **Accept** | `string` (required) | application/json |
|
||
| **Content-Type** | `string` (required) | application/json |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **universalRecipientId** | `string` (required) | Идентификатор универсального реципиента |
|
||
|
||
### BODY
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **type** | `string` (required) | Тип платёжного реквизита. Возможные значения:<br>• `ACCOUNT` — реквизиты счёта;<br>• `CARD` — номер карты (токен);<br>• `PHONE` — номер телефона |
|
||
| **pan** | `string` (optional) | Токен номера карты. Поле обязательно при типе реквизитов `CARD`. [Как сформировать токен номера карты](/products/alfa-api/documentation/articles/nominal-accounts/articles/cardtoken/cardtoken) |
|
||
| **phoneNumber** | `string` (optional) | Номер телефона. Поле обязательно при типе реквизитов `PHONE` |
|
||
| **bankId** | `string` (optional) | Идентификатор банка контрагента-получателя. Поле обязательно при типе реквизитов `PHONE` |
|
||
| **accountNumber** | `string` (optional) | Номер счёта. Поле обязательно при типе реквизитов `ACCOUNT` |
|
||
| **bik** | `string` (optional) | БИК банка. Поле обязательно при типе реквизитов `ACCOUNT` |
|
||
| **name** | `string` (required) | Наименование получателя. Наименование организации (для юр. лиц), либо ФИО (для физ. лиц и ИП) |
|
||
| **inn** | `string` (required) | ИНН получателя. 10 цифр — для юр.лиц, 12 цифр — для физ.лиц и ИП |
|
||
| **kpp** | `string` (optional) | КПП получателя. Поле обязательно, если тип универсального реципиента `UL_RESIDENT` |
|
||
| **isMain** | `boolean` (optional) | Признак основных платежных реквизитов. По умолчанию для первых реквизитов — `true`, для последующих — `false`. |
|
||
| **digestSignatures** | `array of objects` (required) | Электронная подпись УЛ клиента |
|
||
| **└ base64Encoded** | `string` (required) | Значение электронной подписи, закодированное в Base64 |
|
||
| **└ signatureType** | `string` (required) | Тип электронной подписи: `rsa` (RSA) или `kep` (КЭП) |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/universal-recipients/{universalRecipientId}/requisites' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"type": "ACCOUNT",
|
||
"pan": "wS7fElYo8VWeJ8KelaJ0XA==",
|
||
"phoneNumber": "79130000011",
|
||
"bankId": "012345678910",
|
||
"accountNumber": "40817810306050000000",
|
||
"bik": "044525593",
|
||
"name": "Иванов Иван Иванович",
|
||
"inn": "112233445566",
|
||
"kpp": "123456789",
|
||
"isMain": true,
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 (OK)
|
||
| Атрибут | Тип | Описание |
|
||
| :--- | :--- | :--- |
|
||
| **id** | `string` (required) | Идентификатор платёжного реквизита |
|
||
| **isMain** | `boolean` (required) | Признак основного платёжного реквизита (`true` — основной, `false` — неосновной) |
|
||
| **isActive** | `boolean` (required) | Признак активности платёжного реквизита (`true` — активен, `false` — деактивирован) |
|
||
|
||
**Пример ответа 200:**
|
||
```json
|
||
{
|
||
"id": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"isMain": true,
|
||
"isActive": true
|
||
}
|
||
```
|
||
|
||
### Ошибки
|
||
| Код | Описание | Текст ошибки (error) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса (scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
**Навигация:**
|
||
* [Предыдущая: Получение информации об универсальном реципиенте](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/get-ur/v1/get-ur)
|
||
* [Следующая: Получение платёжных реквизитов универсального реципиента](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/get-requisites/v1/get-requisites)
|
||
|
||
]]>
|
||
</add_requisites_md>
|
||
<add_universal_recipient_md>
|
||
< |
|
||
| **Accept** | string | Да | `application/json` |
|
||
| **Content-Type** | string | Да | `application/json` |
|
||
|
||
### BODY
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **accountNumber** | string | Да | Номер номинального счёта |
|
||
| **type** | string | Да | Тип универсального реципиента. Возможные значения:<br>• `FL_RESIDENT` — физ. лицо, резидент;<br>• `UL_RESIDENT` — юр. лицо, резидент |
|
||
| **digestSignatures** | array of objects | Да | Электронная подпись УЛ клиента |
|
||
|
||
**Объект digestSignatures:**
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **base64Encoded** | string | Да | Значение электронной подписи, закодированное в Base64 |
|
||
| **signatureType** | string | Да | Тип электронной подписи. Возможные значения:<br>• `rsa` — RSA;<br>• `kep` — КЭП |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location 'https://baas.alfabank.ru/api/na/jp/v1/universal-recipients' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--header 'Accept: application/json' \
|
||
--data '{
|
||
"accountNumber": "40817810306050000000",
|
||
"type": "FL_RESIDENT",
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ: 202 (Accepted)
|
||
|
||
**Пример тела ответа:**
|
||
```json
|
||
{
|
||
"requestId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"status": "COMPLETE"
|
||
}
|
||
```
|
||
|
||
**Описание атрибутов:**
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **requestId** | string | Да | Идентификатор запроса |
|
||
| **status** | string | Да | Статус запроса. Принимает значения:<br>• `PENDING` – запрос в процессе обработки;<br>• `FAILED` – ошибка обработки;<br>• `COMPLETE` – успешно завершено |
|
||
|
||
---
|
||
|
||
## Коды ошибок
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав (недостаточный scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
* Предыдущая статья: [Получение списка денежных операций бенефициара](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/beneficiaries/articles/get-transactions/v1/get-transactions)
|
||
* Следующая статья: [Получение списка универсальных реципиентов номинального счёта](https://developers.alfabank.ru/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/get-urs/v1/get-urs)
|
||
|
||
]]>
|
||
</add_universal_recipient_md>
|
||
<change_requisites_md>
|
||
< |
|
||
| **Content-Type** | string | required | `application/json` |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **universalRecipientId** | string | required | Идентификатор универсального реципиента |
|
||
| **requisiteId** | string | required | Идентификатор платёжного реквизита |
|
||
|
||
### BODY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **pan** | string | optional | Токен номера карты контрагента. [Как сформировать токен номера карты](/products/alfa-api/documentation/articles/nominal-accounts/articles/cardtoken/cardtoken) |
|
||
| **keyId** | string | optional | Идентификатор публичного ключа для расшифровки токена номера карты |
|
||
| **phoneNumber** | string | optional | Номер телефона контрагента |
|
||
| **bankId** | string | optional | Идентификатор банка контрагента |
|
||
| **accountNumber** | string | optional | Номер счета контрагента |
|
||
| **bik** | string | optional | БИК банка контрагента |
|
||
| **name** | string | optional | Наименование получателя |
|
||
| **inn** | string | optional | ИНН получателя |
|
||
| **kpp** | string | optional | КПП получателя |
|
||
| **isMain** | boolean | optional | Признак основного платёжного реквизита: `true` — основной; `false` — неосновной |
|
||
| **isActive** | boolean | optional | Признак активности платёжного реквизита: `true` — активен; `false` — деактивирован |
|
||
| **digestSignatures** | array of objects | **required** | Электронная подпись УЛ клиента (см. ниже) |
|
||
|
||
#### Струтура объекта digestSignatures:
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **base64Encoded** | string | required | Значение электронной подписи, закодированное в Base64 |
|
||
| **signatureType** | string | required | Тип электронной подписи: `rsa` (RSA) или `kep` (КЭП) |
|
||
|
||
---
|
||
|
||
## Пример запроса
|
||
|
||
```bash
|
||
curl --location --globoff --request PATCH 'https://baas.alfabank.ru/api/na/jp/v1/universal-recipients/{universalRecipientId}/requisites/{requisiteId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Content-Type: application/json' \
|
||
--data '{
|
||
"pan": "wS7fElYo8VWeJ8KelaJ0XA==",
|
||
"keyId": "1",
|
||
"phoneNumber": "79130000011",
|
||
"bankId": "012345678910",
|
||
"accountNumber": "40817810306050000000",
|
||
"bik": "044525593",
|
||
"name": "Иванов Иван Иванович",
|
||
"inn": "112233445566",
|
||
"kpp": "123456789",
|
||
"isMain": true,
|
||
"isActive": true,
|
||
"digestSignatures": [
|
||
{
|
||
"base64Encoded": "SEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAVH4YMX0u3fEONSkAAQBUfhgwCgYIKoUDBwEBAQEEQBU0EntPGWz8EfJ5CFL2m10xeBrkAEeWDglGQDZWLKQ0ff4TyBT9X1NhG/+ETj4TcQhExy6k+WZ9w/CpF5FjyyA=",
|
||
"signatureType": "rsa"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 204 No Content
|
||
Успешное выполнение запроса. Тело ответа отсутствует.
|
||
|
||
### 400 Bad Request
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** | `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | Описание ошибки |
|
||
|
||
### 401 Unauthorized
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
|
||
### 403 Forbidden
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** | `insufficient_scope` — нет прав (проверьте настройки scope) |
|
||
|
||
### 404 Not Found
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
|
||
### 429 Too Many Requests
|
||
Превышен лимит запросов. Тело ответа отсутствует.
|
||
|
||
### 500 Internal Server Error
|
||
| Атрибут | Описание |
|
||
| :--- | :--- |
|
||
| **error** | `internal_error` — внутренняя ошибка сервиса |
|
||
|
||
### 503 Service Unavailable
|
||
Сервис временно недоступен. Тело ответа отсутствует.
|
||
|
||
]]>
|
||
</change_requisites_md>
|
||
<get_requisites_md>
|
||
< | string | required |
|
||
| **Accept** | application/json | string | required |
|
||
|
||
### PATH
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **universalRecipientId** | Идентификатор универсального реципиента | string | required |
|
||
|
||
### Пример запроса (cURL)
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/universal-recipients/{universalRecipientId}/requisites' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 OK (Пример тела ответа)
|
||
```json
|
||
[
|
||
{
|
||
"type": "ACCOUNT",
|
||
"pan": "wS7fElYo8VWeJ8KelaJ0XA==",
|
||
"phoneNumber": "79130000011",
|
||
"bankId": "012345678910",
|
||
"accountNumber": "40817810306050000000",
|
||
"bik": "044525593",
|
||
"name": "Иванов Иван Иванович",
|
||
"inn": "112233445566",
|
||
"kpp": "123456789",
|
||
"isMain": true,
|
||
"isActive": true
|
||
}
|
||
]
|
||
```
|
||
|
||
### BODY (Описание полей)
|
||
| Атрибут | Описание | Тип | Обязательность |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **type** | Тип платёжного реквизита. Возможные значения:<br>• `ACCOUNT` — реквизиты счёта;<br>• `CARD` — номер карты (токен);<br>• `PHONE` — номер телефона | string | required |
|
||
| **pan** | Токен номера карты. Возвращается, если тип реквизитов `CARD` | string | optional |
|
||
| **phoneNumber** | Номер телефона. Возвращается, если тип реквизитов `PHONE` | string | optional |
|
||
| **bankId** | Идентификатор банка контрагента-получателя. Возвращается, если тип реквизитов `PHONE` | string | optional |
|
||
| **accountNumber** | Номер счёта. Возвращается, если тип реквизитов `ACCOUNT` | string | optional |
|
||
| **bik** | БИК банка. Возвращается, если тип реквизитов `ACCOUNT` | string | optional |
|
||
| **name** | Наименование получателя. Наименование организации (для ЮЛ), либо ФИО (для ФЛ и ИП) | string | required |
|
||
| **inn** | ИНН получателя (10 цифр для ЮЛ, 12 цифр для ФЛ и ИП) | string | required |
|
||
| **kpp** | КПП получателя. Возвращается, если тип универсального реципиента `UL_RESIDENT` | string | optional |
|
||
| **isMain** | Признак основного платёжного реквизита:<br>• `true` — основной;<br>• `false` — неосновной | boolean | required |
|
||
| **isActive** | Признак активности платёжного реквизита:<br>• `true` — активен;<br>• `false` — деактивирован | boolean | required |
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Тело ответа (error) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса (недостаточный scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
| **429** | Too Many Requests | Нет тела ответа |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Нет тела ответа |
|
||
|
||
]]>
|
||
</get_requisites_md>
|
||
<get_universal_recipient_md>
|
||
< |
|
||
| **Accept** | string | Да | application/json |
|
||
|
||
### PATH
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **universalRecipientId** | string | Да | Идентификатор универсального реципиента |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/universal-recipients/{universalRecipientId}' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### 200 (OK) — Тело ответа (BODY)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **universalRecipientId** | string | Да | Идентификатор универсального реципиента |
|
||
| **accountNumber** | string | Да | Номер номинального счёта |
|
||
| **isBeneficiary** | boolean | Да | Признак бенефициара:<br>• `true` — является бенефициаром;<br>• `false` — является универсальным реципиентом. |
|
||
| **type** | string | Да | Тип контрагента:<br>• `FL_RESIDENT` — физ. лицо, резидент;<br>• `UL_RESIDENT` — юр. лицо, резидент. |
|
||
| **isActive** | boolean | Да | Признак активности бенефициара:<br>• `true` — активен;<br>• `false` — деактивирован. |
|
||
|
||
**Пример успешного ответа:**
|
||
```json
|
||
{
|
||
"universalRecipientId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"accountNumber": "40817810306050000000",
|
||
"isBeneficiary": false,
|
||
"type": "FL_RESIDENT",
|
||
"isActive": true
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
### 400 — Bad Request
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | Да | `invalid_request` — неверные входные параметры запроса |
|
||
| **error_description** | string | Нет | Описание ошибки |
|
||
|
||
### 401 — Unauthorized
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | Да | `invalid_token` — токен просрочен, отозван или неверный формат |
|
||
|
||
### 403 — Forbidden
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | Да | `insufficient_scope` — нет прав на использование сервиса (настройки scope) |
|
||
|
||
### 404 — Not Found
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | Да | `unknown_endpoint` — эндпоинт не найден или неактивен |
|
||
|
||
### 429 — Too Many Requests
|
||
Нет тела ответа. Слишком много запросов.
|
||
|
||
### 500 — Internal Server Error
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **error** | string | Да | `internal_error` — внутренняя ошибка сервиса |
|
||
|
||
### 503 — Service Unavailable
|
||
Нет тела ответа. Сервис временно недоступен.
|
||
|
||
---
|
||
|
||
## Навигация
|
||
* **Назад:** [Получение списка универсальных реципиентов номинального счёта](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/get-urs/v1/get-urs)
|
||
* **Вперед:** [Добавление платёжных реквизитов универсального реципиента](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/add-requisites/v1/add-requisites)
|
||
|
||
]]>
|
||
</get_universal_recipient_md>
|
||
<get_universal_recipients_list_md>
|
||
< |
|
||
| **Accept** | string | required | application/json |
|
||
|
||
### QUERY
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **limit** | integer | optional | Количество объектов на одной странице |
|
||
| **offset** | integer | optional | Количество объектов в списке, которые необходимо пропустить |
|
||
| **accountNumber** | string | required | Номер номинального счёта |
|
||
| **type** | string | required | Тип универсального реципиента. Возможные значения: `FL_RESIDENT` (физ. лицо), `UL_RESIDENT` (юр. лицо), `IP_RESIDENT` (ИП) |
|
||
| **isActive** | boolean | optional | Признак активности: `true` — активен; `false` — деактивирован |
|
||
| **date** | string | optional | Дата выборки |
|
||
|
||
---
|
||
|
||
## Пример запроса (cURL)
|
||
|
||
```bash
|
||
curl --location --globoff 'https://baas.alfabank.ru/api/na/jp/v1/universal-recipients?limit=100&offset={offset}&accountNumber=40817810306050000000&type={type}&isActive={isActive}&date=2024-01-01' \
|
||
--header 'Authorization: Bearer {access-token}' \
|
||
--header 'Accept: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
**Пример тела ответа:**
|
||
```json
|
||
{
|
||
"pagination": {
|
||
"limit": 100,
|
||
"offset": 0,
|
||
"totalCount": 1
|
||
},
|
||
"accountNumber": "40817810306050000000",
|
||
"date": "2024-01-01",
|
||
"universalRecipients": [
|
||
{
|
||
"universalRecipientId": "ab9cbb96-360a-4462-a683-955cc29f7f54",
|
||
"isBeneficiary": false,
|
||
"type": "FL_RESIDENT",
|
||
"isActive": true
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**Описание полей BODY:**
|
||
* **pagination** (object, optional): Данные пагинации.
|
||
* `limit` (number): Количество записей на странице.
|
||
* `offset` (number): Количество пропущенных записей.
|
||
* `totalCount` (number): Общее количество записей.
|
||
* **accountNumber** (string, required): Номер номинального счёта.
|
||
* **date** (string, optional): Дата.
|
||
* **universalRecipients** (array of objects, required): Информация об универсальных реципиентах.
|
||
* `universalRecipientId` (string): Идентификатор реципиента.
|
||
* `isBeneficiary` (boolean): `true` — бенефициар, `false` — универсальный реципиент.
|
||
* `type` (string): Тип контрагента (`FL_RESIDENT`, `UL_RESIDENT`).
|
||
* `isActive` (boolean): Статус активности.
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Код ошибки (error) |
|
||
| :--- | :--- | :--- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — недостаточно прав (scope) |
|
||
| **404** | Not Found | `unknown_endpoint` — эндпоинт не найден |
|
||
| **429** | Too Many Requests | Превышен лимит запросов (нет тела ответа) |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
| **503** | Service Unavailable | Сервис временно недоступен (нет тела ответа) |
|
||
|
||
---
|
||
|
||
## Навигация по разделу
|
||
* **Назад:** [Создание запроса на регистрацию универсального реципиента](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/add-ur/v1/add-ur)
|
||
* **Далее:** [Получение информации об универсальном реципиенте](/products/alfa-api/documentation/articles/nominal-accounts/articles/counterparties/articles/universal-recipients/articles/get-ur/v1/get-ur)
|
||
|
||
]]>
|
||
</get_universal_recipients_list_md>
|
||
</Универсальные_реципиенты>
|
||
</Контрагенты>
|
||
</Номинальные_счета>
|
||
</продукты_и_сервисы>
|
||
<Транспортная_подпись_и_шифрование>
|
||
<encription>
|
||
<json_ghost_md>
|
||
<. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
|
||
|
||
> [!IMPORTANT]
|
||
> **Внимание**
|
||
> Для шифрования и подписания сообщения необходимо предварительно загрузить сертификат, используя следующий [метод](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/articles/post-certificates/post-certificates). Если вы уже загружали сертификат, используя данный метод — повторно выполнять эту операцию не нужно.
|
||
|
||
---
|
||
|
||
## Подпись и шифрование JSON
|
||
|
||
### 1. Подготовить сообщение в формате JSON
|
||
|
||
**Пример сообщения:**
|
||
|
||
```json
|
||
{
|
||
"sub": "1234567890",
|
||
"name": "John Doe",
|
||
"admin": true,
|
||
"iat": 1657882689,
|
||
"exp": 1657886289
|
||
}
|
||
```
|
||
|
||
### 2. Подписать запрос
|
||
|
||
Тело запроса сформировать алгоритмом **ГОСТ Р 34.10-2012 256 бит** в виде компактной сериализации в соответствии с [JSON Web Signature](https://www.rfc-editor.org/rfc/rfc7515#section-3.1) и подписать тело запроса закрытым ключом сертификата.
|
||
|
||
**Формат JWS:**
|
||
`BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)`
|
||
|
||
**Структура тела запроса (Header):**
|
||
|
||
- `"alg": "GOST3410_2012_256"`
|
||
- `"typ": "JWT"`
|
||
- `"cty": "JWS"`
|
||
- `"kid": "серийный номер сертификата"`
|
||
- `"b64": true`
|
||
|
||
**Пример JWS:**
|
||
|
||
```text
|
||
ewogICJhbGciIDogIkdPU1QzNDEwXzIwMTJfMjU2IiwKICAidHlwIiA6ICJKV1QiLAogICJjdHkiIDogIkpXUyIsCiAgImtpZCIgOiAiNmQzOGI4ZTAwNjFiMGY5YTk0ZjEwNGJlNTdlNzdhYTE4IiwKICAiYjY0IiA6IHRydWUKfQ.eyJkZWJpdFR1cm5vdmVyIjp7ImFtb3VudCI6MCwiY3VycmVuY3lOYW1lIjoiUlVSIn19.ByCkNenTTtZQrnZplNOo9WyqPTxb6vFq0iExNHpuPCV6LUeXDFTe8tNBZCy1WvpdUCQBrKK447s3NJCC5hNLhA
|
||
```
|
||
|
||
Для тестовой проверки можно использовать [https://token.dev/](https://token.dev/).
|
||
|
||
### 3. Зашифровать запрос
|
||
|
||
Зашифруйте полученный на шаге два JWS-контейнер алгоритмом **ГОСТ 34.12.2015** (блочный шифр с длиной блока n = 64 бит «Магма») открытым ключом сертификата Альфа-Банка, чтобы получился **PKCS7-контейнер**, и передайте его в теле запроса. Для получения сертификата напишите на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru).
|
||
|
||
**Информация об используемых стандартах ТК 26:**
|
||
|
||
- **Алгоритм экспорта ключей KExp15** на основе симметричного блочного шифра "Магма". OID: `1.2.643.7.1.1.7.1.1`
|
||
- **Алгоритм шифрования послания "Магма"** в режиме гаммирования CTR с механизмом преобразования ключа ACPKM с вычислением имитовставки. OID: `1.2.643.7.1.1.5.1.2`
|
||
|
||
**Пример PKCS7:**
|
||
|
||
```text
|
||
MIITdQYJKoZIhvcNAQcDoIITZjCCE2ICAQAxggIAMIIB/AIBADCCASIwggELMRgwFgYFKoUDZAESDTEwMjc3MDAwNjczMjgxGjAYBggqhQMDgQMBARIMMDA3NzI4MTY4OTcxMQswCQYDVQQGEwJSVTEYMBYGA1UECAwPNzcg0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxKjAoBgNVBAkMIdCj0LsuINCa0LDQu9Cw0L3Rh9C10LLRgdC60LDRjyAyNzEPMA0GA1UECwwG0KPQmNCRMSEwHwYDVQQKDBjQkNCeINCQ0JvQrNCk0JAt0JHQkNCd0JoxNTAzBgNVBAMMLNCi0JXQodCiINCj0KYgMi4wINCQ0J4gItCQ0JvQrNCk0JAt0JHQkNCd0JoiAhEG04uOAGGw+alPEEvlfneqGDAXBgkqhQMHAQEHAQEwCgYIKoUDBwEBBgEEgbcwgbQEKLyfbBL4H33ZmcqKiO1B85UCDlnD2qk05vlU+4dEg34KWZLsLQv05MYwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARAMyQte/ak3j94OBDlA+o+CC/y4VldsMsFTA0z9zqXFR5LFLmyVop7VDJkzeXwk/BM+YIXwbWG0GnbebS3ZjuP/wQgKo8O42NksPcsAGvRWKaYYtk3RQfL9zrMZwdBtDroNjIwghE8BgkqhkiG9w0BBwEwGwYJKoUDBwEBBQECMA4EDJzOZEVIxIU3bLczkICCERA02+pMp1hYBL6KVvGmWD7NOqN0kOF5lrhPg+4Jwk2hbQiod2WFOmK0jOf3wUwF549eNMCRP5Clkz61K9b4p8CEFuodPJ65fetCUi7t1+EmSNwzBKRNzB8gNM4M12KIIJbCGpDAxyWHWe98ZgqDgCe7d/u8Lh5lqKrfrXrwHwqi+Ivdqe5ubpU37jZr1QvoWdyLocdBBoz3musKUDfuwM+tFoEydK9gK86knMXsD7ZJ3LJngy4ztGGdjBRjbF+Pg+RmR1UhCnDLEtCiJnMNN75735pXpFAgLVcUo2oexLRGh8Jw3Uh9+UthY2tRt11/e6iyrkGPmrMlcHd1poj/XC0bsIP6+kNwHMxITO2lkEKIL3B3CRZlNKMPx4dfnLt4u+cMCm+qyLqtXilxSDZp0yETzHy76ee+UdXr0kb3eGPcBidHPNpeb2EqjAE8UCuwmVfOpznl4kioEUNfCcrnPZDqHQTpNs35lQlQocyWPQOugP0OB6BC5/9kXKf5VPHcIMLeWzvor3cuac+nBaRNB4PzvwiAdBvwKp4asbvZak/MPf8I23gpdXGVtMajbUzJUlGd6Bz+G6Kz4vpUUW8IoVwXL/vPU+3N1jKbNyGvrPFrdaIoUJHu+9B92/LlmOpcxF5GssrM9MsC9e6cEl4Cq82QQn3w7AJCdHMDzgANk04cmNKDTl5DPL2YNjcmirXaVXKzO7W4Oa4PIyKAaR811tT9kKAxsJvAWODjM1wdDMSCUlK1C1DHfJdZneXY61sbbpYQoHGuC/Uo+5Z1xdLTYjjVMY5mJ/444zdWGY0Aa2BiS+vd28hx/uSlg0T93eLpJcuWvT5B5aDuBrSFPpMRCeC/VCpwfSbAAekVHGjMb1B/ABLLgbPGnTLH5RCJOUiImihn7LPhlGSop705d9TSwvItP4XO3xebqd0vpr0YvTXy8VRTzSI8UGAs+lzoGbDnqYdPYND5XR+P0vpPA3m5Yd2kBCJJoU9Z8Clzw5+Q/6X3bsa/aLmT4V3L5TZWX169gIip77EqtLUPEGEFHVUE+rmBWKcx6IBDazEsxJ4OAHkRZq7Ls6k5g3P30fwhHmXaTWGTIjRr78LHFPN15MbTthakEoAD4sMnXCmOnZtSskGyNY1U1C1Al0REql4U2dpUDebNcmTqAqwv6rPLCCA69brcXQ8ZFbyuWq39Fz4oN6OulVNNtQ6lhuTOyPCRiEIRWdW5bIROuWs1BD9M/xZOzCIJxuA/t5xusCk1BYx1D4e6cqiwpbPSAJZMDnWlNu1WT1QPEk55ihbTYGwfUmP4SUIJL8DWJvZgs7aD1ZZq5LxjZoghem8TlpwB+dlZ96geD1T6qez0DFSSL6NJkjFGkH1WYYZcTtomUrwg4yqjDlWbZOzSPAWcKwd1vkEruViOOH892FbxRUMC9EXRg4fTaRIfcgtfEO3fGAeB6fJv1pZMdNdLUOOHViuAZrhNDgBnWblqlIbl6HMmiWCoW7JryN2WXl/L1RybXO9QALAaNCmyN0zk+baqXz2ipne3CFkohucv1T++iC+SwQ+iNoxb3DfkRdBQfXPbdY75od4+g0YPN68XW3nAze1NT8kZw7Z5/bs+ZStilJTCfKx9VZaeHF+N7k4J9ll683UYp64gtxVcNx/1MQYkf6hgesh0YRtcf35HBUAilaF+1EStQHdN6tlfaB9rNwAehoHIegset/NeWBekVpo3DKLKX0qf3+J1qBr2q3nYKdApYJwgLRCtR46b865tu8puZAPLTqCk0gp0ay52kHsYxGPAeTyQsygMCQxGjcHsHJEJCEa+NvPNkBsYfick9PKe4gFJPyDiaM4yPPk6YE755Ow8OByHbSE6c4scL1CtinWIQWZJMdtN+77au7nyDwfVvIrQehnT0gWAiTZJcwsJjxpnhdhAsGkm7j1VeT4yCAAX0OvV55LVmGVVBINAJObCsybLuKA0MIPeLH4BPa/aMBGM/XigYPFVbW01PQheuWMTkGF1ru2gc2aqGKbiFY2XSbJ3u14fPUiTpLzV9bdyi15XDpVe9T4b6ioEAHzOjsTlMpwvQZOgyKw8KAyiJ1H+S8DzNlTrbzmpJyVYw8iiLceXepHMToFLnCnmey244g2dOKmMKHZT+xyMjSgiKQ8bNI7hIPhymjeQxxmYfwmfmXxSXX5bfjDuKo7Upt0GnbfKRUGKpJnm0bsK084Lxxy4XBrFQt0aNPTfAyhEylqhkctdpteIMM7gdWwQZrLhrKxJdFaU5HK0aFaIMfE4ANSC93Grpz31NgWlTKd1ZeTbnbP3vRE9wS6N+i/xI6Vmn0v928h/DPMDoiWkCx11+Ey1fAnR3inBTmVnM3j9+SIuo1tNaX2Xq4zoHXTMr5yaY9pvPPMCYrCLxX8J28bUmqR/cA5b+ot4fWyQDh0ascRk2wB2PptjcjQjxWED4vRWj/2oDNMx1lCuwPmagXAYWbDUql4LyknJUZGjePhP+7mDX6AtTtX+70jltAUlC5orD8L+IDKeRU2y+lCvdV8OfrE892XiFfOvPd6t+Pal0a0ML/Kbp7ZH642L5I73RyTFzAv06UPybwdpvEa8rssicVd3sjI5BJnJ2x3Jkl7QcSUqkk28Werjl0+/5F6C+xlJOgZ2tEX4SyiNxfVGd7dn0jsFzAzrfVqFp5tJ3f6IZ3hG4MetoQS2R3PXfETAoHz4qUE0XJ95OTxY9DCmDXtR5ce/5BC0EaJLnAexxwe+TC/kMjqUZTCKla3hhfZCG0ylGc4u8d6MtijTzkKZNiC9ww5q4T392uzltL4jp/YiHGNSvQMtgfjOeFKtNWHGMWJ/8hjYqTG5jEPWNnYwCNmxCW9Ut7jZPAnKomRiO4+cIEavgKiyiYqTBGHMDV6PZ5SvKOTATr3swLHBzSgqoczp992fWocAD9MSc+CK5oULQs2oduBWFJ5zQRuRGpjxqTjh64m1w0Ci2imHX9AY30ccpNjp/g5znWUexmioupdnZGMchy2RnFNMpflGrTGiyXgqsSSykwCLqB56pF/Qqg1v3Eq0NCWt9VKkFIi27SXfPW/jXTBs/r1EkZu2C8DqaTynjWmlo3L1yTrs1ZyXTDSiuQCzLKPEJoYHVIboZ8za1C6oVEnluh7b4rn5DLAgTgHcU2oZbu2qVePSCZwXj6tz9d74dU8DBbowTn33443YAC04VeSA8A+jsT4YKMdhCK8AkTQSAEtUjBj3Mb++T3XKEVth639oEfZ6mioIcjQ8ePu2|... (длинная строка сокращена)
|
||
```
|
||
|
||
### 4. Выполнить запрос
|
||
|
||
- Если добавить заголовки `Content-Type: application/json` + `X-Request-ChannelSecurity: NO` и отправить запрос, то запрос **не будет** расшифрован и подпись запроса не будет проверяться.
|
||
- Если добавить заголовки `Content-Type: application/jose` + `X-Request-ChannelSecurity: ENCRYPTION` и отправить запрос, то запрос **будет** расшифрован и подпись будет проверяться.
|
||
|
||
Банк дешифрует запрос и проверяет подпись. Если подпись валидна — запрос обрабатывается, если невалидна — Банк определяет запрос как неподлинный и возвращает ошибку. Ошибка также будет подписана и зашифрована. Любые другие комбинации заголовков приведут к ошибке.
|
||
|
||
---
|
||
|
||
## Дешифрование и проверка подписи JSON
|
||
|
||
### 1. Дешифровать ответ
|
||
|
||
- При заголовках `Accept: application/json` + `X-Response-ChannelSecurity: NO` ответ **не будет** подписан и зашифрован.
|
||
- При заголовках `Accept: application/jose` + `X-Response-ChannelSecurity: ENCRYPTION` ответ (включая ошибки) **будет** подписан и зашифрован.
|
||
|
||
Полученный ответ будет в виде PKCS7-контейнера. Расшифруйте его с использованием вашего закрытого ключа. Используются те же стандарты ТК 26 (Магма, OID: `1.2.643.7.1.1.7.1.1` и `1.2.643.7.1.1.5.1.2`).
|
||
|
||
### 2. Обработать дешифрованный ответ
|
||
|
||
Полученный ответ будет представлен в виде компактной сериализации JWS (три части через точку): `Base64URL(Header)`, `Base64URL(Payload)`, `Base64URL(Signature)`.
|
||
|
||
**Пример декодированного JWS:**
|
||
|
||
| Закодированный | Раскодированный |
|
||
| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |
|
||
| `ewogICJhbGciIDog...` | **Header:** `{"alg": "GOST3410_2012_256", "typ": "JWT", "cty": "JWS", "kid": "6d38b8e0061b0f9a94f104be57e77aa18", "b64": true}` |
|
||
| `eyJkZWJpdFR1cm5vdmVyI...` | **Payload:** `{"debitTurnover": {"amount": 0, "currencyName": "RUR"}}` |
|
||
|
||
### 3. Проверить подпись ответа от Банка
|
||
|
||
Используйте открытый ключ сертификата Банка для проверки подписи. Для получения сертификата напишите на [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru). В поле `kid` заголовка JWS будет указан серийный номер сертификата Банка.
|
||
|
||
### 4. Обработать ответ в формате JSON
|
||
|
||
**Пример итогового ответа:**
|
||
|
||
```json
|
||
{
|
||
"debitTurnover": {
|
||
"amount": 0,
|
||
"currencyName": "RUR"
|
||
}
|
||
}
|
||
```
|
||
|
||
]]>
|
||
</json_ghost_md>
|
||
<json_rsa_md>
|
||
<. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
|
||
|
||
> [!IMPORTANT]
|
||
> **Внимание**
|
||
> Для шифрования сообщения необходимо предварительно выпустить сертификат в УЦ Альфа-Банка, используя сервис [«Электронная подпись»](/products/alfa-api/documentation/articles/signature/signature). Если Вы уже выпускали сертификат — повторно выпускать не нужно.
|
||
|
||
---
|
||
|
||
## Подписание и шифрование JSON
|
||
|
||
### 1. Подготовить сообщение в формате JSON
|
||
|
||
**Пример сообщения:**
|
||
|
||
```json
|
||
{
|
||
"sub": "1234567890",
|
||
"name": "John Doe",
|
||
"admin": true,
|
||
"iat": 1657882689,
|
||
"exp": 1657886289
|
||
}
|
||
```
|
||
|
||
### 2. Подписать запрос
|
||
|
||
Тело запроса сформировать алгоритмом **RS256** в виде компактной сериализации в соответствии с [JSON Web Signature](https://www.rfc-editor.org/rfc/rfc7515#section-3.1) и подписать тело запроса закрытым ключом сертификата.
|
||
|
||
**Формат JWS:**
|
||
`BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)`
|
||
|
||
**Структура тела запроса:**
|
||
|
||
- **Заголовок (Header):**
|
||
- `"kid"`: "серийный номер сертификата"
|
||
- `"typ"`: "JWT"
|
||
- `"alg"`: "RS256"
|
||
- **JSON-документ (Payload)**
|
||
- **Подпись запроса (Signature)**
|
||
|
||
**Пример JWS:**
|
||
`eyJhbGciOiJSUzI1NiIsImtpZCI6IjYxMDAwMzYzY2NiNzU5Y2I0NDg2MDc4NjVkMDAwMTAwMDM2M2NjIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTY1Nzg4MjY4OSwiZXhwIjoxNjU3ODg2Mjg5fQ.ApKNzZ9kLMtBY3LzReSHQ7_AyDnzocGo9GTQFRmxTiRS7Lj7a55Kr4ziwZAmmwloF1063JJMOaU0lS947q6_hSct9pxzPdZ9tTmpIDGnQL-ks0oB7zz9vUSUd3G00UZXSYnuhI9BBRXvmmTaue5Y2j5zVZofLdO2dqPWCnsQULyLn_vYf8PeABhnAQ29z1Bq42uxfRFTM35cF40Tp4VBSqXDI1vxfleLusQlOZM-5Sk7O3Vy4Sf-UB03RrRGSBerZjdoMRh7dgEyoYAXS6c4MejCm2vmXKqSd7pu2V2TxOM9UTchkCS16DL-RIJtnfMjznmznU5SoMCpncvs6gRNeQ`
|
||
|
||
Для тестовой проверки можно использовать [https://token.dev/](https://token.dev/).
|
||
|
||
### 3. Зашифровать запрос
|
||
|
||
Преобразуйте полученный JWS-контейнер алгоритмом **RS256** в соответствии с [JSON Web Encryption](https://datatracker.ietf.org/doc/html/rfc7516) и зашифруйте [открытым ключом](/assets/developers-portal.docs.alfa-api/articles/signature-encryption/articles/encryption/articles/json-rsa/files/cert.cer) сертификата.
|
||
|
||
**Формат JWE:**
|
||
`BASE64URL(UTF8(JWE Protected Header)) || '.' || BASE64URL(JWE Encrypted Key) || '.' || BASE64URL(JWE Initialization Vector) || '.' || BASE64URL(JWE Ciphertext) || '.' || BASE64URL(JWE Authentication Tag)`
|
||
|
||
**Структура заголовка (Protected Header):**
|
||
|
||
- `"kid"`: "серийный номер сертификата"
|
||
- `"enc"`: "A256GCM"
|
||
- `"alg"`: "RSA-OAEP-256"
|
||
|
||
**Пример JWE:**
|
||
`eyJlbmiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0.eFcY1Fv_xN6cFDNxnMoxCjEpVTmAjhrHuB2oW1hYapBXE02qOtdKrC3W7FGVjLFlgV3... (урезано для краткости) ...ZfAY-M8w-t9l9gErE1vQFg`
|
||
|
||
### 4. Выполнить запрос
|
||
|
||
Необходимо передать специфические HTTP-заголовки:
|
||
|
||
- **Без шифрования:**
|
||
`Content-Type: application/json` + `X-Request-ChannelSecurity: NO`
|
||
- **С шифрованием:**
|
||
`Content-Type: application/jose` + `X-Request-ChannelSecurity: ENCRYPTION`
|
||
|
||
Банк дешифрует запрос и проверяет подпись. Любые другие комбинации заголовков приведут к ошибке.
|
||
|
||
---
|
||
|
||
## Дешифрование и проверка подписи JSON
|
||
|
||
### 1. Дешифровать ответ
|
||
|
||
Для получения зашифрованного ответа используйте заголовки:
|
||
`Accept: application/jose` + `X-Response-ChannelSecurity: ENCRYPTION`
|
||
|
||
Необходимо дешифровать ответ с помощью вашего закрытого ключа.
|
||
|
||
**Структура JWE (компактная сериализация):**
|
||
|
||
1. **Protected Header** (не зашифровано)
|
||
2. **Encrypted Key** (зашифровано)
|
||
3. **Initialization Vector** (зашифровано)
|
||
4. **Ciphertext** (зашифровано)
|
||
5. **Authentication Tag** (зашифровано)
|
||
|
||
| Закодированный JWE (пример) | Раскодированный (Protected Header) |
|
||
| :------------------------------------------------------- | :-------------------------------------------- |
|
||
| `eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0...` | `{ "enc": "A256GCM", "alg": "RSA-OAEP-256" }` |
|
||
|
||
### 2. Обработать дешифрованный ответ
|
||
|
||
После дешифрования JWE вы получите компактную сериализацию **JWS**, состоящую из трех частей:
|
||
`Base64URL(Header) . Base64URL(Payload) . Base64URL(Signature)`
|
||
|
||
**Пример раскодированного JWS:**
|
||
|
||
- **Header:**
|
||
```json
|
||
{
|
||
"kid": "alfa-test-jwt",
|
||
"typ": "JWT",
|
||
"alg": "RS256"
|
||
}
|
||
```
|
||
- **Payload:**
|
||
```json
|
||
{
|
||
"debitTurnover": {
|
||
"amount": 0,
|
||
"currencyName": "RUR"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. Проверить подпись ответа от Банка
|
||
|
||
Используйте [открытый ключ](/assets/developers-portal.docs.alfa-api/articles/signature-encryption/articles/encryption/articles/json-rsa/files/cert.cer) сертификата Банка для проверки подписи. Серийный номер сертификата Банка указан в поле `kid` заголовка JWS.
|
||
|
||
### 4. Обработать ответ в формате JSON
|
||
|
||
Итоговый результат:
|
||
|
||
```json
|
||
{
|
||
"debitTurnover": {
|
||
"amount": 0,
|
||
"currencyName": "RUR"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
**Ссылки для навигации:**
|
||
|
||
- ← [Подписание TXT ГОСТ-сертификатом](/products/alfa-api/documentation/articles/signature-encryption/articles/signature/articles/text-gost/text-gost)
|
||
- → [Шифрование JSON ГОСТ-сертификатом](/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/articles/json-gost/json-gost)
|
||
|
||
]]>
|
||
</json_rsa_md>
|
||
</encription>
|
||
<managing_certificates>
|
||
<get_certificates_md>
|
||
<.
|
||
|
||
> **Внимание**
|
||
> Для получения сертификата, выпущенного через сервис [«Электронная подпись»](/products/alfa-api/documentation/articles/signature/signature), используйте метод [«Получение RSA-сертификата»](/products/alfa-api/documentation/articles/signature/articles/get-rsa/v2/get-rsa).
|
||
|
||
---
|
||
|
||
## Параметры запроса
|
||
|
||
### HEADERS
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :---------------- | :------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **Authorization** | `string` | required | Bearer {access_token}, полученный по [Authorization Code Flow](/products/alfa-api/documentation/articles/alfa-id/articles/acf/articles/intro/intro) / [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | `string` | required | `application/json` |
|
||
| **Content-Type** | `string` | optional | `application/json` |
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl -X GET https://baas.alfabank.ru/api/gd/v1/crypto-service/certificates \
|
||
-H 'Authorization: Bearer {access-token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
| Атрибут | Тип | Обяз. | Описание |
|
||
| :------------------- | :------------- | :------- | :--------------------------------------------------------------------------------------------------------- |
|
||
| **id** | `string(uuid)` | required | ID сертификата |
|
||
| **clientId** | `string(uuid)` | required | Идентификатор партнёрского сервиса |
|
||
| **ownerName** | `string` | required | Имя владельца |
|
||
| **fingerprint** | `string` | required | Отпечаток сертификата |
|
||
| **organizationName** | `string` | optional | Наименование организации |
|
||
| **beginDateTime** | `string` | required | Дата начала действия сертификата |
|
||
| **expireDateTime** | `string` | required | Дата окончания действия сертификата |
|
||
| **status** | `string` | optional | Статус. Возможные значения:<br>• `ACTIVE` - активен;<br>• `REVOKED` - аннулирован;<br>• `DELETED` - удалён |
|
||
| **certificateBody** | `string` | required | Тело сертификата в виде base64-строки |
|
||
| **type** | `string` | required | Тип сертификата. Возможные значения:<br>• `SIGNATURE` - для подписи;<br>• `ENCRYPTION` - для шифрования |
|
||
| **algorithm** | `string` | required | Алгоритм сертификата |
|
||
| **serialNumber** | `string` | required | Серийный номер сертификата |
|
||
|
||
### Пример ответа 200 (OK)
|
||
|
||
```json
|
||
[
|
||
{
|
||
"id": "9610bc6b-f06b-41b6-bae9-6bb5b06a54dd",
|
||
"clientId": "4aa56f35-abb1-4ebe-9697-389cca4a4475",
|
||
"ownerName": "Кудрявцев Ермолай Игоревич",
|
||
"fingerprint": "333773d77ef05aa9f7b7bae8e2779418b2aedb6a",
|
||
"organizationName": "ООО 'Ромашка'",
|
||
"beginDateTime": "2023-07-28T15:11:14Z",
|
||
"expireDateTime": "2025-06-19T11:48:06Z",
|
||
"status": "ACTIVE",
|
||
"certificateBody": "MIIGATCCBLWgAwIBAgITYQADiqqgHk1/OTmNhAABAAOKqjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwWzELMAkGA1UEBhMCUlUxEjAQBgNVBAoTCUFsZmEtQmFuazELMAkGA1UECxMCSVQxKzApBgNVBAMTIkFsZmEtQmFuayBJc3N1aW5nIFN1Ym9yZGluYXRlIENBIDEwHhcNMjMwNzI4MTUxMTE0WhcNMjUwNjE5MTE0ODA2WjCBpzEXMBUGA1UEKgwO0JXRgNC80L7Qu9Cw0LkxGzAZBgNVBAQMEtCa0YPQtNGA0Y/QstGG0LXQsjELMAkGA1UEBhMCUlUxOzA5BgNVBAMMMtCa0YPQtNGA0Y/QstGG0LXQsiDQldGA0LzQvtC70LDQuSDQmNCz0L7RgNC10LLQuNGHMSUwIwYJKoZIhvcNAQkBFhZVc2VyNTA0QHBvY2h0b2Noa2EuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ZM3Ztf+Ro4e64R8yI4qDV/zLdJjUCx5WNBx6gcp1pJ4uhQixw+ASy4Oxu0Xp7OxmpXtvDJFi4kr6QymtzMNYqJA3GZk85p+Iobkwo5zHKyBf0tX5HwmFWjJx9CqZKp8iZAFw9nqz1uqronxyzTgULPL6eE9igVSzaVf5msV8sXXfl87guVHF+Ph18hsdng1WiCJ7Mi14ETdI9O0R5eJiPZztLIHRnXuBtB1Oa1YiiWtvkZNnpLKONwxljdTZlH7h7KfaXUwW3kX8r0p7jvO7gNhMXvOSK1JPXWevmBHrjONVlG2atWoxT2IHs2ZDz+BLxgSwLc9NIQK+qKhIMfA1wIDAQABo4ICBzCCAgMwJQYDVR0RBB4wHIILZXhhbXBsZS5jb22CDSouZXhhbXBsZS5jb20wHQYDVR0OBBYEFGbczU3B6IZhHwKsC8ODg8r4xi3nMB8GA1UdIwQYMBaAFMkXMx6bqZSglhhLbnFMgdvpc/5lMIG7BgNVHR8EgbMwgbAwga2ggaqggaeGOWh0dHBzOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNybIYwaHR0cDovL3Zsa3dzNjo5MDgxL2Rpc3RycG9pbnQvQWxmYS1CYW5rX1NDQTEuY3JshjhodHRwOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNybDCB2wYIKwYBBQUHAQEEgc4wgcswRQYIKwYBBQUHMAKGOWh0dHBzOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNydDA8BggrBgEFBQcwAoYwaHR0cDovL3Zsa3dzNjo5MDgxL2Rpc3RycG9pbnQvQWxmYS1CYW5rX1NDQTEuY3J0MEQGCCsGAQUFBzAChjhodHRwOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNydDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUADggEBAHTjDmxldqWkRgpT5gXKuIzyqIHjlDZMMfahcWBxqWV9XC46bcPx8gvlpzb8N+oK+X6AqDt3+vneAiGQn8iNs9ajDKtes9ulZzMUJBwzwv26DsiI3s4/0phypAcqQVHJQxvU+rdrh5FgqJcNZsuOtOaJhiO/i/3J7hoL/oxVwSk+lX4m+X5u76/Vdqk9ydKXNNnzMi12F4FvD+igTrezzLjPHQRx5vLY0cWwLEdBxLJmBwd1u7EBT3j+v9Pyh0pTzXsJC0BY1BIt6VOh6QGKGTKT3cBB6zbIOrY7UTOkYdCqtyB9vhayAyti3aO37PANUQ7dUwUEZyf64/D4/HRlhqI=",
|
||
"type": "ENCRYPTION",
|
||
"algorithm": "RS256",
|
||
"serialNumber": "2163173489423972678179275487230070851350268586"
|
||
}
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Возможные значения `error` |
|
||
| :------ | :------------- | :------------------------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры запроса |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — нет прав на использование сервиса (настройки scope) |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
|
||
_Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок._
|
||
|
||
---
|
||
|
||
**Навигация:**
|
||
[← Добавление нового сертификата](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/articles/post-certificates/post-certificates) | [Обновление сертификата →](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/articles/patch-certificates/patch-certificates)
|
||
|
||
]]>
|
||
</get_certificates_md>
|
||
<patch_certificates_md>
|
||
< / [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | `string` | **Required**. `application/json` |
|
||
| **Content-Type** | `string` | **Required**. `application/json` |
|
||
|
||
### PATH
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :------ | :------- | :--------------------------- |
|
||
| **id** | `string` | **Required**. ID сертификата |
|
||
|
||
### BODY
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :-------- | :------- | :----------------------------------------------------------------------------------------------------------------------------- |
|
||
| **op** | `string` | **Optional**. Тип операции. Возможные значения: `replace` — замена |
|
||
| **path** | `string` | **Optional**. Путь до изменяемого параметра. Возможные значения: `/status` |
|
||
| **value** | `string` | **Optional**. Новое значение. Возможные значения: <br>• `ACTIVE` — сертификат активен;<br>• `REVOKED` — сертификат аннулирован |
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl -X PATCH https://baas.alfabank.ru/api/gd/v1/crypto-service/certificates/{id} \
|
||
-H 'Authorization: Bearer {access-token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{
|
||
"op": "replace",
|
||
"path": "/status",
|
||
"value": "ACTIVE"
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ (200 OK)
|
||
|
||
| Атрибут | Тип | Описание |
|
||
| :------------------- | :------------- | :-------------------------------------------------------------------------- |
|
||
| **id** | `string(uuid)` | **Required**. ID сертификата |
|
||
| **clientId** | `string(uuid)` | **Required**. Идентификатор партнёрского сервиса |
|
||
| **ownerName** | `string` | **Required**. Имя владельца |
|
||
| **fingerprint** | `string` | **Required**. Отпечаток сертификата |
|
||
| **organizationName** | `string` | **Optional**. Наименование организации |
|
||
| **beginDateTime** | `string` | **Required**. Дата начала действия сертификата |
|
||
| **expireDateTime** | `string` | **Required**. Дата окончания действия сертификата |
|
||
| **status** | `string` | **Required**. Статус: `ACTIVE` (активен), `REVOKED` (аннулирован) |
|
||
| **certificateBody** | `string` | **Required**. Тело сертификата в виде base64-строки |
|
||
| **type** | `string` | **Required**. Тип: `SIGNATURE` (для подписи), `ENCRYPTION` (для шифрования) |
|
||
| **algorithm** | `string` | **Required**. Алгоритм сертификата |
|
||
| **serialNumber** | `string` | **Required**. Серийный номер сертификата |
|
||
|
||
#### Пример ответа 200
|
||
|
||
```json
|
||
{
|
||
"id": "9610bc6b-f06b-41b6-bae9-6bb5b06a54dd",
|
||
"clientId": "4aa56f35-abb1-4ebe-9697-389cca4a4475",
|
||
"ownerName": "Кудрявцев Ермолай Игоревич",
|
||
"fingerprint": "333773d77ef05aa9f7b7bae8e2779418b2aedb6a",
|
||
"organizationName": "ООО 'Ромашка'",
|
||
"beginDateTime": "2023-07-28T15:11:14Z",
|
||
"expireDateTime": "2025-06-19T11:48:06Z",
|
||
"status": "ACTIVE",
|
||
"certificateBody": "MIIGATCCBLWgAwIBAgITYQADiqqgHk1/OTmNhAABAAOKqjBB...",
|
||
"type": "ENCRYPTION",
|
||
"algorithm": "RS256",
|
||
"serialNumber": "2163173489423972678179275487230070851350268586"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Код ошибки (`error`) |
|
||
| :------ | :------------- | :------------------------------------------------------------ |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен, отозван или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — недостаточно прав для вызова сервиса |
|
||
| **500** | Internal Error | `internal_error` — внутренняя ошибка сервиса |
|
||
|
||
### Примеры сообщений об ошибках
|
||
|
||
**400 Bad Request**
|
||
|
||
```json
|
||
{
|
||
"error": "invalid_request",
|
||
"error_description": "Authorization header is not present in request headers"
|
||
}
|
||
```
|
||
|
||
**401 Unauthorized**
|
||
|
||
```json
|
||
{
|
||
"error": "invalid_token",
|
||
"error_description": "The access token provided is expired, revoked, malformed, or invalid for other reasons"
|
||
}
|
||
```
|
||
|
||
> **Важно:** Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в текущей версии документации.
|
||
|
||
---
|
||
|
||
_Документация Alfa API_
|
||
|
||
]]>
|
||
</patch_certificates_md>
|
||
<post_certificates_md>
|
||
< / [Authorization Code Flow H2H](/products/alfa-api/documentation/articles/alfa-id/articles/acf-h2h/articles/intro/intro) |
|
||
| **Accept** | string | required | `application/json` |
|
||
| **Content-Type** | string | required | `application/json` |
|
||
|
||
### BODY
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------------ | :----- | :------------- | :------------------------------------------------------------------------------------------------------- |
|
||
| **type** | string | required | Тип сертификата. Возможные значения:<br>• `SIGNATURE` — для подписи;<br>• `ENCRYPTION` — для шифрования. |
|
||
| **certificateBody** | string | required | Тело сертификата в виде base64-строки. |
|
||
|
||
### Пример запроса
|
||
|
||
```bash
|
||
curl -X POST https://baas.alfabank.ru/api/gd/v1/crypto-service/certificates \
|
||
-H 'Authorization: Bearer {access-token}' \
|
||
-H 'Accept: application/json' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{
|
||
"type": "ENCRYPTION",
|
||
"certificateBody": "MIIGATCCBLWgAwIBAgITYQADiqqgHk1/OTmNhAABAAOKqjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwWzELMAkGA1UEBhMCUlUxEjAQBgNVBAoTCUFsZmEtQmFuazELMAkGA1UECxMCSVQxKzApBgNVBAMTIkFsZmEtQmFuayBJc3N1aW5nIFN1Ym9yZGluYXRlIENBIDEwHhcNMjMwNzI4MTUxMTE0WhcNMjUwNjE5MTE0ODA2WjCBpzEXMBUGA1UEKgwO0JXRgNC80L7Qu9Cw0LkxGzAZBgNVBAQMEtCa0YPQtNGA0Y/QstGG0LXQsjELMAkGA1UEBhMCUlUxOzA5BgNVBAMMMtCa0YPQtNGA0Y/QstGG0LXQsiDQldGA0LzQvtC70LDQuSDQmNCz0L7RgNC10LLQuNGHMSUwIwYJKoZIhvcNAQkBFhZVc2VyNTA0QHBvY2h0b2Noa2EuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ZM3Ztf+Ro4e64R8yI4qDV/zLdJjUCx5WNBx6gcp1pJ4uhQixw+ASy4Oxu0Xp7OxmpXtvDJFi4kr6QymtzMNYqJA3GZk85p+Iobkwo5zHKyBf0tX5HwmFWjJx9CqZKp8iZAFw9nqz1uqronxyzTgULPL6eE9igVSzaVf5msV8sXXfl87guVHF+Ph18hsdng1WiCJ7Mi14ETdI9O0R5eJiPZztLIHRnXuBtB1Oa1YiiWtvkZNnpLKONwxljdTZlH7h7KfaXUwW3kX8r0p7jvO7gNhMXvOSK1JPXWevmBHrjONVlG2atWoxT2IHs2ZDz+BLxgSwLc9NIQK+qKhIMfA1wIDAQABo4ICBzCCAgMwJQYDVR0RBB4wHIILZXhhbXBsZS5jb22CDSouZXhhbXBsZS5jb20wHQYDVR0OBBYEFGbczU3B6IZhHwKsC8ODg8r4xi3nMB8GA1UdIwQYMBaAFMkXMx6bqZSglhhLbnFMgdvpc/5lMIG7BgNVHR8EgbMwgbAwga2ggaqggaeGOWh0dHBzOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNybIYwaHR0cDovL3Zsa3dzNjo5MDgxL2Rpc3RycG9pbnQvQWxmYS1CYW5rX1NDQTEuY3JshjhodHRwOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNybDCB2wYIKwYBBQUHAQEEgc4wgcswRQYIKwYBBQUHMAKGOWh0dHBzOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNydDA8BggrBgEFBQcwAoYwaHR0cDovL3Zsa3dzNjo5MDgxL2Rpc3RycG9pbnQvQWxmYS1CYW5rX1NDQTEuY3J0MEQGCCsGAQUFBzAChjhodHRwOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNydDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUADggEBAHTjDmxldqWkRgpT5gXKuIzyqIHjlDZMMfahcWBxqWV9XC46bcPx8gvlpzb8N+oK+X6AqDt3+vneAiGQn8iNs9ajDKtes9ulZzMUJBwzwv26DsiI3s4/0phypAcqQVHJQxvU+rdrh5FgqJcNZsuOtOaJhiO/i/3J7hoL/oxVwSk+lX4m+X5u76/Vdqk9ydKXNNnzMi12F4FvD+igTrezzLjPHQRx5vLY0cWwLEdBxLJmBwd1u7EBT3j+v9Pyh0pTzXsJC0BY1BIt6VOh6QGKGTKT3cBB6zbIOrY7UTOkYdCqtyB9vhayAyti3aO37PANUQ7dUwUEZyf64/D4/HRlhqI="
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Параметры ответа
|
||
|
||
### Успешный ответ: 201 Created
|
||
|
||
| Атрибут | Тип | Обязательность | Описание |
|
||
| :------------------- | :----------- | :------------- | :---------------------------------------------------------------------- |
|
||
| **id** | string(uuid) | required | ID сертификата |
|
||
| **clientId** | string | required | Идентификатор партнёрского сервиса |
|
||
| **ownerName** | string | required | Имя владельца |
|
||
| **fingerprint** | string | required | Отпечаток сертификата |
|
||
| **organizationName** | string | optional | Наименование организации |
|
||
| **beginDateTime** | string | required | Дата начала действия сертификата |
|
||
| **expireDateTime** | string | required | Дата окончания действия сертификата |
|
||
| **status** | string | required | Статус: `ACTIVE` (активен), `REVOKED` (аннулирован), `DELETED` (удалён) |
|
||
| **certificateBody** | string | required | Тело сертификата в виде base64-строки |
|
||
| **type** | string | required | Тип сертификата (`SIGNATURE` или `ENCRYPTION`) |
|
||
| **algorithm** | string | required | Алгоритм сертификата |
|
||
| **serialNumber** | string | required | Серийный номер сертификата |
|
||
|
||
#### Пример ответа 201
|
||
|
||
```json
|
||
{
|
||
"id": "9610bc6b-f06b-41b6-bae9-6bb5b06a54dd",
|
||
"clientId": "4aa56f35-abb1-4ebe-9697-389cca4a4475",
|
||
"ownerName": "Кудрявцев Ермолай Игоревич",
|
||
"fingerprint": "333773d77ef05aa9f7b7bae8e2779418b2aedb6a",
|
||
"organizationName": "ООО 'Ромашка'",
|
||
"beginDateTime": "2023-07-28T15:11:14Z",
|
||
"expireDateTime": "2025-06-19T11:48:06Z",
|
||
"status": "ACTIVE",
|
||
"certificateBody": "MIIGATCCBLWgAwIBAgITYQADiqqgHk1/OTmNhAABAAOKqjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwWzELMAkGA1UEBhMCUlUxEjAQBgNVBAoTCUFsZmEtQmFuazELMAkGA1UECxMCSVQxKzApBgNVBAMTIkFsZmEtQmFuayBJc3N1aW5nIFN1Ym9yZGluYXRlIENBIDEwHhcNMjMwNzI4MTUxMTE0WhcNMjUwNjE5MTE0ODA2WjCBpzEXMBUGA1UEKgwO0JXRgNC80L7Qu9Cw0LkxGzAZBgNVBAQMEtCa0YPQtNGA0Y/QstGG0LXQsjELMAkGA1UEBhMCUlUxOzA5BgNVBAMMMtCa0YPQtNGA0Y/QstGG0LXQsiDQldGA0LzQvtC70LDQuSDQmNCz0L7RgNC10LLQuNGHMSUwIwYJKoZIhvcNAQkBFhZVc2VyNTA0QHBvY2h0b2Noa2EuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ZM3Ztf+Ro4e64R8yI4qDV/zLdJjUCx5WNBx6gcp1pJ4uhQixw+ASy4Oxu0Xp7OxmpXtvDJFi4kr6QymtzMNYqJA3GZk85p+Iobkwo5zHKyBf0tX5HwmFWjJx9CqZKp8iZAFw9nqz1uqronxyzTgULPL6eE9igVSzaVf5msV8sXXfl87guVHF+Ph18hsdng1WiCJ7Mi14ETdI9O0R5eJiPZztLIHRnXuBtB1Oa1YiiWtvkZNnpLKONwxljdTZlH7h7KfaXUwW3kX8r0p7jvO7gNhMXvOSK1JPXWevmBHrjONVlG2atWoxT2IHs2ZDz+BLxgSwLc9NIQK+qKhIMfA1wIDAQABo4ICBzCCAgMwJQYDVR0RBB4wHIILZXhhbXBsZS5jb22CDSouZXhhbXBsZS5jb20wHQYDVR0OBBYEFGbczU3B6IZhHwKsC8ODg8r4xi3nMB8GA1UdIwQYMBaAFMkXMx6bqZSglhhLbnFMgdvpc/5lMIG7BgNVHR8EgbMwgbAwga2ggaqggaeGOWh0dHBzOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNybIYwaHR0cDovL3Zsa3dzNjo5MDgxL2Rpc3RycG9pbnQvQWxmYS1CYW5rX1NDQTEuY3JshjhodHRwOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNybDCB2wYIKwYBBQUHAQEEgc4wgcswRQYIKwYBBQUHMAKGOWh0dHBzOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNydDA8BggrBgEFBQcwAoYwaHR0cDovL3Zsa3dzNjo5MDgxL2Rpc3RycG9pbnQvQWxmYS1CYW5rX1NDQTEuY3J0MEQGCCsGAQUFBzAChjhodHRwOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNybDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUADggEBAHTjDmxldqWkRgpT5gXKuIzyqIHjlDZMMfahcWBxqWV9XC46bcPx8gvlpzb8N+oK+X6AqDt3+vneAiGQn8iNs9ajDKtes9ulZzMUJBwzwv26DsiI3s4/0phypAcqQVHJQxvU+rdrh5FgqJcNZsuOtOaJhiO/i/3J7hoL/oxVwSk+lX4m+X5u76/Vdqk9ydKXNNnzMi12F4FvD+igTrezzLjPHQRx5vLY0cWwLEdBxLJmBwd1u7EBT3j+v9Pyh0pTzXsJC0BY1BIt6VOh6QGKGTKT3cBB6zbIOrY7UTOkYdCqtyB9vhayAyti3aO37PANUQ7dUwUEZyf64/D4/HRlhqI=",
|
||
"type": "ENCRYPTION",
|
||
"algorithm": "RS256",
|
||
"serialNumber": "2163173489423972678179275487230070851350268586"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Ошибки
|
||
|
||
| Код | Описание | Код ошибки (в теле) |
|
||
| :------ | :-------------------- | :--------------------------------------------------------- |
|
||
| **400** | Bad Request | `invalid_request` — неверные входные параметры |
|
||
| **401** | Unauthorized | `invalid_token` — токен просрочен или недействителен |
|
||
| **403** | Forbidden | `insufficient_scope` — недостаточно прав (настройки scope) |
|
||
| **500** | Internal Server Error | `internal_error` — внутренняя ошибка сервиса |
|
||
|
||
> Значения параметров ошибок могут изменяться. Рекомендуем предусмотреть стандартную обработку ошибок, не описанных в текущей версии документации.
|
||
|
||
---
|
||
|
||
### Навигация
|
||
|
||
← [Для чего это нужно](/products/alfa-api/documentation/articles/signature-encryption/articles/intro/intro) | [Получение сертификатов](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/articles/get-certificates/get-certificates) →
|
||
|
||
]]>
|
||
</post_certificates_md>
|
||
</managing_certificates>
|
||
<signature_encryption_intro_md>
|
||
<
|
||
- → [Добавление нового сертификата](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/articles/post-certificates/post-certificates)
|
||
|
||
---
|
||
|
||
### Справочная информация (из структуры документа)
|
||
|
||
Данная статья является частью раздела **Транспортная подпись и шифрование**. В этом разделе также доступны:
|
||
|
||
1. [Управление сертификатами для подписи и шифрования](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/managing-certificates)
|
||
2. [Транспортная подпись](/products/alfa-api/documentation/articles/signature-encryption/articles/signature/signature)
|
||
3. [Шифрование](/products/alfa-api/documentation/articles/signature-encryption/articles/encryption/encryption)
|
||
|
||
]]>
|
||
</signature_encryption_intro_md>
|
||
<transport_signature>
|
||
<json_ghost_md>
|
||
<. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
|
||
|
||
> **Внимание**
|
||
> Для подписания сообщения необходимо предварительно загрузить сертификат, используя следующий [метод](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/articles/post-certificates/post-certificates). Если Вы уже загружали сертификат, используя данный метод — повторно выполнять эту операцию не нужно.
|
||
|
||
## Подписание JSON
|
||
|
||
### 1. Подготовить сообщение в формате JSON
|
||
|
||
**Пример сообщения:**
|
||
|
||
```json
|
||
{
|
||
"sub": "1234567890",
|
||
"name": "John Doe",
|
||
"admin": true,
|
||
"iat": 1657882689,
|
||
"exp": 1657886289
|
||
}
|
||
```
|
||
|
||
### 2. Подписать запрос
|
||
|
||
Тело запроса сформировать алгоритмом ГОСТ Р 34.10-2012 256 бит в виде компактной сериализации в соответствии с [JSON Web Signature](https://www.rfc-editor.org/rfc/rfc7515#section-3.1) и подписать тело запроса закрытым ключом сертификата.
|
||
|
||
**Формат JWS:**
|
||
`BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)`
|
||
|
||
**Структура тела запроса:**
|
||
|
||
- **Заголовок (Header)**
|
||
- `"alg": "GOST3410_2012_256"`
|
||
- `"typ": "JWT"`
|
||
- `"cty": "JWS"`
|
||
- `"kid": "серийный номер сертификата"`
|
||
- `"b64": true`
|
||
- **JSON-документ (Payload)**
|
||
- **Подпись запроса (Signature)**
|
||
|
||
**Пример JWS:**
|
||
|
||
```text
|
||
ewogICJhbGciIDogIkdPU1QzNDEwXzIwMTJfMjU2IiwKICAidHlwIiA6ICJKV1QiLAogICJjdHkiIDogIkpXUyIsCiAgImtpZCIgOiAiNmQzOGI4ZTAwNjFiMGY5YTk0ZjEwNGJlNTdlNzdhYTE4IiwKICAiYjY0IiA6IHRydWUKfQ.eyJkZWJpdFR1cm5vdmVyIjp7ImFtb3VudCI6MCwiY3VycmVuY3lOYW1lIjoiUlVSIn19.ByCkNenTTtZQrnZplNOo9WyqPTxb6vFq0iExNHpuPCV6LUeXDFTe8tNBZCy1WvpdUCQBrKK447s3NJCC5hNLhA
|
||
```
|
||
|
||
Для тестовой проверки можно использовать [https://token.dev/](https://token.dev/).
|
||
|
||
### 3. Выполнить запрос
|
||
|
||
- Если добавить заголовки `Content-Type: application/json` + `X-Request-ChannelSecurity: NO` и отправить запрос, то подпись запроса не будет проверяться.
|
||
- Если добавить заголовки `Content-Type: application/jose` + `X-Request-ChannelSecurity: SIGNATURE` и отправить запрос, то подпись запроса будет проверяться.
|
||
- Если подпись валидна — запрос обрабатывается, если невалидна — Банк определяет запрос как неподлинный и возвращает ошибку.
|
||
|
||
Любые другие комбинации заголовков `Content-Type + X-Request-ChannelSecurity` приведут к ошибке.
|
||
|
||
---
|
||
|
||
## Проверка подписи JSON
|
||
|
||
### 1. Получить ответ
|
||
|
||
- Если добавить заголовки `Accept: application/json` + `X-Response-ChannelSecurity: NO`, то ответ не будет подписан.
|
||
- Если добавить заголовки `Accept: application/jose` + `X-Response-ChannelSecurity: SIGNATURE`, то полученный ответ (в том числе ошибки) будет подписан и представлен в виде компактной сериализации.
|
||
|
||
Любые другие комбинации заголовков `Accept + X-Response-ChannelSecurity` приведут к ошибке.
|
||
|
||
**Декодирование компактной сериализации JWS**
|
||
JWS формируется из трёх составляющих и представляет структуру вида:
|
||
|
||
1. Base64URL(Header);
|
||
2. Base64URL(Payload);
|
||
3. Base64URL(Signature).
|
||
|
||
**Пример JWS:**
|
||
|
||
| Закодированный | Раскодированный |
|
||
| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `ewogICJhbGciIDogIkdPU1QzNDEwXzIwMTJfMjU2IiwKICAidHlwIiA6ICJKV1QiLAogICJjdHkiIDogIkpXUyIsCiAgImtpZCIgOiAiNmQzOGI4ZTAwNjFiMGY5YTk0ZjEwNGJlNTdlNzdhYTE4IiwKICAiYjY0IiA6IHRydWUKfQ.eyJkZWJpdFR1cm5vdmVyIjp7ImFtb3VudCI6MCwiY3VycmVuY3lOYW1lIjoiUlVSIn19.ByCkNenTTtZQrnZplNOo9WyqPTxb6vFq0iExNHpuPCV6LUeXDFTe8tNBZCy1WvpdUCQBrKK447s3NJCC5hNLhA` | **header** `json { "alg": "GOST3410_2012_256", "typ": "JWT", "cty": "JWS", "kid": "6d38b8e0061b0f9a94f104be57e77aa18", "b64": true } ` **payload** `json { "debitTurnover": { "amount": 0, "currencyName": "RUR" } } ` **verify signature** `text HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), ) ` |
|
||
|
||
### 2. Проверить подпись ответа от Банка
|
||
|
||
Используйте открытый ключ сертификата Банка для проверки подписи. Для получения сертификата напишите на почту [alfa_api@alfabank.ru](mailto:alfa_api@alfabank.ru).
|
||
|
||
Проверьте подпись в соответствии с данными, указанными в Заголовке (Header). В поле `kid` заголовка JWS будет записан серийный номер сертификата Банка.
|
||
|
||
### 3. Обработать ответ в формате JSON
|
||
|
||
**Пример ответа:**
|
||
|
||
```json
|
||
{
|
||
"debitTurnover": {
|
||
"amount": 0,
|
||
"currencyName": "RUR"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
[← Подписание JSON RSA-сертификатом](/products/alfa-api/documentation/articles/signature-encryption/articles/signature/articles/json-rsa/json-rsa) | [Подписание XML RSA-сертификатом →](/products/alfa-api/documentation/articles/signature-encryption/articles/signature/articles/xml-rsa/xml-rsa)
|
||
|
||
]]>
|
||
</json_ghost_md>
|
||
<json_rsa_md>
|
||
<. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
|
||
|
||
> **Внимание**
|
||
> Для подписания сообщения необходимо предварительно выпустить сертификат в УЦ Альфа-Банка, используя сервис ["Электронная подпись"](/products/alfa-api/documentation/articles/signature/signature). Если Вы уже выпускали сертификат - повторно выпускать не нужно.
|
||
|
||
---
|
||
|
||
## Подписание JSON
|
||
|
||
### 1. Подготовить сообщение в формате JSON
|
||
|
||
**Пример сообщения**
|
||
|
||
```json
|
||
{
|
||
"sub": "1234567890",
|
||
"name": "John Doe",
|
||
"admin": true,
|
||
"iat": 1657882689,
|
||
"exp": 1657886289
|
||
}
|
||
```
|
||
|
||
### 2. Подписать запрос
|
||
|
||
Тело запроса сформировать алгоритмом **RS256** в виде компактной сериализации в соответствии с [JSON Web Signature](https://www.rfc-editor.org/rfc/rfc7515#section-3.1) и подписать тело запроса закрытым ключом сертификата, выпущенным в сервисе "Электронная подпись".
|
||
|
||
**Формат JWS**
|
||
`BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)`
|
||
|
||
**Структура тела запроса**
|
||
|
||
- **Заголовок (Header)**
|
||
- `"kid"`: "серийный номер сертификата"
|
||
- `"typ"`: "JWT"
|
||
- `"alg"`: "RS256"
|
||
- **JSON-документ (Payload)**
|
||
- **Подпись запроса (Signature)**
|
||
|
||
**Пример JWS**
|
||
|
||
```text
|
||
eyJhbGciOiJSUzI1NiIsImtpZCI6IjYxMDAwMzYzY2NiNzU5Y2I0NDg2MDc4NjVkMDAwMTAwMDM2M2NjIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTY1Nzg4MjY4OSwiZXhwIjoxNjU3ODg2Mjg5fQ.ApKNzZ9kLMtBY3LzReSHQ7_AyDnzocGo9GTQFRmxTiRS7Lj7a55Kr4ziwZAmmwloF1063JJMOaU0lS947q6_hSct9pxzPdZ9tTmpIDGnQL-ks0oB7zz9vUSUd3G00UZXSYnuhI9BBRXvmmTaue5Y2j5zVZofLdO2dqPWCnsQULyLn_vYf8PeABhnAQ29z1Bq42uxfRFTM35cF40Tp4VBSqXDI1vxfleLusQlOZM-5Sk7O3Vy4Sf-UB03RrRGSBerZjdoMRh7dgEyoYAXS6c4MejCm2vmXKqSd7pu2V2TxOM9UTchkCS16DL-RIJtnfMjznmznU5SoMCpncvs6gRNeQ
|
||
```
|
||
|
||
Для тестовой проверки можно использовать [https://token.dev/](https://token.dev/).
|
||
|
||
### 3. Выполнить запрос
|
||
|
||
- Если добавить заголовки `Content-Type: application/json` + `X-Request-ChannelSecurity: NO` и отправить запрос, то подпись запроса **не будет** проверяться.
|
||
- Если добавить заголовки `Content-Type: application/jose` + `X-Request-ChannelSecurity: SIGNATURE` и отправить запрос, то подпись запроса **будет** проверяться.
|
||
|
||
Если подпись валидна — запрос обрабатывается, если невалидна — Банк определяет запрос как неподлинный и возвращает ошибку. Любые другие комбинации заголовков `Content-Type + X-Request-ChannelSecurity` приведут к ошибке.
|
||
|
||
---
|
||
|
||
## Проверка подписи JSON
|
||
|
||
### 1. Получить ответ
|
||
|
||
- Если добавить заголовки `Accept: application/json` + `X-Response-ChannelSecurity: NO`, то ответ **не будет** подписан.
|
||
- Если добавить заголовки `Accept: application/jose` + `X-Response-ChannelSecurity: SIGNATURE`, то полученный ответ (в том числе ошибки) **будет подписан** и представлен в виде компактной сериализации.
|
||
|
||
Любые другие комбинации заголовков `Accept + X-Response-ChannelSecurity` приведут к ошибке.
|
||
|
||
**Декодирование компактной сериализации JWS**
|
||
JWS формируется из трёх составляющих:
|
||
|
||
- Base64URL(Header);
|
||
- Base64URL(Payload);
|
||
- Base64URL(Signature).
|
||
|
||
**Пример JWS**
|
||
|
||
| ЗАКОДИРОВАННЫЙ | РАСКОДИРОВАННЫЙ |
|
||
| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `eyJraWQiOiJhbGZhLXRlc3Qtand0IiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.`<br>`eyJkZWJpdFR1cm5vdmVyIjp7ImFtb3VudCI6MCwiY3VycmVuY3lOYW1lIjoiUlVSIn19.`<br>`Y1NqCkRjjtJ2GrVsW-a627g6ObfpEaKw-H92QVgVWqL9i7d1SHyaXVghF4ZNZAlrFasKySnKYZf2Ik8zVIlLN7hqeYxoeTdE2OLbiQdvPrD-JnI2Qzh0K32vcImwgGcpq2lt_QKx1f_YmaSRhH9O3xZePVcmFGCqhl_0prQSwcR4g-yuhidvspaF48QlUHcEaZ65Cr8hdyc6g9HPZDy7ipU-zCAZGgK0enxfWn4Osyqch8RRDIsfLG7OJ4wbYwYB22LYO5UaxX8Zy_R2jSnKlNghxQwSqJGxizMFhFhdCrATGTo-ysI-7OtfremD8YNj7z_iYciyYbtAgV0ZodEvMA` | **header**<br>`{"kid": "alfa-test-jwt", "typ": "JWT", "alg": "RS256"}`<br><br>**payload**<br>`{"debitTurnover": {"amount": 0, "currencyName": "RUR"}}`<br><br>**verify signature**<br>`RSASHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload))` |
|
||
|
||
### 2. Проверить подпись ответа от Банка
|
||
|
||
Используйте [открытый ключ](/assets/developers-portal.docs.alfa-api/articles/signature-encryption/articles/signature/articles/json-rsa/files/cert.cer) сертификата для проверки подписи.
|
||
|
||
Проверьте подпись в соответствии с данными, указанными в Заголовке (Header). В поле `kid` заголовка JWS будет записан серийный номер сертификата Банка.
|
||
|
||
### 3. Обработать ответ в формате JSON
|
||
|
||
**Пример ответа**
|
||
|
||
```json
|
||
{
|
||
"debitTurnover": {
|
||
"amount": 0,
|
||
"currencyName": "RUR"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
**← [Обновление сертификата](/products/alfa-api/documentation/articles/signature-encryption/articles/managing-certificates/articles/patch-certificates/patch-certificates)** | **[Подписание JSON ГОСТ-сертификатом](/products/alfa-api/documentation/articles/signature-encryption/articles/signature/articles/json-gost/json-gost) →**
|
||
|
||
]]>
|
||
</json_rsa_md>
|
||
</transport_signature>
|
||
</Транспортная_подпись_и_шифрование>
|
||
</payin_and_kyc>
|