Представьте: пользователь открывает приложение кошелька, чтобы пополнить счёт, а видит ошибку «Service Unavailable». Или ещё хуже — после перевода баланс не обновляется, а деньги уже списались. Такие сценарии — головная боль любого fintech-продукта. Мы разрабатываем мобильные кошельки так, чтобы транзакции проходили надёжно и пользователи не теряли средства. Наша команда накопила 5+ лет опыта в этой сфере, что позволяет избежать типичных ошибок.
В этой статье разберём ключевые технические аспекты: от выбора архитектуры (BaaS или собственный бэкенд) до интеграции KYC, обработки транзакций и безопасности. Вы узнаете, как мы подходим к проектированию и какие подводные камни встречаются на пути.
Мы работаем с разными платформами: нативный Swift/Kotlin для максимальной производительности, Flutter и React Native для кроссплатформенной разработки. Выбор зависит от требований к безопасности и бюджету. Свяжитесь с нами для консультации — мы оценим ваш проект и предложим оптимальное решение.
Как выбрать архитектуру для электронного кошелька?
Два подхода: BaaS (Banking-as-a-Service) и собственный бэкенд. BaaS-провайдеры (Treezor, ClearBank, Railsbank) предоставляют готовые API для создания кошельков, IBAN, переводов, выпуска карт. Мобильное приложение выступает фронтендом. Это быстрый запуск и минимальная regulatory burden, но меньше контроля над данными. Собственный бэкенд даёт полный контроль, но требует лицензии и сложнее в реализации — нужна двойная бухгалтерия (double-entry accounting) и gapless transaction log. Транзакции проходят через ваш сервер, поэтому нагрузка на него возрастает.
| Критерий | BaaS | Собственный бэкенд |
|---|---|---|
| Скорость запуска | 2-3 месяца | 6-12 месяцев |
| Контроль данных | Ограничен | Полный |
| Лицензирование | Не требуется | Нужна лицензия |
| Стоимость | Подписка + транзакции | Разработка + хостинг |
Для мобильного приложения разница незаметна — в обоих случаях используем REST API. BaaS-провайдеры часто предлагают SDK для эмиссии карт и KYC, что упрощает интеграцию.
Что включает в себя KYC-интеграция?
Без верификации кошелёк работает с лимитами (обычно 1000–1500 EUR/месяц). После прохождения KYC открывается полный функционал. Мы интегрируем Sumsub SDK (SumSubMobileSDK для iOS/Android): нативный SDK, liveness check, document scan, anti-spoofing. Альтернативы — Onfido, Jumio. Все три имеют нативные Flutter SDK.
Процесс в приложении: выбор документа → фото паспорта → liveness selfie → ожидание проверки (от 1 минуты до нескольких часов). Push при изменении статуса. Важно: Sumsub SDK на iOS добавляет ~15–20 MB к размеру приложения из-за CoreML-моделей anti-spoofing. Учитываем это при планировании.
KYC-этапы:
| Этап | Описание | Длительность |
|---|---|---|
| Выбор документа | Пользователь выбирает тип удостоверения | 10 секунд |
| Фото документа | Сканирование с автозахватом | 5 секунд |
| Liveness selfie | Видеозапись лица | 15 секунд |
| Проверка | Обработка Sumsub | 1-60 минут |
После проверки статус обновляется через push-уведомление.
Пополнение, вывод и P2P-переводы
Пополнение счёта: банковская карта (Stripe, Checkout.com), банковский перевод (SEPA, SWIFT), наличные через партнёрскую сеть. Карточное пополнение — стандартный SDK платёжного шлюза. SEPA-перевод — пользователь получает IBAN кошелька и переводит через свой банк.
Вывод средств: на карту (Stripe Payouts) или IBAN. Верификация реквизитов — IBAN checksum validation (Luhn-подобный), BIC lookup. Лимиты по уровням KYC.
Все операции — асинхронны. UI показывает: «Запрос принят, ожидайте» и push при зачислении. Не обновляем баланс синхронно — банки и блокчейн не мгновенны.
P2P переводы реализуем тремя способами:
- QR — генерируем QR с userId и суммой. Формат EMV QR или кастомный deeplink
wallet://pay?to=...&amount=.... Сканирование черезAVFoundation(iOS) /ML Kit Barcode Scanning(Android). После сканирования — экран подтверждения. - По номеру телефона — ввод номера, поиск, экран подтверждения. Показываем только маскированное имя (Иван В.) для приватности.
- По username — аналогично.
Подтверждение перевода — биометрия или PIN. Используем LocalAuthentication / BiometricPrompt. Не просто кнопка «Ок» — это финансовая операция.
Безопасность и push-уведомления
Сессионные токены: short-lived access token (15 минут) + long-lived refresh token в Keychain/EncryptedSharedPreferences. Refresh token rotation при каждом обновлении — предыдущий инвалидируется. Лимиты по суммам и частоте — на сервере. Anomaly detection: несколько переводов за минуту → временная блокировка + push + email. Certificate pinning обязателен. Jailbreak/root detection — опционально.
Каждое движение денег — push в течение секунд. FCM priority: high / APNs apns-priority: 10. Тихие push для синхронизации баланса в фоне (content-available: 1). Пользователь открывает приложение — видит актуальный баланс без подгрузки.
Процесс работы и ориентиры по срокам
Наш процесс включает несколько этапов:
- Юридическая структура и выбор BaaS (если применимо)
- Интеграция KYC
- Реализация кошелька и баланса
- Пополнение и вывод
- P2P переводы
- История и выписки
- Security audit
- Публикация
Отметим: что входит в работу: документация, доступы к SDK, обучение вашей команды, поддержка после релиза в течение месяца. Пишите — мы подготовим подробное коммерческое предложение.
Ориентировочные сроки: MVP (регистрация + KYC + пополнение картой + P2P + история) — 10–14 недель. Полноценный кошелёк с эмиссией карт, SEPA, currency exchange — 4–7 месяцев. Бюджет — от 1,5 млн рублей за MVP, точная стоимость после анализа требований.
Пример интеграции KYC SDK
```swift // Инициализация Sumsub SDK SumsubSDK.setup(clientId: "client_id") let config = SumsubSDKConfig(flowType: .kyc) SumsubSDK.launch(with: config) ```Мы на рынке более 5 лет, выполнили 30+ проектов в финансовой сфере. Обращайтесь — оценим ваш проект бесплатно.
Treezor API documentation







