При спробі дати користувачам можливість купувати криптовалюту прямо в мобільному додатку, багато хто стикається з неприємним сюрпризом: більшість on-ramp провайдерів вимагають виведення клієнта на зовнішній сайт, що різко знижує конверсію. Transak — один із небагатьох, хто дозволяє вбудувати покупку через віджет WebView зі збереженням бренду додатку. Але інтеграція в нативні iOS або Android проєкти — не завжди тривіальна: потрібно правильно сформувати URL, підписати партнерські запити JWT, обробити deep link'и та вебхуки, а також врахувати App Store Review Guidelines (Section 4.2 та 5.1). За роки роботи (ми на ринку більше 5 років) ми набили шишки на цих граблях і готові поділитися робочим рецептом. У цій статті — детальний гайд з інтеграції Transak з прикладами коду для Android (Kotlin) та iOS (Swift), а також практичні поради щодо налаштування підпису та вебхуків.
Проблеми, які вирішує інтеграція
Користувачі часто стикаються з високими комісіями, довгим KYC або відсутністю підтримки потрібної мережі. Transak вирішує це мінімальною комісією від 0.5% на банківські перекази, підтримкою 130+ країн та 90+ криптовалют, включаючи Ethereum, BSC, Polygon, Solana. Партнерський підпис JWT дозволяє знизити комісію ще на 0.2% і прибрати брендинг Transak. Ми гарантуємо, що віджет впишеться в дизайн вашого додатку завдяки кастомізації теми та приховуванню зайвих меню.
Як ми це робимо: процес інтеграції
Формування URL для Transak Global
Базовий URL: https://global.transak.com
// Android — побудова URL val params = mapOf( "apiKey" to transakApiKey, "walletAddress" to userWalletAddress, "network" to "ethereum", // ethereum, bsc, polygon, solana "defaultCryptoCurrency" to "USDC", "fiatCurrency" to "EUR", "productsAvailed" to "BUY", // BUY, SELL, або BUY,SELL "hideMenu" to "true", // прибрати навігацію Transak "themeColor" to "1A1A2E", // hex без # "redirectURL" to "myapp://transak-callback", "exchangeScreenTitle" to "Купити USDC" ) val queryString = params.entries.joinToString("&") { (k, v) -> "$k=${URLEncoder.encode(v, Charsets.UTF_8)}" } val widgetUrl = "https://global.transak.com/?$queryString" Для production — API key з dashboard.transak.com. Staging ключ (STAGING_TRANSAK_API_KEY) для тестування: тестові картки Transak приймають 4111111111111111 з будь-яким CVV.
Партнерський підпис (signature)
На продакшн-акаунті Transak вимагає підписаний JWT для авторизованих партнерів. Без цього віджет працює як публічний (з брендингом Transak). З партнерським підписом — кастомний брендинг, знижені комісії. Наприклад, при середньому чеку $1000 економія складе близько $5 за рахунок зниження комісії на 0.5%.
// Серверна генерація JWT (Node.js) const jwt = require('jsonwebtoken'); const payload = { apiKey: process.env.TRANSAK_API_KEY, walletAddress: userWalletAddress, userData: { firstName, email } // опціонально, для preKYC }; const token = jwt.sign(payload, process.env.TRANSAK_SECRET, { expiresIn: '1h' }); // Передати token в додаток, додати як &partnerOrderId={token} Обробка deep link'ів та вебхуків
Після завершення покупки Transak перенаправляє користувача по redirectURL. Необхідно налаштувати Universal Links / App Links для iOS/Android. На серверній стороні обов'язкова верифікація вебхуків за допомогою HMAC-SHA512 — це захист від підробки статусів. Ключові події: ORDER_CREATED, PAYMENT_DONE_MARKED_BY_USER, ORDER_COMPLETED, ORDER_FAILED.
Приклад обробки вебхуку (Node.js)
const crypto = require('crypto'); app.post('/transak-webhook', (req, res) => { const signature = req.headers['x-transak-signature']; const payload = JSON.stringify(req.body); const expected = crypto.createHmac('sha512', process.env.TRANSAK_SECRET).update(payload).digest('hex'); if (signature !== expected) { return res.status(403).send('Invalid signature'); } // Обробка події const event = req.body.event; if (event === 'ORDER_COMPLETED') { // зарахувати кошти користувачеві } res.sendStatus(200); }); Докладніше про вебхуки Transak — документація Transak
Порівняння Transak з іншими on-ramp рішеннями
| Провайдер | Комісія | Підтримка країн | Криптовалюти | KYC поріг |
|---|---|---|---|---|
| Transak | від 0.5% (SWIFT) | 130+ | 90+ | від $50 |
| MoonPay | від 1% (карти) | 100+ | 80+ | від $150 |
| Ramp | від 0.49% (SEPA) | 110+ | 70+ | від $100 |
Transak виграє за рахунок низького порогу KYC та підтримки on-ramp + off-ramp в одному віджеті. Економія на комісіях може досягати 30% порівняно з MoonPay, а при транзакціях від $1000 — до $30 за одну операцію. Крім того, Transak обробляє заявки в 2 рази швидше, ніж MoonPay, завдяки оптимізованому API та автоматизації KYC.
Таблиця вебхук-подій
| Тип події | Опис | Необхідні дії |
|---|---|---|
| ORDER_CREATED | Користувач почав покупку | Логувати, показати статус |
| PAYMENT_DONE_MARKED_BY_USER | Користувач оплатив | Перевірити протягом хвилини |
| ORDER_COMPLETED | Криптовалюта відправлена | Зарахувати на баланс |
| ORDER_FAILED | Транзакція відхилена | Повідомити користувача, повернути кошти |
Що входить в роботу під ключ
- Аналіз вимог: вибір мереж та токенів, налаштування партнерського акаунту.
- Інтеграція віджета: Android (WebView + Kotlin) / iOS (WebView + Swift) з кастомним URL.
- Підпис JWT: серверна генерація токена для партнерського бренду.
- Deep link'и: налаштування Universal Links / App Links для повернення в додаток.
- Вебхуки: серверна обробка подій та оновлення балансу користувача.
- Підтримка KYC: опціонально pre-fill даних користувача для прискорення.
- Тестування: на Staging-ключі з тестовими картками.
- Документація та навчання: інструкції для команди замовника.
- Гарантія інтеграції: всі технічні нюанси опрацьовуються до запуску.
Процес інтеграції по кроках
- Аудит — визначаємо підтримувані мережі, токени, методи оплати для вашої аудиторії.
- Налаштування акаунту Transak — отримуємо API-ключі, налаштовуємо вебхуки, партнерський бренд.
- Інтеграція віджета — вбудовуємо WebView з формуванням підписаного URL.
- Обробка deep link'ів — повернення в додаток після покупки.
- Серверна частина — вебхуки, верифікація, оновлення балансу.
- Тестування — з тестовими картками та Staging-ключем.
- Запуск в production — зміна ключа, моніторинг.
Типові помилки при інтеграції
- Використання публічного API-ключа в production — віджет буде з брендом Transak, а комісія вища на 0.5%.
- Пропуск верифікації вебхуків — будь-хто може відправити фейковий ORDER_COMPLETED.
- Неправильна обробка помилок при невдалій покупці — користувач втрачає гроші без повідомлення.
Як забезпечити безпеку інтеграції?
Завжди використовуйте підписані JWT для production-запитів та верифікуйте вебхуки через HMAC-підпис. Зберігайте секретні ключі на сервері, не включайте їх у мобільний додаток. Налаштування Universal Links та App Links гарантує безпечне повернення користувача в додаток після завершення покупки.
Чому варто обрати Transak?
Transak пропонує низький поріг KYC (від $50), підтримку 130+ країн та 90+ криптовалют, а також on-ramp та off-ramp в одному віджеті. Комісії починаються від 0.5% на банківські перекази, що на 30% нижче, ніж у MoonPay для великих сум. Це робить його найкращим вибором для мобільних додатків, орієнтованих на міжнародну аудиторію.
Ми гарантуємо, що всі технічні складнощі будуть опрацьовані. Строк інтеграції — від 3 днів до 2 тижнів залежно від складності. Замовте консультацію — оцінимо ваш проєкт безкоштовно. Наші інженери мають досвід більше 5 років та реалізували понад 50 інтеграцій on-ramp рішень. Отримайте індивідуальне комерційне пропозицію, зв'язавшись з нами.







