Туризм · 2023–2026 ·Интеграция с госсистемой

Интеграция портала туроператора с ГИС «Электронная путевка»

Собрали отдельный сервис, через который заказы портала уходят в государственную систему учета путевок: своя очередь отправки, защищенный контур до государственного сервиса и перестроенные под его требования данные о туристах.

Обложка проекта Интеграция ГИС «Электронная путевка»

выпуск сервиса на прод
2024
рядом с порталом, а не внутри него
Отдельный сервис
период отправки накопленных заказов
30 минут
информационной системы для подключения
Аттестация
  • Задача

    Туроператор обязан передавать сведения о проданных путевках в государственную систему. Портал работает на давнем ядре, из которого подключиться к ней нельзя.

  • Что сделали

    Отдельный сервис с внутренней очередью отправки, защищенный контур до государственной системы и доработку портала под состав данных, которых система требует.

  • Чем закончилось

    Сервис выпущен на прод в 2024 году, заказы уходят сами; портал при этом остался на своем ядре и не переписывался.

С чем пришли

Заказчик — туроператор и экскурсионное бюро, чей портал мы ведем с 2014 года: многодневные туры, ежедневные экскурсии, кабинеты агентств и менеджеров. Интеграция с государственной системой — отдельная работа рядом с этим порталом.

Туроператор обязан передавать сведения о реализованных турпродуктах в государственную информационную систему. Для компании с потоком заказов ручная отправка — не вариант: это отдельная работа на каждую путевку и постоянный риск разойтись с фактическими данными.

Портал живет на давнем ядре, которое переписывать под эту задачу никто не собирался: оно работает, на нем висят продажи, кабинеты агентств и отчетность. Подключаться к государственной системе из него нельзя — ни по требованиям к среде, ни по возможностям платформы.

Ограничения

  • Останавливать работающий портал было нельзя: интеграция обязана встать рядом с ним, а не вместо него.
  • Подключение идет только через защищенный контур — со своим программным обеспечением, отдельным сервером-шлюзом и требованиями к разграничению доступа.
  • Часть сведений, которых требует система, портал раньше просто не собирал: их пришлось начать собирать, не сломав уже оформленные заказы.

Что сделали

  • Разобрали требования

    До разработки прошли состав данных путевки и туриста, требования к среде и к порядку подключения: что система принимает, в каком виде и что для этого нужно на стороне оператора.

  • Собрали отдельный сервис

    Интеграция вынесена из портала в собственный сервис на современном стеке: он принимает путевки во внутреннюю очередь, отправляет их в государственную систему и отдает порталу ее справочники.

  • Связали с порталом

    Заказы копятся в собственной очереди портала и уходят в сервис по расписанию — оформление при этом не ждет внешнюю систему.

  • Перестроили данные о туристах

    Состав сведений задан системой, и портал доучивался их собирать — не сломав тысячи уже оформленных заказов.

  • Подготовили контур

    Настроили защищенное соединение, сервер-шлюз и разграничение доступов — без этого информационную систему не аттестуют, а без аттестации не подключат.

Функциональные решения

Что изменилось в портале

  • ФИО тремя полями

    Фамилия, имя и отчество хранятся раздельно, а уже оформленные заказы переведены в новый вид скриптом, а не руками менеджеров.

  • Гражданство по справочнику

    У иностранного туриста страна выбирается подсказками из справочника государственной системы — произвольную строку ввести нельзя, иначе путевку не примут.

  • Документы по правилам тура

    Тип документа ограничен направлением: для зарубежного тура — только заграничный, со сроком действия дальше даты окончания поездки.

  • Проживание по туристам

    Услуги проживания настраиваются в датах тура и указываются индивидуально по каждому туристу в заказе.

  • Тип питания

    Еще один обязательный для системы признак путевки, которого на портале раньше не было.

Что делает сервис

  • Очередь отправки

    Путевки принимаются во внутреннюю очередь и уходят из нее: портал не ждет ответа государственной системы и не встает, если она недоступна.

  • Статус у каждого заказа

    К отправке, отправлено, ошибка — видно, что ушло, а что нет, без разбора журналов.

  • Повтор при ошибке

    Заказ, отмененный системой из-за ошибки, отправляется заново после исправления, а не теряется.

  • Письмо о сбое

    Об ошибках работы сервис сообщает почтой: интеграция без присмотра молча копит непереданные путевки.

  • Справочники по запросу

    Сервис запрашивает справочники государственной системы и отдает их порталу — тот не ходит во внешний контур сам.

Технические решения

  • Сервис рядом, а не внутри

    Главное решение проекта: интеграция не встроена в портал, а вынесена в отдельный сервис на своем стеке. Портал остался на давнем ядре и не переписывался, а требования государственной системы к среде выполняет сервис. Обновлять и чинить их можно порознь.

  • Очередь на стороне портала

    Портал не обращается к сервису в момент оформления. При создании и изменении заказа запись падает в собственную таблицу очереди со статусом «к отправке», а отдельный процесс раз в полчаса забирает накопленное и передает дальше. Покупатель не ждет внешнюю систему, а сбой в ней не мешает оформить заказ.

  • Справочники внутрь

    Значения справочников хранятся на портале локально и обновляются по расписанию. Поэтому подсказка в форме заказа берется из своей базы, а не из внешнего запроса на каждое нажатие клавиши.

  • Защищенный контур

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

  • Свой тип данных под чужой формат

    Самая объемная часть работы пришлась не на обмен, а на данные. Услуги проживания система требует структурой, которой на платформе просто нет, — пришлось завести собственный составной тип свойства: с редактированием в административной части, множественными значениями и хранением в общем виде. Уже оформленные заказы переведены в новый формат скриптом.

Сервис

PHPSymfonyОчередь сообщенийComposerGit

Портал

1С-БитриксPHPMySQL

Интеграции

ГИС «Электронная путевка»ViPNet PKI

После выпуска сервис прошел рефакторинг и с тех пор ведется вместе с порталом: состав путевки уточнялся не раз, добавлялись типы питания и документов, менялись правила отправки. Портал, ради которого все и затевалось, остался на своем ядре — интеграция ни разу не потребовала его трогать.

Расскажите о проекте

Новый продукт, развитие существующей системы или смена подрядчика — опишите задачу. Ответим, как можем подойти к ней и что потребуется для старта.

Андрей Медведев, основатель TeamProfi
Андрей Медведевоснователь TeamProfi

Помогаю разобраться в задаче, выбрать правильный подход и отвечаю за результат со стороны TeamProfi. Под объем задач подключаем специалистов, с которыми работаем не первый год.

Не любите формы? Напишите на sale@teamprofi.ru