Основы платёжного шлюза

Что такое криптоплатёжный шлюз

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

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

Что делает криптоплатёжный шлюз

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

  • Создаёт платёж. Ваша система просит платёж на нужную сумму, шлюз возвращает страницу оплаты или адрес, выделенный только под этот заказ.
  • Следит за сетью. Видит поступление перевода, считает подтверждения и решает, когда платёж финальный.
  • Сообщает вам. Уведомляет магазин, обычно через webhook, что заказ 1024 оплачен, и можно отправлять товар или открывать доступ.
  • Хранит и выводит деньги. Поступления попадают на баланс мерчанта, а вы выводите их на свой кошелёк.

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

Как платёж проходит через шлюз

Шлюзы устроены по-разному, но путь одного платежа выглядит так:

  1. Ваш сервер создаёт платёж: номер заказа и сумма, обычно в долларах.
  2. Клиент открывает страницу оплаты и выбирает актив и сеть, например USDT в сети TRON. Мерчант также может заранее задать способ.
  3. Шлюз фиксирует курс на ограниченное время, чтобы сумма к оплате не плавала, пока клиент платит. В Qvard курс закрепляется на один час.
  4. Клиент отправляет точную сумму со своего кошелька на адрес, показанный для этого платежа.
  5. Шлюз следит за сетью, ждёт подтверждений и помечает платёж оплаченным.
  6. Он уведомляет ваш сервер. Ваш код помечает заказ оплаченным и отдаёт товар.
  7. Деньги появляются на балансе мерчанта. Вы выводите их на свой кошелёк вручную или по заданному правилу.

Реальные платежи идут не всегда гладко: клиенты присылают меньше, больше или после истечения курса. Хороший шлюз для каждого случая имеет понятный статус, а не оставляет вам сверку вручную. В Qvard статусы платежа: wait, partial, completed и rejected.

Шлюз, кошелёк, биржа и процессинг: в чём разница

Эти понятия часто путают:

  • Кошелёк. Хранит ключи, позволяет отправлять и получать. Не сопоставляет платежи с заказами и не уведомляет магазин.
  • Биржа. Обменивает один актив на другой. У некоторых бирж есть инструменты для мерчантов, но основная задача у них торговля.
  • Платёжный шлюз. Создаёт и отслеживает платежи под ваши заказы и сообщает их статус. Именно о нём этот материал.
  • Процессинг или эквайринг. В карточных платежах компания, которая проводит деньги между банками. В крипте слово «эквайринг» употребляют вольно для всего сервиса; чем они отличаются, разбираем в материале криптоэквайринг и криптоплатёжный шлюз.

Кастодиальный или некастодиальный

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

В кастодиальном шлюзе входящие платежи идут на адреса, которыми управляет провайдер, и зачисляются на ваш баланс мерчанта. Затем вы их выводите. Так проще сверка, и шлюз может предложить автоматический вывод, но до вывода вы зависите от провайдера, поэтому его условия вывода важны.

В некастодиальной модели платежи идут прямо на ваш кошелёк. Ключи остаются у вас, а провайдер только отслеживает платёж. Это снижает риск контрагента и переносит управление ключами на вас.

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

Стейблкоины и сети: почему сеть важна

Один и тот же актив существует в нескольких блокчейнах. USDT, например, есть в сетях TRON (TRC-20), Ethereum (ERC-20) и BNB Smart Chain (BEP-20). Перевод засчитывается только в той сети, которую запросила страница оплаты, а комиссии и скорость в разных сетях отличаются.

Поэтому шлюз показывает актив и сеть вместе, а выбор клиента должен быть явным. Для мерчанта это означает:

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

Сейчас Qvard принимает USDT и USDC в основных сетях, а также нативные BTC и LTC; TON в планах. Полный список на странице монеты и сети.

Что проверить перед выбором шлюза

Короткий список, который отделяет рабочий шлюз от рискованного:

  • Сети и активы. Поддерживает ли он те, которыми действительно пользуются ваши клиенты?
  • Комиссии. Что берёт шлюз, а что составляет отдельная комиссия сети? Кто что платит?
  • Деньги и вывод. У кого деньги, как устроен вывод, есть ли лимиты и нужен ли вам вывод в фиат?
  • Качество API. Можно ли безопасно создать платёж повторно с тем же номером заказа? Понятны ли ошибки? Повторяется ли webhook, если ваш сервер был недоступен?
  • Нестандартные платежи. Как обрабатываются недоплата, переплата и просроченные платежи?
  • Тестирование. Можно ли пройти сценарий без реальных денег?
  • Поддержка и документация. Кто отвечает, если платёж завис?

Подробнее этот список разобран в материале как выбрать провайдера криптоплатежей.

Как выглядит минимальная интеграция

Создание платежа это один запрос. В Qvard вы отправляете свой номер заказа и сумму в долларах США и получаете идентификатор платежа и ссылку на страницу оплаты. Перенаправляете клиента туда, а выбор актива и отправка перевода происходят на этой странице.

Передаваемый вами id это номер вашего заказа: повторный запрос с тем же id и тем же способом оплаты возвращает уже созданный платёж, а не создаёт дубль, поэтому повторы безопасны. Когда клиент оплатит, Qvard отправит на ваш сервер webhook с тем же id и статусом платежа. Полный сценарий с кодом для бэкенда есть в материале как принимать криптоплатежи на сайте, справочник на странице разработчикам.

curlPOST /api/v1/payment
curl -X POST https://api.qvard.com/api/v1/payment \
  -H "x-api-key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "id": "order_1024", "price": 149.99 }'

# 201 Created
{ "id": "8f3k2a1c", "redirectUrl": "https://my.qvard.com/pay/8f3k2a1c" }

Типичные ошибки

  • Верить возврату клиента на сайт. Возврат на страницу «спасибо» не доказывает, что клиент заплатил. Помечайте заказ оплаченным только когда шлюз сообщил финальный статус.
  • Игнорировать частичную оплату. Если клиент прислал меньше суммы, заказ не оплачен. Заранее решите, просите ли вы доплатить или возвращаете деньги.
  • Не проверить повтор webhook. Если ваш сервер ответил ошибкой, уведомление должно повториться, а обработчик должен спокойно переживать одно и то же событие дважды.
  • Считать цену в волатильном активе. Указывайте цену в долларах и позвольте клиенту платить стейблкоином, если не готовы нести ценовой риск.
  • Не проверить вывод. Выведите небольшую сумму, прежде чем полагаться на шлюз в реальной выручке.

Где здесь Qvard

Qvard это кастодиальный криптоплатёжный шлюз для бизнеса. Сегодня вы создаёте платёж через API, отправляете клиента на страницу оплаты, получаете финальный статус через webhook и выводите с баланса мерчанта на кошелёк. Остальные способы приёма, такие как платёжные ссылки, встроенное окно, SDK и кассовый терминал, в разработке. Живую страницу оплаты можно посмотреть на демо-счёте ещё до создания аккаунта, а как формируются комиссии, объясняет страница тарифов.

FAQ

Криптоплатёжный шлюз и криптокошелёк это одно и то же?

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

Можно ли отменить криптоплатёж?

Нет. Подтверждённый перевод в блокчейне окончателен. Чтобы вернуть деньги клиенту, вы отправляете новый перевод сами, поэтому условия возврата стоит определить до начала приёма платежей.

Сколько времени занимает подтверждение платежа?

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

Нужно ли что-то разрабатывать на моей стороне?

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

Похожие статьи

Похожие статьи