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

> Практическое руководство по добавлению криптоплатежей на ваш сайт или приложение. От выбора шлюза до написания первого API-вызова.

Source: https://mutopay.com/ru/blog/how-to-accept-crypto-payments/
Language: ru
Date: 2026-03-17

---

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

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

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

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

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

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

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

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

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

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

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

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

```bash
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 вебхука вашего канала. Полезная нагрузка содержит всё необходимое:

```json
{
  "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,5% за транзакцию. Без ежемесячных платежей, без минимумов.

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

## Что дальше

Когда вы начнёте обрабатывать платежи, вы захотите:
- Отслеживать платежи в [панели управления](/dashboard)
- Протестировать вашу webhook-интеграцию в Настройки → Каналы → Тест вебхука
- Добавить [ссылку «Оплатите мне»](/ru/blog/pay-me-links/) для чаевых и открытых платежей
- Изучить [управление каналами](/ru/blog/channel-management/) для многобрендовых или многоклиентских настроек

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