Мобильное приложение для транспорта: расписание и оплата

Расписание, маршруты и оплата в одном приложении — пассажиры уходят туда, где всё работает без звонков и уточнений. Мы разрабатываем мобильное приложение для транспорта под ключ: от данных о рейсах до приёма оплаты и уведомлений. Запуск с сопровождением: время на рутинные запросы сокращается, доля повторных поездок растёт.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Мобильное приложение для транспорта: расписание и оплата
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

Разработка мобильного приложения для транспорта: узкие места

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

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

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

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

Что меняется после внедрения: эффект в цифрах и сроках

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

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

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

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

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

Способы реализации: готовое решение, платформа, заказная сборка

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

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

Сравнение подходов

Вариант Когда подходит Ограничения
Готовое отраслевое решение Типовые маршруты, один тариф, расписание из существующей системы Нестандартную логику приходится обходить, доработки зависят от поставщика
Платформенная сборка Свои тарифы, зоны, льготы, но без уникальной логики перевозки Границы настройки конечны, глубокая переделка ядра недоступна
Заказная разработка Логика перевозки — конкурентное преимущество: динамические тарифы, мультимодальность, свои правила Дольше первая версия, поддержка силами своей команды

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

Этапы работы: от аудита данных до передачи в поддержку

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

  1. Аудит данных перевозчика. Сводим расписание, остановки, тарифы и льготы в одну модель, отмечаем, где данные опаздывают, дублируются или приходят только от диспетчера. На выходе — карта источников с частотой обновления и ответственным за каждый.
  2. Схема интеграций. Решаем, что приложение забирает напрямую, а что — через промежуточный слой с локальной копией данных. Слой закрывает недоступность системы перевозчика: расписание и статусы рейсов остаются в приложении, даже когда внешний сервис молчит.
  3. Настройка оплаты. Разводим сценарии: разовый билет, проездной, льготный проезд, возврат при отмене рейса. Отдельно описываем обрыв связи в момент списания и то, как операция доводится до конца при следующем запуске.
  4. Проверка под нагрузкой. Прогоняем утренний пик и час массовых отмен: одновременные обновления расписания, покупки на одном маршруте, всплеск обращений в поддержку.
  5. Пилот на одном маршруте или парке. Сверяем данные приложения с фактическим выходом машин и ловим расхождения до релиза на весь город.
  6. Передача в поддержку. Конфигурации, схемы интеграций, регламент обновления расписания, порядок отката и эскалации, дежурный доступ к системам наблюдения за сервисом.

Что передаём на руки: схемы, доступы и регламенты

Передача проекта — это не архив с исходниками, а пакет, по которому ваша команда или другой подрядчик выпускает релиз без нас. Состав фиксируем в чек-листе приёмки: по каждому пункту на итоговой встрече запускаем демонстрацию на чистом окружении, а не показываем слайды. Ниже — что именно остаётся у заказчика.

  • Схемы интеграций — как приложение обменивается данными с системой расписания (включая формат GTFS), платёжным шлюзом и валидаторами: последовательность вызовов, очереди, повтор при сбое, ограничения по частоте запросов.
  • Описание моделей данных — словарь сущностей маршрут, рейс, остановка, поездка, платёж, их связи, правила хранения истории и порядок миграций при изменении структуры.
  • Политики доступа и роли — кто и что может в панели администратора и в хранилищах, где лежат ключи, срок их ротации, разделение сред разработки, тестирования и промышленной.
  • Регламент обновлений — порядок выпуска версии: какие проверки обязательны, как формируется сборка, как публикуется в магазинах приложений, что происходит при откате на предыдущую.
  • Регламент дежурства и реакции — уровни сбоев, время реакции на каждый, каналы оповещения, кто принимает решение об откате и по каким признакам.
  • Документация приложения — архитектурная схема, инструкция по локальному запуску, перечень переменных окружения, известные ограничения и технический долг с приоритетами.
  • Инструкция по сопровождению — как обновлять расписание, добавлять маршруты, менять тексты и тарифные правила без выпуска новой версии приложения.

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

Разбор внедрения: расписание и оплата в сервисе транспорта

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

Что было до переработки

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

Что изменили и что получилось

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

  • расхождение расписания: 18% обращений → 3%
  • зависшие платежи: 6% операций → 0,4%
  • срок закрытия спорной оплаты: сутки → минуты
  • нагрузка на первую линию поддержки: −42%

Метрики подтверждены двумя источниками: отчётом по нагрузке на поддержку Оператора городских перевозок и техническим аудитом интегратора платёжного шлюза.

Что делать, если расписание и оплата уже в другом сервисе?

Если расписание и оплата уже живут в другом сервисе, переносить нужно не «приложение», а весь контур: сборки и подписи, учётные записи в магазинах, платёжный шлюз, потоки данных о маршрутах. Начинаем с инвентаризации: что за что отвечает, где ключи и у кого доступы. Без этого шага миграция превращается в работу вслепую.

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

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

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

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

Технические сомнения: офлайн, нагрузка, обновления

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

Что происходит с оплатой при нестабильной связи?

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

Выдержит ли приложение резкий рост числа поездок?

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

Можно ли обновить тарифы без выпуска новой версии?

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

Обсудим задачу: что нужно для старта работ

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

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

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

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714