Користувач відкриває додаток, вводить станцію відправлення — і бачить ціну квитка на завтра. Клік — схема вагона з зайнятими місцями. Ще клік — квиток у PDF з QR-кодом, який працює без інтернету. Так виглядає мобільний додаток для залізничних квитків, який ми розробляємо. За плечима 30+ проєктів та досвід роботи з транспортними API: Tutu.ru, УФС, Експрес-3. Розповідаю, як це зробити правильно.
Які проблеми вирішуємо
Інтеграція з монолітними API. Експрес-3 — legacy-система від РЖД з SOAP/XML, гальмує при пікових навантаженнях. Агрегатори на кшталт Tutu.ru дають JSON за 200 мс, але вимагають кешування та обробки помилок. Ми будуємо прошарок: ретраї з exponential backoff, фолбек на UFS при таймаутах.
Вибір місця у вагоні. Купе, плацкарт, СВ — у кожного своє розкладання. Дані приходять як масив місць з координатами. Десеріалізація важких відповідей (до 500 КБ) — вузьке місце. На iOS використовуємо DispatchQueue.global(qos: .userInitiated), на Android — Dispatchers.IO.
Офлайн-доступ до квитків. Після оплати QR-код маршрутної квитанції зберігається локально. На iOS — PDFKit, на Android — PdfRenderer. Push-сповіщення через FCM/APNs при зміні розкладу.
Як ми розробляємо додаток для квитків на потяг
Процес — від аналітики до деплою. Використовуємо сучасний стек: Swift 5.9 + SwiftUI (iOS) / Kotlin + Jetpack Compose (Android) або Flutter 3.x для крос-платформи.
- Аналітика та прототип. Визначаємо API (Tutu.ru / УФС / Ticketcloud), малюємо екрани. Фіксуємо логіку повернень та динаміку цін.
- Проектування. Розробляємо схеми даних, роутинг, обробку помилок. Налаштовуємо code signing та provisioning profile.
- Реалізація. Пишемо модулі: пошук, вибір місць, оплата (StoreKit 2 / Google Billing 6), зберігання квитків. Вбудовуємо deep linking (Universal Links / App Links) для переходу з пушів.
- Тестування. TestFlight / Firebase App Distribution. Перевіряємо сценарії: перервана оплата, повернення, слабкий сигнал.
- Деплой. Публікуємо в App Store та Google Play. Дотримуємось App Store Review Guidelines та Google Play Policy.
Приклад з практики: для одного клієнта інтеграція з Tutu.ru API зайняла 2 тижні. Проблема — їхній end‑point не підтримував batch‑запити. Довелося розпаралелити виклики через Combine (iOS) та coroutines (Android). Час відповіді для 10 станцій — 800 мс замість 2 секунд.
Чому офлайн-доступ до квитків критичний?
Додаток має працювати в метро, тунелях та зонах з поганим покриттям. QR-код маршрутної квитанції генерується на сервері, але зберігається локально в PDF. Для рендеру використовуємо PDFKit на iOS та PdfRenderer на Android. Це гарантує, що провідник вважає квиток навіть при вимкненому інтернеті. Додатково підписуємо код за допомогою push-сповіщень: при зміні розкладу FCM/APNs доставляють короткий сигнал, і додаток оновлює закешовані дані при наступному підключенні.
Порівняння API агрегаторів
| API | Формат | Швидкість | Повернення | Динамічні ціни |
|---|---|---|---|---|
| Tutu.ru | JSON | ~200 мс | Немає прямої підтримки | Так |
| УФС | XML | ~400 мс | Так | Так |
| Ticketcloud | JSON | ~300 мс | Так, комісія 2% | Ні |
Tutu.ru швидше у 2 рази — це критично для пошуку з 10+ запитами.
Які способи оплати підтримуються?
СБП (миттєво, без комісії), ЮKassa, ПСБ. Apple Pay через PKPaymentRequest, Google Pay через PaymentsClient. Без них конверсія падає на 20%. Вибір платіжного провайдера впливає на швидкість підтвердження: СБП дає гроші на рахунок за секунди, тоді як карткові транзакції можуть займати до 3 хвилин.
Порівняння способів оплати
| Спосіб | Комісія для користувача | Швидкість | Особливості |
|---|---|---|---|
| СБП | 0% | Миттєво | Немає ліміту на суму |
| ЮKassa | 0-2% | До 1 хвилини | Підтримує карти та СБП |
| Apple Pay | 0% | 1-2 секунди | Потрібен Face ID / Touch ID |
| Google Pay | 0% | 1-2 секунди | Потрібна біометрія |
Як працюють динамічні ціни?
В Експрес-3 ціна зростає зі зменшенням місць. Показуємо динаміку в картці поїзда: якщо місць менше певного порогу, підсвічуємо ціну. Для точного розрахунку використовуємо API Tutu.ru або УФС з кешуванням на 5 хвилин.
А повернення квитків — як?
Повернення — окремий API-виклик. Штраф: до 8 годин до відправлення — повне повернення за вирахуванням збору, менше 8 годин — 50% вартості. Логіку розрахунку не реалізуємо на клієнті.
Що входить у розробку під ключ
- Документація з інтеграції з обраним API
- Вихідний код додатку (iOS/Android)
- Збірка та публікація в App Store та Google Play
- Тестовий доступ через TestFlight/Firebase
- Навчання команди замовника (2 години онлайн)
- Підтримка 1 місяць після релізу
Чому обирають нас
Досвід роботи з транспортними API більше 5 років, виконано 30+ проєктів. Сертифіковані iOS та Android розробники. Гарантуємо дотримання App Store Review Guidelines та Google Play Policy.
Строки та вартість
6–8 тижнів на додаток з пошуком, вибором місць, оплатою, поверненням та історією поїздок через агрегаторський API. У стислі строки можна вкластися за 5 тижнів, якщо API вже обрано. Вартість розраховується індивідуально. Отримайте консультацію — оцінимо ваш проєкт за 1 день. Зв'яжіться з нами, щоб обговорити деталі.







