Розробка мобільного застосунку для ресторану з QR-оплатою

Ми — команда з 5+ років досвіду, реалізували 20+ проєктів для ресторанів. Ми часто стикаємося з тим, що QR-оплата в ресторані на перший погляд виглядає просто: відсканував — заплатив. На ділі інтеграція ламається на стику кількох шарів — генерація QR з боку касової системи, синхронізація статусу опл

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка мобільного застосунку для ресторану з QR-оплатою
Простий
від 4 годин до 2 днів

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

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    599

Ми — команда з 5+ років досвіду, реалізували 20+ проєктів для ресторанів. Ми часто стикаємося з тим, що QR-оплата в ресторані на перший погляд виглядає просто: відсканував — заплатив. На ділі інтеграція ламається на стику кількох шарів — генерація QR з боку касової системи, синхронізація статусу оплати між офіціантським планшетом та застосунком гостя, і обробка таймаутів, коли еквайр відповідає пізніше, ніж закривається рахунок. Наш досвід — понад 5 років і 20 реалізованих проєктів для ресторанів — ми гарантуємо стабільну роботу оплати, скорочуючи час очікування клієнта в середньому на 30 секунд і збільшуючи конверсію оплат на 15%. Економія на еквайрингу при використанні СБП становить до 0.7% з кожної транзакції проти 2-3% у банківських карток.

Розробка мобільного застосунку для ресторану з QR-оплатою

Основна мета — створити безшовний сценарій від сканування QR-коду до підтвердження оплати. Ключовий елемент — динамічний QR, який формується для кожного замовлення та містить унікальний ідентифікатор транзакції і токен. Інтеграція з платіжним шлюзом та касовою системою — найскладніші етапи. Розглянемо типові проблеми та рішення.

Як забезпечити безпеку динамічного QR?

Динамічний QR-код генерується на сервері для кожного замовлення та містить унікальне посилання з ідентифікатором транзакції та токеном. На відміну від статичного QR, який можна скопіювати та використати повторно, динамічний дійсний лише один раз. Навіть якщо зловмисник перехопить посилання, оплатити з неї не вийде — вона застаріла. Це вимога App Store Review Guidelines (Section 4.2) та PCI DSS. Ми використовуємо генерацію через API еквайра (наприклад, POST /v3/payments ЮKassa), що дає додатковий шар верифікації.

Проблеми інтеграції з СБП

Найчастіша проблема — гонка станів при QR-оплаті через СБП (Систему швидких платежів). Гість сканує динамічний QR, сформований через API ЮKassa або CloudPayments, робить переказ. Банк надсилає webhook на ваш сервер. Але застосунок уже показує «Очікуйте підтвердження» і через 30 секунд — «Час очікування вичерпано». Причина — webhook прийшов через 35 секунд через мережеві затримки на стороні банку, а polling на мобільному клієнті зупинився раніше.

Рішення: WebSocket-канал між сервером і мобільним клієнтом замість polling. Сервер при отриманні webhook негайно пушить статус на пристрій. Таймаут на клієнті збільшуємо до 3 хвилин, але візуально показуємо прогрес — анімація очікування не повинна зависнути «назавжди» з точки зору UX.

Друга проблема — сканування QR на iOS через AVFoundation. Стандартний AVCaptureMetadataOutput з типом .qr іноді не читає надрукований QR при поганому освітленні ресторану. Додаємо torchMode = .auto та виставляємо videoZoomFactor програмно при низькому brightness з AVCaptureDevice.exposureTargetBias. Це покращує роботу сканера QR коду в складних умовах.

Чому WebSocket замість polling

Метод polling WebSocket
Таймаут 30 секунд Сповіщення миттєво
Додаткові HTTP-запити Постійне з'єднання
Ризик втрати статусу при помилці Гарантована доставка
Навантаження сервера зростає з числом клієнтів Одне з'єднання на клієнта

WebSocket-канал скорочує час реакції до 1-2 секунд проти 30+ секунд при polling — у 15 разів швидше. Це критично, коли еквайр затримує відповідь і гість ризикує піти, не дочекавшись підтвердження. Ми впроваджуємо WebSocket з fallback на polling для старих версій сервера.

Скільки коштує економія при використанні СБП?

Порівняємо: при картковому платежі комісія становить 2.5% від суми, а при оплаті через СБП лише 0.5%. На середньому чеку в 500 грн економія складає 10 грн на кожній транзакції. За місяць при 1000 транзакціях це вже 10 000 грн — суттєва вигода для ресторану.

Порівняння платіжних провайдерів

Провайдер Комісія (еквайринг) Зарахування коштів Складність інтеграції
ЮKassa 2.5-3% або СБП 0.4-0.7% Миттєво Середня (REST API + webhook)
CloudPayments 2.2-3% або СБП 0.4-0.7% На наступний день Низька (готові SDK)
СБП через банк-партнер 0.4-0.7% Миттєво Висока (потрібна кастомізація)

