Розробка платіжного віджета для криптовалют
Ми часто отримуємо запити: «хочемо приймати крипту на сайті, як PayPal, але для USDT». На практиці це означає вирішити кілька нетривіальних завдань одночасно: генерувати унікальні адреси під кожен платіж, детектувати вхідні транзакції, обробляти різні мережі та токени, коректно працювати з підтвердженнями та reorg'ами. Готові рішення на зразок Coinbase Commerce або NOWPayments беруть 0.5–1% комісії та мають обмежену кастомізацію. Власний віджет виправданий при обігу від $10 000 на місяць — економія на комісіях може сягати $100–$500 щомісячно. Наш досвід: 10+ років у блокчейн-розробці та понад 50 впроваджених платіжних рішень. Ми гарантуємо повний контроль над транзакціями та відсутність прихованих комісій.
Чому власний віджет вигідніший?
| Критерій | Готові шлюзи (Coinbase Commerce, NOWPayments) | Власний віджет |
|---|---|---|
| Комісія | 0.5–1% + можливі приховані збори | Тільки витрати на газ та інфраструктуру |
| Кастомізація | Тільки вибір кольору та логотипу | Повний контроль: UI/UX, валюти, колбеки |
| Інтеграція | Закритий API, обмежені вебхуки | Кастомні webhook-події, прямий запис у БД |
| Безпека | Ключі на стороні провайдера | Ваші ключі, ваша інфраструктура |
| Підтримувані мережі | Обмежений список | Будь-які EVM-мережі, Bitcoin, Tron, Solana |
Власний віджет дешевший у 2-3 рази за готові шлюзи при обігу від $10 000 на місяць. Економія на комісіях — до $500 щомісяця.
Архітектура: що всередині віджета
Віджет — це тільки UI-частина. Реальна робота відбувається на бекенді:
Frontend Widget │ створити замовлення / показати адресу та QR ▼ Backend API │ генерація адреси → запис у БД → polling/webhook ▼ Blockchain Monitoring Service │ відстежує транзакції на адресах (full node sync, Bloom filters, JSON-RPC) ▼ Payment Processor │ підтвердження → колбек у додаток Як інтегрувати віджет за 3 кроки?
- Розмістіть JavaScript-скрипт віджета на сторінці та ініціалізуйте його з API-ключем.
- Викличте метод
createPayment({orderId, amount, currency})— віджет згенерує адресу та QR-код. - Обробіть callback
onPaymentConfirmed(paymentData)у вашому додатку для оновлення статусу замовлення.
Генерація адрес: HD Wallet
Для кожного платежу потрібна унікальна адреса — інакше неможливо зіставити вхідний платіж із конкретним замовленням. Стандартний підхід — BIP-44 HD Wallet:
«BIP-44 визначає ієрархічні детерміновані гаманці» — Wikipedia
import { ethers } from 'ethers'; const masterWallet = ethers.HDNodeWallet.fromMnemonic( ethers.Mnemonic.fromPhrase(process.env.PAYMENT_MNEMONIC!) ); function derivePaymentAddress(orderId: number): string { const child = masterWallet.derivePath(`m/44'/60'/0'/0/${orderId}`); return child.address; } Мнемоніка зберігається в HSM або Vault, приватні ключі ніколи не матеріалізуються на сервері. Для мультивалютності використовуються різні coin types за BIP-44 (60 для Ethereum/EVM, 0 для Bitcoin, 195 для Tron). Для EVM-мереж з однаковими адресами (Ethereum, BNB Chain, Polygon, Arbitrum) одна адреса працює у всіх, але моніторити потрібно кожну окремо.
Моніторинг транзакцій та безпека
Polling RPC vs webhook-підписки. Polling простіше, але створює навантаження. Webhooks через Alchemy, QuickNode або Moralis — отримуєте push-сповіщення.
Ключовий ризик — компрометація майстер-мнемоніки. Захист:
- Мнемоніка в HashiCorp Vault з шифруванням та політиками доступу.
- Ніколи не використовуйте .env у production.
- Приватні ключі генеруються за BIP-44 і не матеріалізуються.
- Всі операції логуються, налаштовано алертинг.
Для чутливих проектів — HSM (AWS CloudHSM, YubiHSM) та мультипідпис для великих сум.
Підтвердження та захист від double-spend
Різні активи вимагають різної кількості підтверджень:
| Актив/мережа | Рекомендовані підтвердження | Час |
|---|---|---|
| ETH / ERC-20 (Ethereum) | 12–20 блоків | ~3–4 хв |
| BNB Chain | 15–20 блоків | ~1 хв |
| Polygon | 100–150 блоків | ~4–6 хв |
| TRON TRC-20 | 20 блоків | ~1 хв |
| Bitcoin | 3–6 блоків | ~30–60 хв |
Не зараховуйте платіж як фінальний до досягнення порогу. Для stablecoins: whitelist контрактів обов'язковий.
UI/UX та обробка платежів
Мінімальний набір для конверсії:
┌─────────────────────────────────────┐ │ Оплатити: 47.50 USDT │ │ Мережа: [Ethereum ▼] [BNB Chain ▼] │ │ [QR-код] 0x7f3a...b2c4 │ │ [Копіювати] │ │ ⏱ Очікування оплати: 14:32 │ │ ● Очікуємо транзакцію... │ └─────────────────────────────────────┘ Таймер сесії 15–30 хв, статус через WebSocket/SSE. Конвертація фіат→крипто через Chainlink Price Feeds або CoinGecko з кешуванням + 1-2% буфер на волатильність.
Underpayment: або блокуєте до доплати, або приймаєте як часткову оплату. Overpayment: кредит користувача або автоматичне повернення різниці. Для нативних монет пояснюйте необхідність комісії газу.
Що входить в роботу
- Документація API для інтеграції віджета з вашим сайтом.
- Тестовий стенд в одній з мереж (Goerli/Sepolia) для приймання.
- Вихідний код з інструкцією по розгортанню (Docker, CI/CD).
- Інтеграція з вашою CRM або ERP через webhook-колбеки.
- Навчання команди роботі з адмін-панеллю та моніторингом.
- Гарантійна підтримка 3 місяці (входить у вартість).
Оцінка проекту
Замовте розробку платіжного віджета під ваш бізнес — ми оцінимо проект за 1-2 дні та запропонуємо оптимальну архітектуру. Отримайте консультацію: обговоримо вимоги, терміни та бюджет. Повний контроль над криптоплатежами без посередників.







