Интеграция с MoonPay

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Интеграция с MoonPay
Простой
от 1 дня до 3 дней
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1122
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    860

Интеграция с MoonPay

MoonPay — один из крупнейших white-label on/off-ramp провайдеров. Поддерживает 150+ фиатных валют, 100+ криптовалют, доступен в 160+ странах. Интеграция занимает дни вместо месяцев по сравнению с построением собственного шлюза и позволяет избежать сложностей с KYC, комплаенсом и банковской инфраструктурой.

Варианты интеграции

Widget — самый простой вариант. Встраиваете iframe или открываете popup с MoonPay UI. Пользователь завершает процесс на стороне MoonPay.

SDK — React Native / iOS / Android SDK для мобильных приложений.

API — прямой программный доступ для создания транзакций, проверки статусов, кастомизации flow.

Widget интеграция

import { MoonPayProvider, MoonPayBuyWidget } from '@moonpay/moonpay-react';

function CryptoPurchaseModal({ walletAddress, currency = 'eth' }) {
  return (
    <MoonPayProvider
      apiKey={process.env.MOONPAY_API_KEY}
      debug={process.env.NODE_ENV === 'development'}
    >
      <MoonPayBuyWidget
        variant="overlay"
        baseCurrencyCode="usd"
        baseCurrencyAmount="100"
        defaultCurrencyCode={currency}
        walletAddress={walletAddress}
        onLogin={() => console.log('user logged in')}
        onTransactionCompleted={(txData) => {
          // txData.status: "completed" | "failed" | "pending"
          handleTransactionComplete(txData);
        }}
        visible={true}
      />
    </MoonPayProvider>
  );
}

Подписанные URL для безопасности

MoonPay требует подписи URL для предотвращения подмены параметров (адреса кошелька, суммы):

import hmac
import hashlib
import urllib.parse
import base64

def sign_moonpay_url(base_url: str, secret_key: str) -> str:
    """Подписывает URL для MoonPay widget"""
    # Парсим query parameters
    parsed = urllib.parse.urlparse(base_url)
    query = parsed.query

    # Создаём подпись
    signature = hmac.new(
        secret_key.encode(),
        query.encode(),
        hashlib.sha256
    ).digest()

    sig_b64 = base64.urlsafe_b64encode(signature).decode().rstrip('=')

    # Добавляем signature к URL
    separator = '&' if query else '?'
    return f"{base_url}{separator}signature={sig_b64}"

# Использование
url = f"https://buy.moonpay.com?apiKey={API_KEY}&currencyCode=eth&walletAddress={wallet}"
signed_url = sign_moonpay_url(url, MOONPAY_SECRET_KEY)

Webhooks

MoonPay отправляет webhook-уведомления при изменении статуса транзакции:

from fastapi import FastAPI, Request, HTTPException
import hmac, hashlib

@app.post("/webhooks/moonpay")
async def moonpay_webhook(request: Request):
    # Верификация подписи
    signature = request.headers.get("MoonPay-Signature-V2")
    body = await request.body()

    expected = hmac.new(
        MOONPAY_WEBHOOK_SECRET.encode(),
        body,
        hashlib.sha256
    ).hexdigest()

    if not hmac.compare_digest(f"sha256={expected}", signature):
        raise HTTPException(403, "Invalid signature")

    event = await request.json()

    if event["type"] == "transaction_updated":
        tx = event["data"]
        await process_transaction_update(
            external_id=tx["externalTransactionId"],
            status=tx["status"],
            crypto_amount=tx.get("cryptoTransactionId")
        )

    return {"received": True}

Комиссии MoonPay: 1.99% для банковских переводов, 3.99% для карт (плюс возможные комиссии банка). Revenue share для партнёров — от 0.5% до 0.7% от транзакции. При объёме > $1M/месяц условия обсуждаются индивидуально. Для большинства проектов интеграция с MoonPay быстрее и дешевле собственного шлюза при объёмах до $10M/месяц.