Skip to content

Latest commit

 

History

History
93 lines (49 loc) · 9.67 KB

habr.md

File metadata and controls

93 lines (49 loc) · 9.67 KB

Упростите свою работу с Госуслугами, используя PyCades! В этой статье мы предложим простые шаги для автоматизации работы с заявлениями через API Госуслуг, устраним рутину с формами и сделаем проще взаимодействие с информационными системами. 🛠️🤖

Легкий Путь к Власти: Тестируем API Госуслуг с PyCades без головной боли

Работы с API Госуслуг с помощью PyCades

ЕСИА и ЕПГУ: автоматизация заявлений и результатов

На Хабре есть много статей о СМЭВ, но информации о работе с API Госуслуг через КриптоПро и ключи API недостаточно. Это кажется странным, учитывая, что КриптоПро предназначен для работы с ЭЦП и Госуслугами. В моей статье я расскажу, как использовать Python, PyCades - обертка для КриптоПро и ключи API для автоматизации процессов. Несмотря на наличие руководств по ЕСИА и ЕПГУ, автоматизация работы с ними через ключи API описана недостаточно подробно. Шаблон сервиса в моей статье позволяет протестировать все эндпоинты и услуги. Например, отправка документов на подпись в "Госключ", работа с миграционным и регистрационным учетом для гостиниц, предоставление информации о ходе исполнительного производства онлайн и многое другое. Запросы отличаются только форматом вложений и некоторыми полями идентификаторов.

  1. Подготовка окружения: инструменты и ключи

Чтобы работать с Docker Compose, нам нужно правильно подготовить наше окружение, а также, как минимум, подключиться к тестовой среде API Госуслуг. Давайте проделаем это шаг за шагом.

Подключение к тестовой среде

Для начала требуется зарегистрировать пользователя https://esia-portal1.test.gosuslugi.ru/login/ и получить тестовый сертификат по почте [email protected]. Необходимые формы для заявок можно найти здесь. Для разных случаев подключения варианты регламентов могут быть найдены здесь. Если есть готовая ЭЦП, то можно попробовать зайти на тестовый портал по ней и создать подтвержденную запись, и, при необходимости, организацию. При необходимости процедуру регистрацию тестовой учётной записи физического лица повторяем для всех сотрудников которые будут учавствовать в тестировании, а затем добавляем их в тестовую учетную запись организации. Насйтройте полномочий сотрудников в личном кабинете вместо XXXXXXXXXX будет ID тестовой организации https://esia-portal1.test.gosuslugi.ru/profile/org/XXXXXXXXXX/perms_grp там же выдаем доверенности для работы с ИС и API Key который в дальнешем будет использоваться в запросах.

Docker и Docker Compose: Пример образа и контейнера

Docker и Docker Compose – инструменты, которые буквально приносят сильно упрощают связь между разработкой и деплоем.

Начнем с Dockerfile – который упаковывает наш сервис в контейнер. В нем мы указываем все необходимое для работы: Python, PyCades и тд.

Чтобы вам было проще, я уже подготовил его для Вас:

git clone https://github.com/yellow444/epgu.git && cd epgu

Библиотека CryptoPro

Инструкции и необходимые файлы можно получить тут: CriptoPro

В частности, в этом проекте используется версия csp/50/12997rc2 linux-amd64_deb.tgz эти файлы можно получить как триал, причем после каждого запуска контейнера отсчет 90 дней пойдет по новой.

И версия PyCades взятая с pycades 0.1.44290

которая немного или даже скорее много новее, чем устанавливаемая через

pip install pycades

Примеры команд по работе с контейнерами ключей есть в описании к проекту.

Настройка контейнера ключей

Теперь, когда мы подготовили базу, настроим ключи. Файлы закрытого ключа обычно хранятся в папке формата XXX.000, сертификат cer, реже в другом формате. Если использовали для регистрации на тестовом портале неоткрепленную подпись - рутокен или аналог - не беда, есть инструкция.

Копируем сертификат и ключ в каталог со скачанным проектом, можно поверх some.cer и xxx.000 , либо с другими именами, но тогда потребуется поправить entrypoint.sh и docker-compose.yml

Docker Compose: сборка

Docker и Docker Compose – наши инструменты, которые помогут нам создать правильную среду для работы сервиса. Установим их, как настоящих помощников. Если они у Вас уже есть, можно пропустить этот шаг.

Итак, мы готовы объединить все ингредиенты – Python, PyCades, API Госуслуг, Docker и Docker Compose. После этого наше сервис будет готов к применению 🧙✨:

docker compose up -d

или

docker-compose up -d

кому как нравится 🤣 если вы понимаете о чем я

API Госуслуг - Простота и удобство

Почти вся работа с API Госуслуг, кроме имеющих возможность подключиться к СМЭВ, сводится к авторизации через ЕСИА - Единая система идентификации и аутентификации и обращению к четырем методам ЕПГУ - Единый портал государственных и муниципальных услуг Спецификация API ЕПГУ:

  1. Создание заявления

/api/gusmev/push

  1. Загрузка файла

/api/gusmev/push

  1. Загрузка файлов вложения

/api/gusmev/push/chunked

  1. Получение данных по заявлению

order/{{orderId}}?embed

Кроме того, для каждой из услуг имеется своя спецификация по заполнению запросов, но, в основном, все отличия в полях XML.

Следующим этапом будет тестирование API c помощью Postman, чтобы убедиться, что все работает как часы, для этого в проекте есть файл postman.json .

Также Вы можете воспользоваться инструкцией в проекте и развернуть Helm чарт.

Следующим шагом Вы можете, следуя регламентам, создать свой проект и довести его до продуктивной среды Госуслуг или начать активно использовать уже существующие сервисы.