← Вернуться в блог

Как принимать криптоплатежи на вашем сайте

· 4 min read
руководство интеграция

Итак, вы хотите принимать крипту на своём сайте. Хорошие новости: это проще, чем вы думаете. Плохие новости: большинство руководств всё излишне усложняют. Вот версия без воды.

Что вам действительно нужно

Забудьте о запуске собственного узла или ручном управлении кошельками. Криптоплатёжный шлюз берёт на себя сложные части: генерацию платёжных адресов, мониторинг блокчейнов для подтверждений и конвертацию токенов.

Вам нужны три вещи:

  1. Адрес кошелька для получения средств
  2. Платёжный шлюз с API
  3. Около 20 минут

Шаг 1: Выберите расчётную валюту

Это первое решение, которое имеет значение. Хотите ли вы получать ETH? USDC? Что-то смешанное?

Большинство мерчантов выбирают стейблкоины (USDC, USDT, DAI), потому что их стоимость не прыгает на 10% за ночь. С MutoPay ваши клиенты могут платить любым токеном, но вы всегда получаете выбранный стейблкоин. Проблема решена до её возникновения.

Шаг 2: Создайте канал и получите API-ключ

В панели управления MutoPay перейдите в Настройки → Каналы и нажмите + Новый канал. Дайте ему название (например, «Мой сайт») и при желании укажите URL вебхука. API-ключ (с префиксом ep_...) показывается один раз — скопируйте его.

Этот ключ идентифицирует ваш канал и аутентифицирует ваши API-вызовы. У каждого канала есть свой ключ, URL вебхука, и он может иметь собственный адрес для расчётов.

Шаг 3: Создайте платёж

Один API-вызов. Вот и всё.

curl -X POST https://mutopay.com/api/payments \
  -H "X-API-Key: ep_your_channel_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "amount_usd": 50.00,
    "description": "Заказ №1234 — Синий виджет",
    "external_id": "order_1234",
    "callback_url": "https://yoursite.com/order/1234/complete"
  }'

В ответ вы получаете объект платежа с id. Перенаправьте клиента на mutopay.com/pay/{id}.

Поля, которые вы можете задать:

ПолеОписание
amount_usdСумма в USD
amountСумма в другой валюте (используется с currency)
currencyКод валюты, если не USD (например, EUR, GBP)
descriptionОтображается клиенту на странице оплаты
external_idВаша внутренняя ссылка (например, ID заказа)
callback_urlКуда перенаправить клиента после оплаты
metadataПроизвольный JSON для вашего использования
expires_in_minutesОт 15 до 10080 (7 дней); по умолчанию 60

Используйте либо amount_usd, либо amount + currency, но не оба.

Шаг 4: Обработайте вебхук

Когда платёж завершается (или не выполняется, или истекает), MutoPay отправляет POST на URL вебхука вашего канала. Полезная нагрузка содержит всё необходимое:

{
  "event": "payment.completed",
  "payment_id": "pay_abc123",
  "status": "completed",
  "amount_usd": 50.00,
  "currency": "USD",
  "dest_token": "USDC",
  "dest_chain_id": "137",
  "dest_amount": "50000000",
  "dest_decimals": 6,
  "external_id": "order_1234",
  "tx_hash": "0xabc...",
  "completed_at": "2026-04-12T14:30:00Z",
  "timestamp": "2026-04-12T14:30:01Z"
}

Проверяйте подпись. Каждый вебхук содержит заголовок X-MutoPay-Signature с хэшем HMAC-SHA256 тела JSON, подписанным webhook-секретом вашего канала (виден в панели управления). Формат: sha256=<hex>.

Разбирайте сумму расчёта. dest_amount указан в единицах токена. Разделите на 10^dest_decimals, чтобы получить читаемое значение. В приведённом примере: 50000000 / 10^6 = 50,00 USDC.

События вебхуков: payment.completed, payment.failed, payment.expired, payment.underpaid, payment.kyc_required, payment.needs_manual_check.

Неудавшиеся доставки повторяются 5 раз с экспоненциальной задержкой (1 мин → 5 мин → 30 мин → 2 ч → 12 ч).

Шаг 5: Покажите клиенту страницу оплаты

У вас есть два варианта:

Перенаправление — отправьте клиента на хостируемую страницу оплаты по адресу mutopay.com/pay/{id}. Он выбирает токен, подключает кошелёк и платит. Никакой работы с фронтендом с вашей стороны. Мобильные клиенты видят QR-код для удобного депозита.

Опрос — используйте ID платежа для создания собственного UI. Вызывайте GET /api/payments/{id}/status для лёгких обновлений статуса.

Большинство мерчантов начинают с подхода перенаправления и настраивают позже.

Частые вопросы

Что если клиент платит токеном в другом блокчейне? Шлюз автоматически обрабатывает кросс-чейн бриджинг. Клиент платит ARB в Arbitrum — вы получаете USDC в Polygon. Ему не нужно об этом думать.

Как насчёт возвратов? Криптоплатежи необратимы на уровне протокола. Обрабатывайте возвраты, отправляя отдельную транзакцию обратно на кошелёк клиента.

Сколько времени занимают платежи? Прямые переводы стейблкоинов подтверждаются за секунды. Кросс-чейн свопы обычно расчитываются менее чем за 2 минуты.

Какая комиссия? MutoPay берёт 0,25% за транзакцию. Без ежемесячных платежей, без минимумов.

Какие блокчейны поддерживаются? Ethereum, Polygon, Arbitrum, Base, Optimism, Avalanche, BSC, TON, Solana и Tron. Клиенты могут платить 1 000+ токенами во всех 10 сетях.

Что дальше

Когда вы начнёте обрабатывать платежи, вы захотите:

Вся интеграция занимает около 20 минут у разработчика с опытом API-работы. Знание блокчейна не требуется.