Разработка мобильного приложения для ж/д билетов

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

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

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

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

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

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

Этапы разработки

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Разработка мобильного приложения для ж/д билетов

Приложение для продажи железнодорожных билетов требует интеграции с API перевозчика — в случае России это ОАО РЖД через ИС «Экспресс-3» или через посреднические платформы (Tutu.ru API, UFS, Ticketcloud). Прямой доступ к Экспресс-3 доступен только авторизованным агентам, поэтому большинство независимых приложений идёт через агрегаторов.

Особенности интеграции с ж/д API

Поиск маршрутов в Экспресс-3 возвращает поезда со всеми вагонами, типами мест и наличием. Ответ тяжёлый — до 500 Кб XML на популярных направлениях типа Москва–Санкт-Петербург. Десериализация на главном потоке — гарантированное ANR на Android или зависание на iOS. Парсим в background queue: DispatchQueue.global(qos: .userInitiated) на iOS, Dispatchers.IO на Android.

Выбор места в вагоне — интерактивная схема, аналогичная авиа, но с купе, плацкартой и СВ. Каждая схема разная; данные о раскладке вагона приходят из API в виде массива мест с координатами. Рендерим через Canvas — кастомный компонент с поддержкой zoneSelectmode (нижняя/верхняя полка для плацкарты).

// Фильтрация вагонов по типу
data class CarriageFilter(
    val type: CarriageType, // PLATZKART, COUPE, SV, SITTING
    val onlyLowerBerths: Boolean = false,
    val withBedding: Boolean = true
)

// Composable для выбора типа вагона
@Composable
fun CarriageTypeSelector(
    available: List<CarriageType>,
    selected: CarriageType,
    onSelect: (CarriageType) -> Unit
) {
    LazyRow(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
        items(available) { type ->
            FilterChip(
                selected = type == selected,
                onClick = { onSelect(type) },
                label = { Text(type.localizedName()) }
            )
        }
    }
}

Электронный билет и офлайн-доступ

После оплаты пользователь получает маршрутную квитанцию в PDF. Контролёр РЖД принимает QR-код — его нужно хранить локально, доступным без интернета. На iOS — WKWebView с загруженным локально PDF, или нативная отрисовка через PDFKit. На Android — PdfRenderer из android.graphics.pdf.

Push-уведомления через FCM/APNs: изменение расписания, задержка поезда (данные через API статуса поезда РЖД), напоминание за 24 часа до отправления.

Оплата и возврат

СБП — предпочтительный вариант для большинства пользователей: мгновенно, без комиссии для физлиц. ЮKassa или ПСБ (Промсвязьбанк, официальный эквайер РЖД). Apple Pay через PKPaymentRequest и Google Pay через PaymentsClient — обязательны для высокой конверсии.

Возврат билета — отдельный API-вызов с расчётом штрафа по тарифу: до отправления более 8 часов — полный возврат за вычетом сервисного сбора, менее 8 часов — 50% стоимости. Логику расчёта штрафа не реализуем на клиенте — только показываем данные от сервера. Некоторые агрегаторы (UFS, Tutu) возвращают сумму к возврату прямо в ответе на запрос отмены.

Поиск и история поездок

Поиск по маршруту: поле откуда-куда с автодополнением — на Tutu API это GET /v1/cities?q=моск. Справочник станций загружается при первом запуске и кэшируется локально (около 2500 станций РЖД).

Типичный поиск возвращает 10–30 поездов с разными временами отправления. Сортировка: по времени отправления, по времени в пути, по цене (нижнего класса). Фильтрация: тип вагона, только с нижними полками, время отправления (день/ночь).

История поездок в «Моих билетах»: активные (предстоящие), архив. Для каждой поездки — кнопка «Вернуть билет» с расчётом суммы возврата и кнопка «Показать QR» для офлайн-доступа.

Динамические цены и «лотерея» мест

В ИС «Экспресс-3» действует динамическое ценообразование: цена нижней полки в купе растёт по мере уменьшения свободных мест и приближения даты отправления. При поиске «Москва–Адлер» за месяц цена купе может быть 3500 руб., за неделю — 5800 руб., за день — 7200 руб. Показываем эту информацию в карточке поезда.

Сроки

6–8 недель для приложения с поиском, выбором мест, оплатой, возвратом и историей поездок через агрегаторский API. Стоимость рассчитывается индивидуально после анализа требований.