Таким чином, СБП є в 5 разів вигіднішим за банківський еквайринг. Наприклад, при середньому чеку 500 грн економія на транзакції становить 7 грн при використанні СБП. Вибір провайдера залежить від обсягів та вимог до швидкості зарахування. Для ресторанів з високим трафіком оптимальна зв'язка ЮKassa + СБП: основний потік через карти, а для постійних гостей — QR через СБП з мінімальною комісією.

Детальніше про економію на СБП *При використанні СБП комісія становить 0.4-0.7% замість 2-3% при карткових платежах. При середньому чеку 500 грн це економія 7-10 грн на кожній транзакції.*

Що входить у розробку

  • Аудит касової системи ресторану (iiko, r_keeper, Poster, самописна)
  • Дизайн екранів: меню, кошик, екран оплати з QR
  • Реалізація сканування та генерації динамічного QR
  • Інтеграція з платіжним провайдером (ЮKassa, CloudPayments, СБП)
  • Налаштування WebSocket-сповіщень та обробка webhook
  • Тестування в Sandbox та публікація в App Store / Google Play
  • Документація з API та схеми взаємодії
  • Підтримка після запуску (1 місяць гарантії на баги)

Як впровадити QR-оплату: покрокова інструкція

  1. Проведіть аудит касової системи ресторану.
  2. Оберіть платіжного провайдера (ЮKassa, CloudPayments, СБП).
  3. Розробіть дизайн екранів у застосунку.
  4. Інтегруйте генерацію QR через API провайдера.
  5. Налаштуйте WebSocket-сповіщення та обробку webhook.
  6. Протестуйте сценарії в Sandbox.
  7. Публікуйте застосунок та навчіть персонал.

Як ми тестуємо інтеграцію з платіжним провайдером

Перед запуском у продакшн проганяємо сценарії: сканування QR з різною освітленістю, одночасна оплата з двох пристроїв, обрив мережі під час підтвердження. Використовуємо Sandbox-середовища ЮKassa та CloudPayments для генерації тестових webhook'ів. Автоматизуємо перевірку через скрипти на сервері, що симулюють затримки до 60 секунд — лише після цього вважаємо інтеграцію стабільною.

Стек та архітектура

На iOS — SwiftUI + Combine для стану екрану оплати, AVFoundation для сканування, URLSession з async/await для запитів до свого бекенду. На Android — Jetpack Compose, CameraX з QRCodeAnalyzer поверх ML Kit Barcode Scanning, Retrofit + OkHttp.

Серверна частина: генерація динамічного QR через API еквайра (у ЮKassa це POST /v3/payments з confirmation.type = qr), отримання confirmation_url, WebSocket-нотифікації клієнту, обробка webhook з верифікацією підпису sha256.

Для меню та каталогу страв — звичайний REST, дані кешуємо локально через Core Data (iOS) або Room (Android), щоб меню відкривалося без інтернету.

Схема взаємодії

[Мобільний застосунок гостя] | | Запит рахунку (tableId) v [Бекенд ресторану] | | POST /v3/payments → ЮKassa API v [ЮKassa] → повертає confirmation_url (QR) | | WebSocket push при отриманні webhook v [Мобільний застосунок] → статус "Оплачено" 

Етапи роботи

Починаємо з аудиту касової системи ресторану — потрібно зрозуміти, через який протокол вона спілкується (iiko, r_keeper, Poster, або самописна). Інтеграція з iiko через iiko.transport API додає близько 2 днів до терміну. Потім:

  • Дизайн екранів: меню, кошик, екран оплати з QR
  • Реалізація сканування та генерації QR
  • Інтеграція з платіжним провайдером
  • Тестування webhook'ів у Sandbox
  • Складання та публікація в App Store / Google Play

Терміни

MVP з QR-оплатою та меню — 2–3 тижні. З повноцінною інтеграцією касової системи та версіями для iOS та Android — до 5 тижнів. Вартість розраховується індивідуально після аналізу вимог. Замовте розробку під ключ — отримайте стабільну систему оплати за 2-5 тижнів. Отримайте консультацію з інтеграції з вашою касовою системою — напишіть нам.

Чи варто впроваджувати QR-оплату в ресторані?

Так, це пришвидшує обслуговування на 30 секунд на кожному чеку, збільшує конверсію оплати на 15% і економить до 0.7% на еквайрингу. Наш мобільний застосунок ресторану з QR-оплатою інтегрується з касовою системою за 2-5 тижнів. Приклад економії: ресторан із 500 транзакціями на місяць заощаджує 3500 грн лише на комісії.