При попытке дать пользователям возможность покупать криптовалюту прямо в мобильном приложении, многие сталкиваются с неприятным сюрпризом: большинство 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 решений. Получите индивидуальное коммерческое предложение, связавшись с нами.







