Интеграция POS-терминала в мобильное приложение: полный цикл работ

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

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Интеграция POS-терминала в мобильное приложение: полный цикл работ
Сложный
~5 дней

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

Часто задаваемые вопросы

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    898
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1219
  • 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
    600

Как подключить POS-терминал к мобильному приложению?

Подключение мобильного приложения к POS-терминалу — это не просто «отправить сумму на терминал». Это интеграция с закрытыми протоколами оборудования, которые у каждого производителя свои, плюс обработка всех возможных сбоев связи в момент финансовой операции. Мы в компании имеем 7+ лет опыта в мобильной разработке и реализовали более 20 интеграций с POS-терминалами для различных эквайеров. Наш подход — полное покрытие всех edge-кейсов, чтобы каждая транзакция была завершена корректно.

Типичная ситуация: кассир в супермаркете проводит оплату через мобильное приложение, терминал авторизует карту, но связь обрывается. Что делать? Наше решение включает автоматический запрос статуса последней транзакции и механизм повторного подключения с 5 попытками, что даёт 99% успешного определения статуса. Закажите интеграцию под ключ — мы берём на себя все этапы: от анализа протоколов до тестирования на реальном оборудовании. Оценим ваш проект в течение двух рабочих дней.

Протоколы и производители

Большинство POS-терминалов в торговом ритейле общаются по одному из стандартных интерфейсных протоколов:

  • ECR-протокол (Electronic Cash Register) — набор команд для передачи суммы с кассового приложения на терминал. У каждого банка-эквайера или производителя — своя реализация. Сбербанк (СБОЛ), ВТБ, Ingenico, Verifone — у всех отличается синтаксис команд и поля ответа.
  • OPI (Open Payment Initiative) / OPOS (OLE for POS) — более стандартизированные протоколы, популярны в Европе.
  • Proprietary SDK: PAX A-серия, Sunmi V2, Newland — имеют собственные Android SDK (терминал сам работает на Android, вызываем AIDL-интерфейс или Intent).

Перед началом разработки уточняем у клиента: какой конкретный терминал, какой банк-эквайер, какой протокол поддерживается. Это не технический выбор разработчика — это факты об установленном оборудовании.

Протокол Производители Сложность Скорость Стандартизация
ECR Сбербанк, ВТБ, Альфа-Банк Средняя Высокая Нет, своя реализация
OPI/OPOS Ingenico, Verifone Высокая Средняя Есть
Proprietary SDK PAX, Sunmi, Newland Низкая Высокая Нет

Какие интерфейсы используются?

Bluetooth (BLE + Classic). Терминал выступает GATT-сервером (BLE) или classic Bluetooth serial device. На iOS: CoreBluetooth для BLE, classic Bluetooth — только через ExternalAccessory framework с MFi-сертификацией. Это важное ограничение: большинство POS-терминалов используют classic Bluetooth SPP-профиль, а iOS без MFi-сертификата производителя терминала не сможет подключиться через classic BT. На Android ограничений нет — BluetoothSocket + RFCOMM.

USB. Android: UsbManager, UsbDeviceConnection. iOS: Lightning/USB-C аксессуар — снова нужен MFi. На практике USB-подключение встречается реже, чем Bluetooth.

TCP/IP (Wi-Fi / LAN). Терминал на локальной сети, приложение подключается по IP:Port и отправляет команды в текстовом или бинарном формате. URLSession / OkHttp для HTTP-команд или CFStream / Java Socket для raw TCP. Самый предсказуемый интерфейс с точки зрения iOS.

Флоу платёжной операции

  1. Приложение формирует команду «продажа» с суммой и дополнительными параметрами.
  2. Отправляет на терминал.
  3. Терминал показывает пользователю экран оплаты, принимает карту.
  4. Возвращает ответ: статус (approved/declined/error), код авторизации, RRN, маскированный PAN.
  5. Приложение обрабатывает ответ и продолжает бизнес-флоу (закрывает чек, обновляет заказ).

