Інтеграція MoonPay: купівля криптовалюти карткою в dApp та гаманці
Уявіть: ви запускаєте dApp, користувачі готові платити, але не можуть купити ETH карткою. Власний on-ramp потребує ліцензій, KYC, банківських партнерств — це займає від 6 до 12 місяців і десятки тисяч доларів. MoonPay вирішує це за лічені дні: понад 150 фіатних валют, понад 100 криптовалют, покриття понад 160 країн. MoonPay official documentation Ми інтегруємо MoonPay у ваш проект, щоб купівля криптовалюти карткою стала штатною функцією. Економія на розробці — до 90% витрат порівняно з самописним рішенням.
Проблеми, які вирішує інтеграція MoonPay
Необхідність власної платіжної інфраструктури
Побудова фіатного шлюзу з нуля — отримання ліцензій (MSB, EMI), інтеграція з банками-еквайрами, налаштування KYC/AML. Це потребує 6+ місяців роботи команди compliance-спеціалістів і розробників. MoonPay бере на себе все регулювання: ви просто надсилаєте запит з адресою гаманця та сумою.
Ризики безпеки при передачі коштів
Кожна транзакція має бути захищена від підміни та повторної відправки. MoonPay використовує підписані URL (HMAC-SHA256) та верифікацію webhook-сповіщень. Без цього будь-хто може змінити параметри транзакції, підставивши свій гаманець. Ваше завдання — правильно реалізувати перевірку підпису на сервері.
Неконтрольовані комісії та затримки
Власний on-ramp часто втрачає прибуток через високу вартість банківських переказів та конвертації. MoonPay надає готову модель: комісія за картки — 3.99%, за перекази — 1.99%. Для партнерів з обсягом від $1M/місяць можливий revenue share. У результаті ви отримуєте стабільний дохід без прихованих витрат.
Як працює інтеграція MoonPay?
MoonPay — white-label on-ramp провайдер, який бере на себе платіжну інфраструктуру. Ви отримуєте віджет або API, користувач купує крипту карткою або переказом, а кошти надходять на ваш смарт-контракт або гаманець. Все це — за години, а не місяці. Інтеграція MoonPay під ключ включає налаштування підписаних URL та вебхуків для повної автоматизації.
| Спосіб | Складність | Швидкість | Кастомізація |
|---|---|---|---|
| Widget | Низька | 1–3 дні | Мінімальна |
| SDK (React Native/iOS/Android) | Середня | 3–7 днів | Середня |
| API | Висока | 1–2 тижні | Повна |
Чому MoonPay, а не самописний шлюз?
MoonPay — перевірений провайдер з досвідом роботи у великих проектах (OpenSea, MetaMask, Trust Wallet) та Uptime 99.9%. Ми маємо досвід інтеграції MoonPay у 20+ проектах, включаючи DeFi-платформи та NFT-маркетплейси. Порівняно з самостійним шлюзом, MoonPay скорочує час впровадження в 10 разів і позбавляє регуляторного головного болю. Економія на розробці — до 90% витрат.
Як ми це робимо?
Підключаємо віджет або SDK, налаштовуємо підписані URL та webhook. Приклад React-компонента:
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 для запобігання підміні параметрів (адреси гаманця, суми). Генерація підпису на Python:
import hmac import hashlib import urllib.parse import base64 def sign_moonpay_url(base_url: str, secret_key: str) -> str: """Підписує URL для MoonPay widget""" 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('=') separator = '&' if query else '?' return f"{base_url}{separator}signature={sig_b64}" # Використання url = f"https://buy.moonpay.com?apiKey={API_KEY}¤cyCode=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} Приклад повного циклу транзакції
Користувач вводить суму в USD, MoonPay показує фінальну вартість з урахуванням комісії. Після оплати карткою MoonPay надсилає webhook зі статусом `awaiting_execution`, потім `completed`. Ваш сервер повинен оновити баланс гаманця лише після отримання фінального статусу.Типові помилки при інтеграції MoonPay
- Зберігання
secretKeyтаwebhookSecretу відкритому вигляді в клієнтському коді. Використовуйте серверні змінні середовища. - Відсутність верифікації webhook-підпису, що веде до підробки сповіщень.
- Неправильна обробка статусів транзакцій: не всі статуси фінальні (наприклад, "pending" може змінитися).
Ми допомагаємо уникнути цих ризиків на етапі проектування. Замовте інтеграцію MoonPay під ключ — ми підготуємо все за 1–2 тижні. Оцінимо ваш проект безкоштовно.
Що входить в роботу?
- Підбір оптимального способу інтеграції (widget/SDK/API)
- Налаштування API-ключів, секретів та webhook-обробників
- Реалізація підписаних URL та верифікації транзакцій
- Кастомізація інтерфейсу під ваш дизайн
- Документація інтеграції та інструкція з тестування
- Гарантія та підтримка після впровадження
Орієнтовні строки
| Етап | Тривалість |
|---|---|
| Аналіз та визначення вимог | 1 день |
| Базова інтеграція (віджет) | 2–3 дні |
| Повна інтеграція (API + webhook) | 5–10 днів |
| Тестування та деплой | 2–3 дні |
Вартість розраховується індивідуально залежно від складності та обсягу робіт. Для точної оцінки зв'яжіться з нами — ми запропонуємо рішення під ваш проект.







