IT Решения

BuyBusTicket

BuyBusTicket

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

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

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

Стек технологий

  • Laravel

    Бэкенд приложения. Реализует взаимодействие с БД, кэширование, формирование поисковой выдачи.

  • React

    Используется при отрисовке поисковой выдачи.

  • Websockets

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

Реализация и технические решения

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

Для генерации поисковой выдачи используется паттерн программирования Adapter. Для каждого перевозчика реализован API-клиент, который получает список рейсов от перевозчиков по входящим стандартизированным фильтрам. Далее все данные приводятся к единому формату, кэшируются и передаются на сайт через websocket'ы.

Генерация стандартизированных данных

Для генерации стандартизированных данных и работы с координатами используется метод конвертации адресов в координаты и детализированное описание (страна, регион, город, адрес) посредством системы геокодинга (Google Geocode). Таким образом мы получаем стандартизированную и самую полную базу данных всех стран, городов и адресов по всем направлениям, для которых осуществляются рейсы. Помимо прочего, так мы получаем одинаковые точки координат для остановок, называющихся по-разному у различных перевозчиков.

SEO-оптимизация

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

Была реализована система генерации slug'ов для каждого маршрута, остановки, рейса исходя из пунктов отправления, прибытия и кодов их стран. Для каждого уникального slug'а генерируется уникальное описание из группы ключевых фраз со вставкой уникальных для рейса данных вроде страны, города, адреса отправления и прибытия.


Туры по Неве

Туры по Неве

Neva.Boats - это агрегатор туров по рекам и каналам Санкт-Петербурга с полным циклом покупки билетов. На сайте есть удобная система фильтрации/поиска туров, расписание туров, описания причалов и теплоходов с расписаниями туров под каждый из них. Также на сайте имеется удобная система вопрос-ответ и статьи на темы, связанные с водным пространством Санкт-Петербурга.

Стек технологий

  • Laravel

    Бэкенд приложения. Реализует взаимодействие с БД, кэширование, формирование поисковой выдачи.

  • React

    Панель администрирования контента.

  • Websockets

    Сборщика пакетов для минимизации и оптимизации стилей и скриптов.

Реализация и технические решения

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

Для генерации поисковой выдачи используется паттерн программирования Adapter. Для каждого перевозчика реализован API-клиент, который получает список рейсов от перевозчиков по входящим стандартизированным фильтрам. Далее все данные приводятся к единому формату, кэшируются и передаются на сайт по запросу с сайта.

Полный цикл оплаты

В рамках полного цикла оплаты реализована система бронирования туров у перевозчика и подтверждения покупки после оплаты клиентом. Данные о купленном туре и оплате передаются в CRM систему, а для клиента генерируется билет в формате PDF и отправляется на указанную при оплате почту.

Виджет на сайты партнёров

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


Как внедрить свою базу отелей, типы номеров и типы размещений в U-ON.Travel

Кейс внедрения доработки по переносу базы отелей и их составляющих от ООО «Студия Интернет Решений» для клиента ООО «АКВАМАР» (Туроператор АКВА-Абаза).

Проблематика

В нашу компанию обратился клиент со следующей задачей: необходимо было перенести базу отелей, номеров, типов размещений в CRM U-ON из другой системы. Из сторонней CRM данную базу можно было выгрузить в виде таблиц в excel. Именно в таком виде данная база и была у заказчика. У клиента была коробочная версия CRM-системы. На первый взгляд, данная задача кажется довольно простой, казалось бы, взяли все отели, типы номеров, типы размещений и перенесли из одной CRM в другую. Однако все не так просто, как кажется. Во время предварительного исследования данного проекта, всплыли подводные камни:

  • В одной категории номера есть несколько типов размещений. Например: 2-х местный номер, 1-комнатный номер. У данного номера есть несколько типов размещений: взрослое и детское основное место, место для ребенка от 7 до 12 лет на доп. место, место для ребенка от 3 до 7 лет на доп. место. То есть получается, что на один номер может быть несколько типов размещений, а таких категорий номеров может быть огромное количество. Кроме того, у каждой категории номера есть свои типы размещения, то есть они никак не унифицированы. А стало быть, у каждого размещения своя стоимость.

  • Нет фиксированного понятия для категории “ребенок”. Обычно дети делятся на три подкатегории: младенцы — это дети от 0 до 2 лет, ребенок — это дети от 2 до 7 лет, подростки — это дети от от 7 до 14 лет.

    В данном случае под категорию ребенок попадают одновременно, как дети от 3 до 7 лет, так и дети от 7 до 12, так от 0 до 3 лет. Соответственно и стоимость размещения за каждого ребенка своя.

  • Стоимость каждого типа размещения в определенной категории номера зависит от какого-либо календарного периода.

