1 ЭТАП

Контур: TEST API ФНС

N

Наименование

Контур

N шага BPMN

Шаги

Ожидаемый успешный результат

Неуспешный результат

Комментарий

Авторизация в API ФНС

ФНС

1. Получить токен авторизации

Пришел ответ в формате JSON с кодом "200 ОК" и токеном авторизации:

Вызвать метод getAuthToken(), отправив запрос GET /rs/auth/token"

{

"status": "OK",

"expires_in": 1800000,

"type": "AuthToken",

"token": <Токен авторизации>

}

<expires_in> - время в миллисекундах, через которое истечет

срок действия токена. Например, 1800000 мс = 30 минут.

<type> - Тип токена.

2. Сохранить полученный токен авторизации

Токен сохранен

3. Декодировать токен из кодировки BASE64

Токен декодирован

4. Подписать декодированный токен в формате CAdES-BES (формат PKCS#7)

Декодированный токен подписан

1

-

5. Закодировать подпись в кодировке BASE64

Подпись закодирована в BASE64

6. Выполнить авторизацию пользователя по токену и его подписи

Пришел ответ в формате JSON с кодом "200 ОК" и токеном авторизации:

Пришел ответ с кодом, отличным от 200

Свидетельствует об ошибке авторизации

Вызвать метод signin(), отправив запрос POST /rs/auth/signin

{

"STATUS": "OK",

"expires_in": 86400000,

"type": "RiToken",

"token": <Токен авторизации>

}

<expires_in> - время в миллисекундах, через которое истечет

срок действия токена. Например, 86400000 мс = 24 часа.

<type> - Тип токена.

В параметрах запроса передать:

- токен авторизации, полученный на шаге 1

- подпись в формате BASE64, полученную на шаге 4

Тип передаваемых данных: text/xml

7. Сохранить полученный токен авторизации

Токен сохранен

После успешной авторизации все методы сервиса необходимо вызывать с передачей токена авторизации в заголовке ("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

2

Запросить список заявок на открытие счета

ФНС

8

1. Получить список заявок на открытие счета

Пришел ответ в формате JSON со статусом "200 ОК" и списком строк - идентификаторов

транспортных контейнеров:

В ответе придут только те идентификаторы транспортных контейнеров, которые имеют отношение к конкретному банку.

ФНС определяет это по токену авторизации. В случае, если заявок в банк нет, список идентификаторов будет пустой - "ACC_LIST": []

Вызвать метод getAccList(), отправив запрос GET /rs/acc

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

"STATUS": "OK",

"ACC_LIST": [

<Идентификаторфайла>,

...

]

}

2. Сохранить идентификаторы транспортных контейнеров

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

3

Получить контейнер с заявкой на открытие счета

ФНС

9

1. Загрузить с сервера файл с заявкой на открытие счета

Пришел ответ с кодом "200 ОК" и файлом транспортного контейнера в формате ZIP-архива, который содержит:

- свидетельство о регистрации бизнеса

- универсальная форма на открытие счета

- подписи sig.

Пришел ответ с кодом, отличным от 200

Свидетельствует об ошибке загрузки

Вызвать метод downloadAcc(), отправив запрос GET /rs/acc/{id}

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

2. Сохранить полученные транспортные контейнеры

Полученные транспортные контейнеры сохранены

3. Передать в ФНС статус о принятии заявки в работу

Пришел ответ с кодом "200 ОК"

Вызвать метод setAccStatus(), отправив запрос POST /rs/acc/{id},

где {id} - идентификатор транспортного контейнера

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

В теле запроса передать:

- stateCode= 10

- state = "Заявка принята в банке"

Распаковать контейнер, полученный от ФНС

Банк

1. Распаковать контейнер, сохраненный ранее

Контейнер распакован

Альтернативный сценарий:

При попытке распаковать контейнер появляется ошибка "файл поврежден"

Порядок действий:

1. Направить уведомление о неоткрытии счета

Вызвать метод setAccStatus(), отправив запрос POST /rs/acc/{id},

где {id} - идентификатор транспортного контейнера

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

В теле запроса передать:

- stateCode= 12

- state = "ошибка проверки УКЭП заявления об открытии счета, требуется повторное подписание"

4

10

2. Проверить комплектность контейнера

Содержимое контейнера соответствует перечню:

- свидетельство о регистрации бизнеса

- универсальная форма на открытие счета

- подписи sig.

Альтернативный сценарий:

Содержимое контейнера не соответствует требованию для открытия счета.

Порядок действий:

1. Направить уведомление о неоткрытии счета

Вызвать метод setAccStatus(), отправив запрос POST /rs/acc/{id},

где {id} - идентификатор транспортного контейнера

Комплект ИП:

- P21001

- Заявление USN (или иной формы налогообложения)

Комплект ЮЛ:

- P11001

- Заявление по форме N 26.2-1 (или иной формы налогообложения)

- Учредительный документ юридического лица

- Решение о создании ЮЛ

- Устав

- Иные документы

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

В теле запроса передать:

- stateCode= 30

- state = "Счет не может быть открыт"

5

Внутренние проверки ФЛ (ИП/ООО) банком

Банк

11

Направить данные клиента в систему банка по ИНН

Данные направлены, API банка вернул ответ с кодом "200 ОК"

Альтернативный сценарий:

Заявитель не прошел проверки банка.

Если клиент в банке не найден, то система создает нового клиента и идентифицирует его

Порядок действий:

1. Направить уведомление о неоткрытии счета

Вызвать метод setAccStatus(), отправив запрос POST /rs/acc/{id},

где {id} - идентификатор транспортного контейнера

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

В теле запроса передать:

- stateCode= 30

- state = "Счет не может быть открыт"

2. Направить уведомление для клиента о невозможности открыть счет

6

Проверка подписи

Банк

11

Проверить файл подписи

Подпись проверена

Альтернативный сценарий:

Подпись проверена и не валидна.

Порядок действий:

1. Направить уведомление о неоткрытии счета

Вызвать метод setAccStatus(), отправив запрос POST /rs/acc/{id},

где {id} - идентификатор транспортного контейнера

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

В теле запроса передать:

- stateCode= 12

- state = "ошибка проверки УКЭП заявления об открытие счета, требуется повторное подписание"

7

Определить клиент/не клиент банка

Банк

11

Получить результат по статусу заявителя

Клиент идентифицирован

Альтернативный сценарий 1:

Клиент не идентифицирован в банке

Порядок действий описан в шаге N 8

Альтернативный сценарий 2:

Банковский сервис недоступен

8

Удаленная идентификация по ЕБС + ЕСИА, если не клиент банка ранее

Банк

12

1. Передать в ФНС статус о необходимости дополнительной идентификации клиента

Пришел ответ с кодом "200 ОК"

Альтернативный сценарий 1:

Клиент не прошел идентификацию в банке

Если клиент ранее не был идентифицирован Банком, ему понадобится еще раз пройти идентификацию ЕБС в Банке.

Вызвать метод setAccStatus(), отправив запрос POST /rs/acc/{id},

где {id} - идентификатор транспортного контейнера

Порядок действий:

1. Направить в ФНС статус о необходимости дополнительной идентификации клиента

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

2. По истечении 60 дней с момента регистрации бизнеса заявка уходит в архив

3. Уведомить клиента о невозможности открыть по данной заявке счет

В теле запроса передать:

- stateCode= 11

- state = "Требуются дополнительные действия по идентификации клиента"

2. Направить уведомление клиенту о необходимости идентификации клиента в банке и ссылку на прохождение идентификации

9

Уведомление об открытии счета

Банк/ФНС

15

1. Передать в ФНС статус об успешном открытии счета

Пришел ответ с кодом "200 ОК"

Вызвать метод setAccStatus(), отправив запрос POST /rs/acc/{id},

где {id} - идентификатор транспортного контейнера

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

В теле запроса передать:

- stateCode= 20

- state = "Счет открыт"

10

Уведомление о неоткрытии счета

Банк/ФНС

12.2

1. Передать в ФНС статус о неуспешном открытии счета

Пришел ответ с кодом "200 ОК"

Вызвать метод setAccStatus(), отправив запрос POST /rs/acc/{id},

где {id} - идентификатор транспортного контейнера

В заголовке запроса указать токен авторизации:

("Authorization: RiToken <Токен, полученный в методе /rs/auth/signin>")

В теле запроса передать:

- stateCode= 30

- state = "Счет не может быть открыт"