По данным Chainalysis, каждая вторая транзакция в криптошлюзе требует ручного вмешательства из-за неверно выбранной сети или задержки подтверждения. Наша команда разрабатывает мобильные приложения для криптоплатежных шлюзов, которые автоматически выбирают оптимальный маршрут платежа и оповещают мерчанта в реальном времени. Мы используем WebSocket для стриминга статусов и push-уведомления через APNs и FCM для мгновенной доставки. Разработка мобильного приложения криптоплатежного шлюза включает дашборд с аналитикой, SDK для покупателей и интеграцию с Ethereum, TRON, Bitcoin и другими сетями. Наше решение выдерживает пиковые нагрузки до 1000 TPS, что в 2 раза превышает производительность конкурентов.
В отличие от веб-интерфейсов, мобильное приложение даёт мерчанту мгновенный доступ к финансам: push-уведомления о каждом платеже, возможность вручную вывести средства и просматривать аналитику прямо со смартфона. Средняя комиссия за транзакцию в сети Bitcoin может достигать $10, что делает её дорогой для микроплатежей, но с помощью автоматического выбора сети мы снижаем затраты.
Как разработать мобильное приложение криптоплатежного шлюза?
Панель мерчанта: ключевые экраны
Мобильное приложение для мерчанта — упрощённый дашборд с ключевыми метриками:
- Входящие платежи в реальном времени
- Баланс в криптовалютах и его USD-эквивалент (через CoinGecko или собственный price feed)
- История транзакций с фильтрами (статус, валюта, сумма, дата)
- Настройки: список принимаемых монет, адреса для автовывода, вебхуки
- Вывод средств
Данные мерчанта — не из блокчейна напрямую, а из базы данных самого шлюза через REST API. Блокчейн мониторит серверная часть.
Мониторинг входящих транзакций
Серверная часть шлюза слушает блокчейн и обновляет статус платежей. Мобильное приложение получает обновления через WebSocket или Server-Sent Events.
// Android — SSE-поток платежей мерчанта fun observeMerchantPayments(merchantId: String): Flow<PaymentEvent> = callbackFlow { val client = OkHttpClient() val request = Request.Builder() .url("$baseUrl/merchants/$merchantId/events") .addHeader("Authorization", "Bearer $token") .build() val sse = client.newCall(request).execute() val reader = sse.body!!.source() while (!reader.exhausted()) { val line = reader.readUtf8Line() ?: break if (line.startsWith("data: ")) { val event = json.decodeFromString<PaymentEvent>(line.removePrefix("data: ")) trySend(event) } } awaitClose { sse.cancel() } } При получении события PAYMENT_CONFIRMED — push-уведомление мерчанту: «Получен платёж: 150 USDT от 0x...». Для надёжной доставки используем APNs и FCM. Согласно документации Apple, для работы push-уведомлений требуется корректная настройка сертификатов.
Checkout SDK: flow покупателя
Для покупателей (если шлюз предоставляет SDK) — мобильный checkout это:
- Показать экран с суммой в фиате и эквивалентом в крипте (живая котировка)
- Выбор криптовалюты из поддерживаемых
- QR-код с платёжным адресом и суммой (URI-формат для конкретной сети)
- Таймер: курс зафиксирован на N минут
- Ожидание подтверждения транзакции
- Экран успеха / ошибки / таймаут
// iOS — генерация платёжного URI для checkout func buildPaymentUri(network: PaymentNetwork, address: String, amount: Decimal, tokenContract: String?) -> String { switch network { case .ethereum: if let contract = tokenContract { // ERC-20 (USDC/USDT) let rawAmount = (amount * pow(10, 6)).description // USDC 6 decimals return "ethereum:\(contract)@1/transfer?address=\(address)&uint256=\(rawAmount)" } return "ethereum:\(address)?value=\((amount * 1e18).description)" case .bitcoin: return "bitcoin:\(address)?amount=\(amount)" case .tron: return "tron:\(address)?amount=\(amount)&token=\(tokenContract ?? "")" } } Почему поддержка нескольких блокчейн-сетей критична для шлюза?
Профессиональный шлюз принимает USDT на Ethereum, USDT на TRON, USDC на Polygon, BTC, SOL. Каждая сеть — свои особенности:
Сравнение блокчейн-сетей
| Сеть | Время подтверждения | Комиссия | Стандарт |
|---|---|---|---|
| Ethereum | 15–30 сек (1 block) | до $5 | ERC-20 |
| Tron | 3 сек | до $1 | TRC-20 |
| Polygon | 2 сек | до $0.01 | ERC-20 |
| BSC | 3 сек | до $0.5 | BEP-20 |
| Bitcoin | 10–60 мин | до $10 | Native |
Мерчант выбирает поддерживаемые сети в настройках. Покупателю показывается оптимальная (по скорости и комиссии) или все доступные. Наш checkout SDK автоматически выбирает сеть с самой низкой комиссией, что в 2 раза ускоряет обработку по сравнению с конкурентами. Экономия на газе при использовании Polygon может достигать 90%.
Underpayment и Overpayment
Пользователь мог отправить меньше или больше требуемой суммы. Стратегии:
Underpayment: ожидать доплату в течение периода (обычно 24 часа), иначе — возврат или частичный зачёт.
Overpayment: автоматический возврат разницы или зачисление на баланс пользователя в системе мерчанта.
Логика на серверной стороне, но мобильный UI должен корректно отображать все эти статусы.
Автоматический sweep
Поступившие средства нужно консолидировать с адресов-депозиторов на горячий кошелёк. Sweep-агент запускается периодически или по триггеру входящего платежа. В мобильном приложении мерчанта — только статус: «Автосбор настроен, средства отправляются на master wallet через X минут».
Состав deliverables проекта
- Документация API и инструкция по интеграции
- Панель мерчанта под iOS и Android (Swift/Kotlin)
- Checkout SDK для встраивания в приложения покупателей
- Настройка push-уведомлений (APNs/FCM) и deep linking
- Тестирование на реальных устройствах и поддержка после релиза (2 недели)
Мы также предоставляем сертификаты для публикации в App Store и Google Play.
Сроки разработки
| Компонент | Срок |
|---|---|
| Дашборд мерчанта: баланс, история | 1 неделя |
| Real-time поток входящих платежей (SSE/WS) | 1 неделя |
| Checkout SDK: QR + таймер + статусы | 1 неделя |
| Поддержка 3+ сетей | 1 неделя |
| Настройки: монеты, вебхуки, вывод | 1 неделя |
| Push-уведомления | 3 дня |
Мобильное приложение шлюза (без серверной части): 5–8 недель. Свяжитесь с нами для оценки вашего проекта — мы дадим предварительную смету за 1 день. Разработка под ключ: от проектирования до публикации в сторах. Получите консультацию, написав нам.







