Інтеграція системи ЄРІП в мобільний додаток

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція системи ЄРІП в мобільний додаток
Складний
~3-5 днів
Часті запитання

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

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція системи ЕРИП в мобільному додатку

ЕРИП (Єдиний розрахунково-інформаційний простір) — білоруська міжбанківська система оплати. Відрізняється від більшості платіжних шлюзів: ЕРИП не обробляє карточні реквізити, а створює рахунок у системі, який користувач оплачує через будь-який білоруський банк — інтернет-банк, мобільний банкінг, термінал або касу. Для мобільного додатку це означає, що сам платіж відбувається поза вашим додатком.

Як ЕРИП працює в мобільному контексті

Ваш додаток створює рахунок в ЕРИП через API, отримує номер рахунку (QR-код або числовой код), користувач оплачує через своє банківське приложение. Система повідомляє ваш сервер про факт оплати через callback.

Два варіанти технічного підключення:

  1. Пряме підключення до ЕРИП — через НКФО «ЕРИПС» напрямо, вимагає договору та сертифіката
  2. Через агрегатора — Webpay, iPay, bePaid приймають оплату через ЕРИП і надають простіший API

Інтеграція через агрегатор bePaid

bePaid — білоруський платіжний шлюз з підтримкою ЕРИП API. Найзручніший варіант для мобільних додатків.

Серверна частина: створення транзакції з ЕРИП

POST https://checkout.bepaid.by/transactions/payment_token
Authorization: Basic base64(shop_id:secret_key)
Content-Type: application/json

{
    "checkout": {
        "transaction_type": "payment",
        "order": {
            "amount": 1500,
            "currency": "BYN",
            "description": "Замовлення №1234",
            "tracking_id": "ORDER-1234"
        },
        "settings": {
            "success_url": "yourapp://payment/success",
            "decline_url": "yourapp://payment/decline",
            "fail_url": "yourapp://payment/fail",
            "notification_url": "https://your-server.com/bepaid/notify"
        },
        "payment_method": {
            "types": ["erip"],
            "erip": {
                "service_no": 12345678,  // ваш номер послуги в ЕРИП
                "account_number": "ORDER-1234",
                "service_info": ["Оплата замовлення №1234"]
            }
        }
    }
}

Відповідь містить checkout_url — посилання на сторінку bePaid з QR-кодом ЕРИП.

Мобільний клієнт: відображення QR-коду

Два варіанти:

1. WebView зі сторінкою bePaid — відкриваємо checkout_url в WebView або SFSafariViewController / Chrome Custom Tabs. Сторінка bePaid показує QR-код та інструкції.

2. Нативний екран з QR — сервер отримує дані ЕРИП-рахунку, додаток генерує QR самостійно.

// Android: генерація QR через ZXing
implementation("com.google.zxing:core:3.5.2")
implementation("com.journeyapps:zxing-android-embedded:4.3.0")

val qrData = "SYSTEM_ERIP|${serviceNo}|${accountNumber}|${amount}"

val qrBitmap = QRCodeWriter().encode(
    qrData,
    BarcodeFormat.QR_CODE,
    512,
    512
).let { bitMatrix ->
    val width = bitMatrix.width
    val height = bitMatrix.height
    Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565).apply {
        for (x in 0 until width) {
            for (y in 0 until height) {
                setPixel(x, y, if (bitMatrix[x, y]) Color.BLACK else Color.WHITE)
            }
        }
    }
}

imageView.setImageBitmap(qrBitmap)
// iOS: генерація QR за допомогою CoreImage
import CoreImage

func generateQRCode(from string: String) -> UIImage? {
    let filter = CIFilter.qrCodeGenerator()
    filter.message = Data(string.utf8)
    filter.correctionLevel = "M"

    guard let outputImage = filter.outputImage else { return nil }
    let scale = UIScreen.main.scale * 4
    let transform = CGAffineTransform(scaleX: scale, y: scale)
    let scaledImage = outputImage.transformed(by: transform)

    return UIImage(ciImage: scaledImage)
}

let qrData = "SYSTEM_ERIP|\(serviceNo)|\(accountNumber)|\(amount)"
qrImageView.image = generateQRCode(from: qrData)

Polling статусу та Push-сповіщення

ЕРИП — асинхронна система. Користувач може оплатити через 5 хвилин або через 2 години. Два підходи до відслідковування:

Webhook (рекомендується). bePaid / Webpay відправляє POST на notification_url при оплаті. Сервер отримує сповіщення, оновлює замовлення, відправляє Push користувачу через FCM/APNs.

Polling. Клієнт періодично запитує статус у вашого сервера. Навантажує сервер, але простіше реалізується:

// Android: polling через корутини
private fun startPaymentPolling(orderId: String) {
    lifecycleScope.launch {
        repeat(60) {  // максимум 60 спроб
            delay(5000L)  // кожні 5 секунд
            val status = paymentRepository.checkStatus(orderId)
            if (status == PaymentStatus.PAID) {
                handleSuccess()
                return@launch
            }
        }
        // Після 5 хвилин — пропонуємо перевірити вручну
    }
}

Пряме підключення до ЕРИП (для крупних мерчантів)

При прямому підключенні використовується SOAP API ЕРИПС. Вимагає:

  • Заключення договору з НКФО «ЕРИПС»
  • Отримання сертифіката
  • Налаштування XML-підпису запитів

Технічно складніше, але дає більше контролю: можна створювати рахунки з довільними реквізитами, отримувати детальний аналіз транзакцій.

Типові проблеми

Користувач оплатив, але рахунок не закрився. Webhook не дійшов через помилку мережі. Потрібно реалізувати повторні спроби отримання webhook або періодичну reconciliation — сверку статусів через API агрегатора.

QR не сканується банківським приложением. Формат ЕРИП-QR строго стандартизований. Використовуйте специфікацію НКФО «ЕРИПС» для формування рядка — довільний формат не сработає.

Обсяг робіт

  • Підключення до ЕРИП через агрегатор (bePaid, Webpay) або пряме
  • Серверний endpoint для створення ЕРИП-рахунку
  • Нативний екран з QR-кодом або WebView зі сторінкою checkout
  • Webhook обработчик для отримання статусу оплати
  • Push-сповіщення користувачу після успішної оплати

Терміни

3–5 днів для інтеграції через агрегатор з нативним QR-екраном. Вартість розраховується індивідуально після аналізу вимог та вибору агрегатора.