Разработка мобильного приложения для электронного кошелька
Электронный кошелёк — это лицензируемый платёжный продукт. Разработка начинается не с кода, а с бизнес-структуры: нужна либо собственная лицензия платёжного оператора, либо партнёрство с лицензированным банком/PSP (Banking-as-a-Service). Технически это определяет, с каким API работает мобильное приложение — собственным бэкендом или BaaS-провайдером.
Архитектура кошелька
Два варианта:
BaaS (Banking-as-a-Service). Treezor, ClearBank, Railsbank, Modulr — провайдеры предоставляют API для создания кошельков, IBAN, переводов, выпуска карт. Мобильное приложение — фронтенд поверх их API. Быстрее запустить, ниже regulatory burden.
Собственный бэкенд. Полный контроль над транзакционной логикой, но нужна лицензия. Технически сложнее: двойная бухгалтерия (double-entry accounting), gapless transaction log, reconciliation.
Для мобильного приложения разница минимальна — работаем с REST API в обоих случаях. Но BaaS-провайдеры часто имеют SDK для мобильной эмиссии карт и KYC.
KYC: верификация личности
Без верификации кошелёк работает с лимитами (обычно 1000–1500 EUR/month). После KYC — полный функционал.
Интеграция Sumsub SDK (SumSubMobileSDK для iOS/Android): нативный SDK, liveness check, document scan, anti-spoofing. Альтернатива — Onfido, Jumio. Все три предоставляют нативный Flutter SDK.
Процесс в приложении: выбор типа документа → фото разворота паспорта/ID → liveness selfie → ожидание проверки (от 1 минуты до нескольких часов в зависимости от провайдера). Push при изменении статуса KYC.
Важно: Sumsub SDK на iOS добавляет ~15–20MB к размеру приложения из-за CoreML-моделей anti-spoofing. Учитываем при оценке.
Пополнение и вывод
Пополнение: банковская карта (Stripe, Checkout.com), банковский перевод (SEPA, SWIFT), наличные через партнёрскую сеть. Карточное пополнение — стандартный SDK платёжного шлюза. SEPA-перевод — пользователь получает IBAN кошелька и переводит через свой банк.
Вывод: на банковскую карту (card payout API, например Stripe Payouts), на IBAN. Верификация реквизитов вывода — IBAN checksum validation (Luhn-подобный алгоритм для IBAN), BIC lookup. Лимиты вывода по уровням KYC.
Все операции пополнения/вывода — асинхронны. UI: «Запрос принят, ожидайте» + push при зачислении/выводе. Не показываем «Баланс обновлён» синхронно — блокчейн и банковские рельсы не работают мгновенно.
Переводы P2P
Перевод по номеру телефона, QR-коду или username — три механизма.
QR: генерируем QR с userId и опциональной суммой. Форматы: EMV QR (стандарт для платёжных QR) или кастомный deeplink wallet://pay?to=...&amount=.... Сканирование через AVFoundation (iOS) / ML Kit Barcode Scanning (Android). После сканирования — экран подтверждения суммы.
По телефону: ввод номера → поиск пользователя в системе → экран подтверждения. Не показываем полное имя получателя до подтверждения — только маскированное (Иван В.). Privacy.
Подтверждение перевода — биометрия или PIN. Не просто «Ок» — финансовая транзакция требует явного подтверждения. LocalAuthentication / BiometricPrompt.
История транзакций
Cursor-based pagination. Группировка по дате. Типы: пополнение, вывод, перевод входящий/исходящий, платёж. Каждая транзакция — уникальный ID, timestamp, сумма, комиссия (если есть), статус, описание, avatar/icon получателя/отправителя.
Экспорт выписки в PDF или CSV — формируется на сервере, скачивается на устройство. UIDocumentInteractionController (iOS) / FileProvider (Android) для share/save.
Безопасность
Сессионные токены: short-lived access token (15 минут) + long-lived refresh token в Keychain/EncryptedSharedPreferences. Refresh token rotation при каждом обновлении — предыдущий инвалидируется.
Лимиты по суммам и частоте — на сервере, не на клиенте. Anomaly detection: несколько переводов подряд за минуту → временная блокировка + push + email.
Certificate pinning — обязательно. Jailbreak/root detection — желательно.
Push и нотификации
Каждое движение денег — push в течение секунд. priority: high FCM / apns-priority: 10. Тихие push для синхронизации баланса в фоне (content-available: 1). Пользователь открывает приложение — видит актуальный баланс без подгрузки.
Стек
Нативный Swift + Kotlin — при требовании максимальной безопасности и финансовой сертификации. Flutter с flutter_secure_storage, local_auth, dio — при ограниченных ресурсах и сроках. React Native — аналогично.
Процесс
Юридическая структура и BaaS-выбор → KYC-интеграция → кошелёк и баланс → пополнение и вывод → P2P переводы → история и выписки → security audit → публикация.
Ориентиры по срокам
MVP (регистрация + KYC + пополнение картой + P2P + история): 10–14 недель. Полноценный кошелёк с картой эмиссии, SEPA, currency exchange, аналитикой трат: 4–7 месяцев. Стоимость — после анализа требований.