Шаги 2–4 могут занять до 60–90 секунд при медленном эквайринге. На этот период показываем spinner с сообщением «Ожидание ответа терминала» и кнопку «Отмена» (которая отправляет команду отмены на терминал, не просто закрывает экран).

Что делать при обрыве связи во время транзакции?

Самый неприятный кейс: транзакция ушла на терминал, связь прервалась — приложение не знает, прошёл платёж или нет. Терминал авторизовал карту, но ответ не дошёл.

Правильная схема: при потере связи — пробуем получить статус последней транзакции (команда «запрос последней операции»). Если терминал отвечает — берём статус оттуда. Если нет — показываем оператору «Статус неизвестен, проверьте терминал» и сохраняем транзакцию в PENDING статусе. Автоматическое списание при неизвестном статусе — недопустимо.

Reconnect logic: при обрыве Bluetooth — автоматическое переподключение с 5 попытками, exponential backoff. Состояние соединения — всегда видно в UI (иконка статуса).

Возврат и отмена

Отмена транзакции (reversal) — до закрытия финансового дня. Возврат (refund) — после. Оба требуют отдельных команд на терминал с RRN исходной транзакции. Реализуем оба сценария — оператор должен иметь возможность исправить ошибку.

Сравнение платформ: Android vs iOS

Аспект Android iOS
Classic BT (SPP) Нативно, BluetoothSocket Только MFi-устройства
BLE BluetoothGatt CoreBluetooth
USB UsbManager Только MFi
TCP/IP Socket / OkHttp CFStream / URLSession

Если заказчик требует iOS и терминал работает только по classic Bluetooth без MFi — единственный путь: TCP/IP через промежуточный адаптер или переход на терминал с BLE/TCP поддержкой.

Кстати, протокол BLE обычно обеспечивает более низкую задержку (до 50 мс) по сравнению с classic Bluetooth (100–200 мс), что ускоряет транзакцию в 2–4 раза. Это важно для сценариев с высокой пропускной способностью. Больше деталей в документации Apple по CoreBluetooth.

Типовые ошибки при интеграции

  • Неучёт MFi-сертификации для iOS на classic Bluetooth — приводит к невозможности подключения.
  • Отсутствие retry logic при обрыве — потерянные транзакции.
  • Использование неподходящего протокола (например, ECR для терминала, который поддерживает только OPI).
  • Неправильный парсинг ответа терминала (разные коды ошибок у разных производителей).

Что входит в работу

  • Анализ оборудования и протоколов эквайера.
  • Реализация транспортного слоя (Bluetooth/USB/TCP).
  • Разработка протокола команд (продажа, отмена, возврат, запрос статуса).
  • Обработка edge-кейсов (обрыв связи, таймаут, неизвестный статус).
  • Тестирование на реальном терминале в тестовом режиме эквайера.
  • Документация по интеграции для поддержки клиента.
  • Гарантия на транспортный слой: 6 месяцев бесплатной поддержки.

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

Процесс работы

Выяснение модели терминала и протокола → изучение документации эквайера → реализация транспортного слоя (BT/USB/TCP) → протокол команд (продажа, отмена, возврат, запрос статуса) → обработка edge-cases (обрыв связи, таймаут) → тестирование на реальном терминале в тестовом режиме эквайера → боевое тестирование → эксплуатация.

Ориентиры по срокам

Базовая интеграция (продажа + ответ) по конкретному протоколу с одним интерфейсом: 3–5 дней. Полный набор операций (продажа, отмена, возврат, запрос статуса) + retry/reconnect logic + несколько интерфейсов: 2–3 недели.

Наша команда — мобильные разработчики с 7+ лет опыта в iOS (Swift, SwiftUI, CoreBluetooth) и Android (Kotlin, Jetpack Compose, BluetoothSocket). Мы работали с терминалами PAX, Ingenico, Verifone, Sunmi. Мы гарантируем качество интеграции и прозрачность каждого этапа.

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