Skip to content

s-sokolko/smev3_adapter_service

Repository files navigation

smev3_adapter_service

Web-сервис на python3 для работы с адаптером СМЭВ3 по HTTP

Назначение

Данный проект представляет собой web-service на Python3 для работы с адаптером СМЭВ3. Сервис предоставляет HTTP REST API для отправки запросов СМЭВ3, фонового опроса адаптера СМЭВ3 с целью получения ответов и возврата ответов СМЭВ3 по HTTP REST API.

Архитектура системы

smev3_adapter_service использует Mongo и Sanic Архитектура

Примеры запросов и поддерживаемые маршруты

Тело запроса и ответа представляет собой JSON, полностью аналогичный по структуре XML того запроса, который передаётся. Для авторизации всегда нужен заголовок HTTP X-Auth-Token. Для отправки запроса в СМЭВ используется URL /schedule_query/<тип_запроса>/

Примеры отправки запроса для получения выписок ЕГРЮЛ и ЕГРИП

POST http://localhost:9003/schedule_query/FNSVipUL/
{
"ЗапросЮЛ": {
"ОГРН": "1027700070518"
},
"ИдДок": "3"
}
http://localhost:9003/schedule_query/FNSVipIP/
{
"ЗапросИП": {
"ОГРНИП": "315723200006533"
},
"ИдДок": "4"
}

Для получения ответов используется URL /get_document/<тип_запроса>/<идентификатор_запроса>

Примеры получения ответа для получения выписок ЕГРЮЛ и ЕГРИП:

http://localhost:9003/get_document/FNSVipUL/1027700070518
http://localhost:9003/get_document/FNSVipIP/315723200006533

Допустимые типы запросов и идентификаторы для каждого типа запросов определяются настройками

Настройки приложения

MONGO_URL - адрес для доступа к mongo
ADAPTER_SETTINGS - словарь с настройками адаптера. Содержит параметры:

  • url - адрес WSDL адаптера СМЭВ 3 (например, http://192.168.1.1:7575/ws?wsdl)
  • mnemonic - мнемоника ИС в адаптере СМЭВ 3
  • test_mode - boolean-параметр тестового режима. Если True, в XML будет подставлен соответствующий элемент для маркирования тестового режима. В производственном режиме всегда False

HOST - IP-адрес, на котором будет выполняться bind (например, '0.0.0.0')
PORT - Порт прослушивания сервиса (в примерах 9003)
API_KEY - Ключ для авторизации. Должен передаваться в заголовке, определённом в API_KEY_HEADER
API_KEY_HEADER - имя заголовка с ключом ('X-Auth-Token')
RESPONSE_CHECK_TIMEOUT - период проверки ответов от адаптера СМЭВ 3 в секундах DOCUMENT_IDENTIFIERS - словарь идентификаторов документов для получения ответов СМЭВ 3. Ключи - типы документов (из URL), значения - разделённые точкой иерархические пути к атрибуту в ответе (см. формат в документации СМЭВ 3). Например, параметры ниже определяют, что для ESIARegister идентификатором будет идентификатор запрса СМЭВ 3, а для получения выписок - ОГРН и ОГРНИП соответственно.

    DOCUMENT_IDENTIFIERS = {
        'FNSVipUL': 'СвЮЛ.ОГРН',
        'FNSVipIP': 'СвИП.ОГРНИП',
        'ESIARegister': 'request_id',
        'ESIARegisterCertificate': 'request_id',
    }

Кроме того, в папке xsd содержатся типы данных запросов и ответов СМЭВ. Каждая подпапка называется по ID типа данных с технологического портала СМЭВ3 и содержит распакованный zip-файл формата данных, скачанный с технологического портала СМЭВ 3. За счёт добавления новых типов поддерживается хоршая расширяемость проекта. После добавления типа нужно занести соответствующую настройку в словарь DOCUMENT_IDENTIFIERS.

Запуск приложения

Для запуска нужно отредактировать файл settings.py в корне проекта, а затем выполнить make run

Авторские права и лицензия

Программное обеспечение данного репозитория лицензируется по лицензии GNU GPL v3. Автором является Станислав Соколко. По всем вопросам обращаться в официальную группу поддержки https://vk.com/topic-164668038_40518373. Сайт разработчика ит-решения.рф

About

Web-сервис на python3 для работы с адаптером СМЭВ3 по HTTP

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published