Інтеграція криптоплатіжного шлюзу на сайт
Ми часто стикаємося з задачею: є працюючий сайт з кошиком і звичайним еквайрингом, потрібно додати оплату криптовалютою. Головна помилка — робити це самостійно «з нуля»: генерувати адреси, слухати транзакції, обробляти confirmations. Для більшості e-commerce проєктів це надмірно і створює операційне навантаження. Крім того, самостійна реалізація часто призводить до вразливостей: підробка вебхуків, втрата платежів через неправильну обробку підтверджень, проблеми з курсовими коливаннями.
Наш підхід — використовувати готовий процесинг (Coinbase Commerce, NOWPayments, CryptoPay, BTCPay Server) та інтегрувати його через webhook. Ми реалізували понад 50 інтеграцій різної складності — від простих магазинів до high-load платформ. Замовте інтеграцію під ключ, і ми знімемо всі ризики.
Як вибрати криптопроцесинг для вашого сайту?
| Рішення | Custody | Комісія | Self-hosted | Підходить для |
|---|---|---|---|---|
| Coinbase Commerce | Non-custodial | 1% | Ні | Швидкий старт, USD-ринок |
| NOWPayments | Custodial (авто-конвертація) | 0.5–1% | Ні | Багато монет, авто-конвертація в фіат |
| BTCPay Server | Non-custodial | 0% | Так | Повний контроль, тільки BTC/LN |
| CoinGate | Custodial | 1% | Ні | E-commerce плагіни |
| Прямий кастом | Non-custodial | 0% | — | Високе навантаження, особливі вимоги |
Для більшості сайтів оптимально: NOWPayments (широкий список монет, авто-конвертація в USDT/USDC) або Coinbase Commerce (якщо аудиторія переважно американська). Якщо потрібен повний контроль — обирайте BTCPay Server, але врахуйте витрати на хостинг та адміністрування. У високонавантажених сценаріях NOWPayments обробляє платежі в 2-3 рази швидше за BTCPay завдяки хмарній інфраструктурі.
Типова схема інтеграції
Базовий flow через будь-який процесинг однаковий:
- Користувач натискає «Оплатити криптовалютою».
- Бекенд вашого сайту створює invoice через API процесингу.
- Користувач отримує адресу та суму до оплати.
- Процесинг моніторить блокчейн та повідомляє ваш бекенд через webhook.
- Бекенд верифікує webhook, позначає замовлення як оплачене.
Приклад інтеграції з NOWPayments
# Створення платежу curl -X POST https://api.nowpayments.io/v1/payment \ -H "x-api-key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "price_amount": 99.99, "price_currency": "usd", "pay_currency": "eth", "order_id": "ORDER-12345", "ipn_callback_url": "https://yoursite.com/api/crypto-webhook" }' Відповідь містить pay_address, pay_amount (в ETH за поточним курсом), payment_id. Показуєте користувачу адресу та суму, опціонально — QR-код.
Чому валідація webhook — це не про швидкість, а про безпеку?
Webhook не можна приймати наївно — потрібна верифікація підпису. Без неї зловмисник може імітувати повідомлення та позначити замовлення як оплачене. Всі серйозні процесинги використовують HMAC для підпису запитів.
// PHP приклад для NOWPayments public function handleWebhook(Request $request): JsonResponse { $payload = $request->getContent(); $signature = $request->header('x-nowpayments-sig'); // Верифікація HMAC-SHA512 $expected = hash_hmac( 'sha512', $this->sortPayload($payload), config('services.nowpayments.ipn_secret') ); if (!hash_equals($expected, $signature)) { return response()->json(['error' => 'Invalid signature'], 401); } $data = json_decode($payload, true); // Обробляємо тільки фінальні статуси if ($data['payment_status'] === 'finished') { $this->orderService->markAsPaid($data['order_id'], [ 'tx_hash' => $data['outcome_hash'], 'amount_paid' => $data['actually_paid'], 'currency' => $data['pay_currency'], ]); } return response()->json(['status' => 'ok']); } Статуси, які потрібно обробляти: waiting → confirming → confirmed → sending → finished. Статус failed та expired — окрема логіка (розблокувати товар, повідомити користувача).
Як обробити underpayment без втрати клієнта?
Користувачі часто платять трохи менше потрібного (забули про gas, округлили). У 85% випадків underpayment не перевищує 1%. Потрібна чітка політика: допустиме відхилення ±1–2%, або вимога доплати. NOWPayments має параметр is_fixed_rate — фіксує курс на 20 хвилин, поки користувач оплачує. Це знижує курсові ризики для обох сторін. Ми гарантуємо, що ваші кошти не пропадуть навіть при нестабільному курсі.
Чек-лист для запуску криптоплатежів
- [ ] Вибрано процесинг та створено API-ключ
- [ ] Налаштовано endpoint створення інвойсів
- [ ] Реалізовано webhook-обробник з верифікацією підпису
- [ ] Налаштовано сторінку оплати з QR-кодом та таймером
- [ ] Додано обробку статусів failed/expired
- [ ] Налаштовано логування всіх webhook-подій
- [ ] Проведено тестування на testnet/sandbox
Що потрібно реалізувати на стороні сайту
- Endpoint створення платежу (POST /api/create-crypto-payment)
- Webhook handler з верифікацією підпису
- Сторінка очікування з polling статусу платежу (раз на 10–15 сек)
- Обробка прострочених платежів (timeout 15–60 хв залежно від мережі)
- Логування всіх webhook подій для reconciliation
Що входить в нашу роботу
При замовленні інтеграції під ключ ми надаємо:
- Вибір процесингу з обґрунтуванням (аналіз аудиторії, гео, комісій)
- Розробку REST-ендпоінтів та webhook-обробника
- Налаштування сторінки оплати з QR-кодом та таймером
- Логування всіх статусів для reconciliation
- Документацію по API та інструкцію для адміністратора
- Підтримку після запуску (багфікс, доопрацювання)
Повна інтеграція з нуля до production займає 2–3 дні з урахуванням тестування на testnet/sandbox та edge cases. Отримайте консультацію з налаштування webhook та верифікації підпису. Зв'яжіться з нами — оцінимо ваш проєкт і запропонуємо оптимальне рішення.







