Одна кнопка вместо пачки карт: как мы делали приложение для оплаты в сети магазинов
Приложение для бесконтактной оплаты — это мобильное решение, которое хранит платёжные реквизиты клиента и передаёт их на терминал через NFC, заменяя физическую карту. Разработка занимает от 500 000 ₽ и требует интеграции с 1С для сверки транзакций в реальном времени, иначе кассир и бухгалтерия видят разные суммы.
Заказчик — сеть из 14 точек выдачи товаров в Москве, где кассиры вручную сверяли оплаты по банковским картам с базой 1С:Розница. На пике, в пятницу вечером, в очереди стояло по 10-12 человек, а терминал у кассы принимал только физические карты. Часть клиентов приходила без карты, с телефоном — и уходила без покупки, потому что приложение банка зависало на этапе токенизации.
почему возникает задержка при бесконтактной оплате через приложение
Кассир на точке в Отрадном рассказывал: клиент подносит телефон, экран терминала показывает «обработка», и это длится 8-10 секунд — для розницы с живой очередью это вечность. Мы разобрали лог транзакций и увидели: приложение при каждой оплате заново запрашивало токен у платёжного провайдера, а не брало его из локального хранилища.
Причина — архитектура без кэширования токенов: разработчик первой версии решил, что безопаснее каждый раз получать свежий токен с сервера. Но сервер провайдера отвечал с задержкой 2-4 секунды в часы пиковой нагрузки, а мобильная сеть в подвальных помещениях торговых точек добавляла ещё пару секунд. Поэтому итоговая задержка складывалась из трёх независимых звеньев, и каждое усугубляло остальные.
Если не поменять логику, бизнес теряет не абстрактную «конверсию», а конкретных людей в очереди: на точке с оборотом 200-300 чеков в день каждая минута простоя кассы — это 2-3 ушедших клиента, которые в следующий раз просто зайдут к конкуренту с QR-оплатой.
как исправить медленную работу приложения оплаты
кэширование и предзапрос токена
Мы перенесли получение токена на этап открытия приложения, а не на момент прикладывания телефона к терминалу. Токен живёт в защищённом хранилище устройства (Keystore на Android, Keychain на iOS) и обновляется в фоне за 30 секунд до истечения срока действия — пользователь никогда не видит момент обновления.
синхронная запись в 1С без блокировки интерфейса
Вторая проблема была в самой связке с учётной системой. Каждая транзакция должна лечь в 1С:Розница мгновенно, иначе кассир видит оплату на экране терминала, но чек не формируется — и приходится звонить в бухгалтерию, чтобы найти платёж. Мы вынесли запись в 1С в отдельный асинхронный поток: сама оплата проходит мгновенно, а данные о ней дописываются в базу параллельно, без ожидания подтверждения от кассира.
Подробно о том, как выстраивается такая связка, мы писали в материале про интеграцию мобильного приложения с 1С — там разобраны варианты обмена через REST и через регламентные задания.
что делать, если ошибка оплаты повторяется на одной и той же точке
После первого исправления скорость выросла, но на двух точках из 14 проблема осталась — терминал продолжал зависать. Мы выехали на место и увидели: на этих точках стоял Wi-Fi роутер уровня «для дома», а мобильный интернет в помещении был на грани приёма.
Разница между «исправили код» и «исправили проблему клиента» в том, что вторая точка требует диагностики инфраструктуры, а не только приложения. Мы поставили правило: если ошибка повторяется на конкретной точке чаще двух раз в неделю, приложение автоматически логирует уровень сигнала сети и качество соединения с сервером 1С в момент сбоя, и эти данные уходят в отдельный отчёт для сисадмина.
Для сети из 14 точек с нагруженной базой 1С мы также предложили перенести саму базу на выделенный сервер — локальный сервер в подсобке магазина не выдерживал одновременных запросов от кассы, склада и мобильных касс. Аренда сервера для 1С стоит от 1 100 ₽/мес за пользователя, и это дешевле, чем платить сисадмину за постоянные выезды на восстановление зависшей базы.
как предотвратить сбои бесконтактной оплаты на новых точках
Когда сеть открыла ещё три точки в Москве, мы уже знали, на чём предыдущие два раза спотыкались. Перед запуском на новой точке проверяем три вещи: скорость канала до сервера 1С, нагрузку на роутер в часы пик и версию приложения на кассовом планшете — устаревшая версия иногда использует старый протокол токенизации, который провайдер уже не поддерживает в полную силу.
Мы также завели отдельный тестовый сценарий: имитация 20 оплат подряд с интервалом в секунду, чтобы поймать проблему очереди запросов до того, как её поймает живой клиент в пятницу вечером. Это заняло два дня разработки, но избавило от трёх выездов техподдержки за следующий квартал.
| Параметр | Версия до доработки | После доработки |
|---|---|---|
| Получение токена | Запрос при каждой оплате | Кэш с фоновым обновлением |
| Запись в 1С | Синхронно, блокирует интерфейс | Асинхронно, параллельно оплате |
| Диагностика сбоев | Только со слов кассира | Автоматический лог сети и связи с 1С |
| Тестирование перед запуском точки | Не проводилось | Нагрузочный сценарий из 20 оплат |
| Место хранения базы 1С | Локальный сервер в подсобке | Арендованный сервер, от 1 100 ₽/мес |
сколько стоит разработка приложения для бесконтактной оплаты с интеграцией 1С
Разработка такого приложения с нуля — от 500 000 ₽, и цена складывается из трёх частей: мобильное приложение (Android/iOS), модуль связи с платёжным провайдером и интеграция с учётной системой заказчика. Если у бизнеса уже есть 1С:Розница или УТ, мы подключаем приложение через готовые механизмы обмена, а не переписываем учётную систему заново.
Для сетей с несколькими точками и складом мы также собираем B2B-приложение на базе 1С, где оплата — только один из модулей, рядом с приёмкой товара и складским учётом. Если задача уже описана и нужно подтверждение бюджета, актуальные тарифы на разработку и сопровождение — на странице цены и тарифы.
Для компаний, которые хотят собрать несколько небольших мобильных сервисов на одной базе без отдельной команды разработки под каждый, есть вариант с 1С:Мобильной платформой — она быстрее в развёртывании, если логика приложения не выходит за рамки типовых операций 1С.
❓ Частые вопросы
Сколько времени занимает разработка приложения для бесконтактной оплаты с интеграцией 1С?
Зависит от глубины интеграции: минимальный вариант с одним провайдером и типовой 1С занимает несколько месяцев. Точный срок определяется после аудита текущей базы 1С и требований к платёжному провайдеру.
Можно ли подключить бесконтактную оплату к уже работающей 1С:Розница без остановки магазина?
Да, интеграция делается через отдельный обмен данными, который работает параллельно с текущей кассовой сменой. Тестовый запуск проводится на одной точке, остальные подключаются после проверки.
Что делать, если приложение уже разработано, но продолжает тормозить на конкретных точках?
Нужна диагностика инфраструктуры точки — скорости канала, нагрузки на роутер и мощности сервера 1С, а не только проверка кода приложения. Часто причина не в приложении, а в слабом сервере или плохом сигнале сети.
Сколько стоит перенести базу 1С на аренду, если локальный сервер не справляется с нагрузкой?
Аренда сервера для 1С начинается от 1 100 ₽ в месяц за пользователя. Итоговая стоимость зависит от числа пользователей и объёма базы, точный расчёт делается после оценки текущей нагрузки.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Читайте также
- Flutter для интернет-магазина: одна кодовая база вместо двух приложений
- 3 в 1: одно Flutter-приложение вместо мобильного, веб и десктопного
- Будущее приложений — без приложений: зачем бизнесу мини-приложения и боты вместо App Store
- Кнопка ломалась в каждом релизе iOS-приложения: мы закрыли баг автотестами
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

