Розробка мобільної програми для електронного гаманця
Електронний гаманець—ліцензований платіжний продукт. Розробка починається не з коду, а з бізнес-структури: потрібна або власна ліцензія платіжного оператора, або партнерство з ліцензованим банком/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/місяць). Після 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–20 МБ через 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. Не просто «Ok»—фінансова транзакція потребує явного підтвердження. 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 місяців. Вартість—після аналізу вимог.







