Интеграция MoonPay для покупки крипты в мобильном приложении

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

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Интеграция MoonPay для покупки крипты в мобильном приложении
Простой
~2-3 дня
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • 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

Интеграция MoonPay для покупки крипты в мобильном приложении

MoonPay — один из наиболее распространённых on-ramp провайдеров. Поддерживает 160+ стран, карты Visa/Mastercard/Amex, Apple Pay, Google Pay, банковские переводы. Интеграция через виджет занимает день, но правильно подписанный URL и обработка коллбэков — отдельная история.

Получение API ключей и подпись URL

На dashboard.moonpay.com — создать аккаунт, получить publishable key (публичный, в приложении) и secret key (только на сервере). Без secret key нельзя подписать URL, без подписи MoonPay блокирует виджет.

Подпись — HMAC-SHA256 от строки запроса URL:

// Формирование подписанного URL — выполняется на бэкенде, не в приложении
// Серверная сторона (Node.js пример):
const crypto = require('crypto');
const queryString = new URL(widgetUrl).search; // "?apiKey=...&walletAddress=..."
const signature = crypto
  .createHmac('sha256', process.env.MOONPAY_SECRET_KEY)
  .update(queryString)
  .digest('base64');
const signedUrl = `${widgetUrl}&signature=${encodeURIComponent(signature)}`;

Приложение запрашивает подписанный URL с собственного бэкенда, никогда не хранит secret key локально.

Открытие виджета на iOS и Android

// iOS — SFSafariViewController (рекомендуется MoonPay)
import SafariServices
let vc = SFSafariViewController(url: URL(string: signedUrl)!)
vc.preferredBarTintColor = UIColor(named: "AppBackground")
vc.preferredControlTintColor = UIColor(named: "AppTint")
present(vc, animated: true)
// Android — Chrome Custom Tabs
val customTabsIntent = CustomTabsIntent.Builder()
    .setToolbarColor(ContextCompat.getColor(context, R.color.app_background))
    .setShowTitle(true)
    .build()
customTabsIntent.launchUrl(context, Uri.parse(signedUrl))

Не открывать виджет в обычном WebView — MoonPay явно это не рекомендует из соображений безопасности 3DS.

Параметры кастомизации

Ключевые query параметры виджета:

  • walletAddress — адрес для получения крипты
  • currencyCodeeth, btc, sol, usdc_ethereum и т.д.
  • baseCurrencyAmount — предзаполненная сумма в фиате
  • baseCurrencyCodeusd, eur, gbp
  • colorCode — цвет акцентов (URL-encoded hex, %23FF6600)
  • languageru, en, de и т.д.
  • email — предзаполнить email для KYC (если известен)
  • redirectURL — URL для возврата в приложение после покупки

Обработка результата через deeplink

После успешной покупки MoonPay редиректит на redirectURL. Регистрировать custom URL scheme в приложении:

// Android: AndroidManifest.xml
// <intent-filter>
//   <data android:scheme="myapp" android:host="moonpay-success"/>
// </intent-filter>

override fun onNewIntent(intent: Intent) {
    val uri = intent.data ?: return
    if (uri.host == "moonpay-success") {
        val txId = uri.getQueryParameter("transactionId")
        // Показать экран успеха, обновить баланс через 30 сек
    }
}

Дополнительно — webhook на бэкенде для надёжного получения статуса (transaction_completed, transaction_failed). MoonPay отправляет события на webhookUrl из настроек dashboard.

Сроки: 2–3 дня: серверная подпись URL, интеграция виджета через SFSafariViewController/CustomTabs, deeplink callback, обновление баланса после успешной покупки.