Интеграция криптоплатежного шлюза на сайт

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция криптоплатежного шлюза на сайт
Простая
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Интеграция криптоплатёжного шлюза на сайт

Типичная задача: есть работающий сайт с корзиной и обычным эквайрингом, нужно добавить оплату криптовалютой. Главная ошибка здесь — делать это самостоятельно "с нуля": генерировать адреса, слушать транзакции, обрабатывать confirmations. Для большинства e-commerce проектов это избыточно и создаёт операционную нагрузку. Правильный подход — использовать готовый процессинг (Coinbase Commerce, NOWPayments, CryptoPay, BTCPay Server) и интегрировать его через webhook.

Выбор процессинга

Решение 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 (если аудитория преимущественно американская).

Схема интеграции

Базовый flow через любой процессинг одинаков:

  1. Пользователь нажимает "Оплатить криптовалютой"
  2. Бэкенд вашего сайта создаёт invoice через API процессинга
  3. Пользователь получает адрес и сумму к оплате
  4. Процессинг мониторит блокчейн и уведомляет ваш бэкенд через webhook
  5. Бэкенд верифицирует 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 нельзя принимать наивно — нужна верификация подписи:

// 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']);
}

Статусы, которые нужно обрабатывать: waitingconfirmingconfirmedsendingfinished. Статус failed и expired — отдельная логика (разблокировать товар, уведомить пользователя).

Underpayment и курсовые риски

Пользователи часто платят чуть меньше нужного (забыли про gas, округлили). Нужна явная политика: допустимое отклонение ±1–2%, либо требование доплаты. NOWPayments имеет параметр is_fixed_rate — фиксирует курс на 20 минут, пока пользователь оплачивает. Это снижает курсовые риски для обеих сторон.

Что нужно реализовать на стороне сайта

  • Endpoint создания платежа (POST /api/create-crypto-payment)
  • Webhook handler с верификацией подписи
  • Страница ожидания с polling статуса платежа (раз в 10–15 сек)
  • Обработка истёкших платежей (timeout 15–60 мин в зависимости от сети)
  • Логирование всех webhook событий для reconciliation

Полная интеграция с нуля до production занимает 2–3 дня с учётом тестирования на testnet/sandbox и edge cases.