Если добавить все типы размещения в CRM U-ON.Travel, то в конечном итоге получится каша из типов размещений, что будет крайне неудобно конечному пользователю.

Почти все вышеописанные трудности упираются в отсутствие того или иного функционала в U-ON.Travel.

Решение

Три вышеперечисленных проблемы привели к тому, что мы создали внешний сервис-проводник между коробочной версией сторонней CRM и U-ON.Travel.

По сути мы сделали свой собственный поисковик отелей, основанный на таблицах из сторонней CRM, предварительно загруженный в нашу базу данных через google sheet connector.

В чем его особенности?

  • Продуманная логика взаимоисключений;

    Если мы выбираем город “Мессери”, то у нас будут отображаться только те отели, которые находятся в данном городе. Если мы выбираем отель “Дача Горбачева”, то у нас будут отображаться в нем только те типы комнат, которые есть только в этом отеле, а не все остальные. Такая же логика работает и с типами размещений, после выбора отеля, отображаются типы размещения, которые соответствуют тому или иному отелю.

  • Подробная детализация по стоимости тура;

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

  • Возможность добавить в заявку выбранное бронирование;

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

  • Добавление результата в CRM-систему U-ON.Travel в один клик;

Техническая часть

Данное приложение реализовано на языке PHP с использованием JS (в основном асинхронные запросы для обновления данных и поиска без перезагрузки страницы).

Верстка выполнена с использованием Bootstrap и реализована максимально просто — каждый блок функционален.

К проекту привязаны два канала в Телеграмм:

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

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

Если вы клиенты U-ON.Travel и вам необходимы сторонние доработки с системой, мы всегда рады помочь.

Автор кейса: Михаил Прохоров, ООО «Студия Интернет Решений», г. Санкт-Петербург.


Как мы упростили жизнь клиенту — кейс компании-партнера “Студия Интернет решений”

В октябре 2021 года к нам обратился туроператор, представляющий компанию Активный сезон. Компания занимается организацией туров на горнолыжные курорты по всей России под ключ (трансфер, питание, проживание, фотосессии, мероприятия).

Задача

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

Результат

Нашими силами на сайте была создана возможность самостоятельного бронирования и оплаты с отображением количества оставшихся мест в режиме реального времени. Бронирование автоматически передается в CRM-систему U-ON.Travel, создавая заявку со всеми указанными туристом данными, включая выбор конкретного тура. Это позволило не терять потенциальных клиентов и структурировать поток трафика в CRM.

Что для этого сделали

Для автоматизации процесса нами было предложено следующее решение:

Возможность онлайн-бронирования на сайте с помощью интеграции в U-ON.Travel.

Благодаря этому процесс покупки тура сейчас выглядит так:

  • Клиент попадает на сайт, выбирает понравившийся тур.

    При нажатии на кнопку “Забронировать”, открывается окно с кратким описанием тура, полями для номера телефона, e-mail и количества участников тура:

  • Есть два варианта развития событий: “отправить заявку менеджеру” и “забронировать самостоятельно”.

    Главное, что мы внедрили: при нажатии на самостоятельное бронирование открывается окно с вводом всех необходимых данных в поля (фио,дата, телефон, e-mail, паспорт для каждого туриста).

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

  • При нажатии на кнопку “перейти к оплате” открывается окно с информацией о заказе (сумма и номер заказа, ФИО, номер, e-mail), внизу окна размещена кнопка “оплатить”:

  • При нажатии на кнопку оплаты покупателя перенаправляет на Тинькофф:

После оплаты туристу отправляется сообщение на почту, что ваш заказ оплачен и приходит чек.

С точки зрения фискализации, оплата происходит правильно. Последовательность выглядит таким образом: U-ON.Travel связан с интернет-эквайрингом Тинькофф, Тинькофф связан с кассой Атол-онлайн, Атол онлайн связан с кассой ОФД Taxcom. Для Заказчика процесс полностью автоматизирован.

После оплаты меняется количество свободных мест в таблице на странице с туром.

В U-ON.Travel есть опция “Пакеты услуг” в разделе Я-оператор. Создается пакет услуг, подгружается на сайт с помощью простой вставки ссылки из CRM-системы U-ON.Travel и, в случае приобретения, количество доступных мест для бронирования уменьшается.

Вся информация, заполненная клиентом, формируется в Заявку в U-ON.Travel и сохраняется, что само по себе замечательно, так как вся информация о лиде у нас не теряется, а фиксируется в CRM.

В итоге мы получили готовый продукт, Заказчик высыпается, клиенты покупают туры, все счастливы!

Автор кейса: Михаил Прохоров, Студия Интернет решений, г. Санкт-Петербург.