Чтобы принимать платежи в USDC онлайн, сначала определите конкретное представление токена и сети, которые поддерживает бизнес. Затем создавайте отдельный платёжный запрос для каждого заказа, показывайте покупателю токен, сеть, сумму, адрес и срок действия вместе и меняйте статус заказа только по доверенному серверному результату. Ручной перевод подходит для редких контролируемых продаж, платёжная ссылка — для счетов в переписке, а API invoice — когда сайт должен автоматически связывать оплату с заказом.

РешениеМинимально безопасный ответ
Какой актив принимается?Точный контракт или mint USDC, настроенный для явно указанной сети
Какой способ подключения?Ручной перевод, отслеживаемая ссылка или API invoice в зависимости от процесса продаж
Что видит покупатель?Назначение, точную сумму USDC, сеть, адрес или QR, expiry и живой статус
Когда заказ считается оплаченным?После подтверждённой подходящей транзакции, связанной с конкретным invoice
Куда поступают деньги?В кошелёк продавца, баланс провайдера или fiat payout — модель выбирается заранее
Что делать при несовпадении?Сохранить факты транзакции и передать случай в установленный ручной review

Сначала определите, какой именно USDC вы принимаете

USDC — долларовый стейблкоин, который Circle выпускает в нескольких блокчейнах. Circle описывает его как актив, обеспеченный высоколиквидными денежными средствами и их эквивалентами, и публикует сведения о резервах и ежемесячные отчёты на странице прозрачности. Эта информация помогает оценить актив, но не настраивает безопасный checkout автоматически.

Для каждого маршрута оплаты нужно определить три вещи: блокчейн, контракт или mint токена и адрес получателя. Одного тикера USDC недостаточно. Кошелёк может показывать одинаковое название для native USDC от Circle и для bridged или wrapped-версии. Circle публикует официальные адреса контрактов USDC и отдельно предупреждает, что некоторые представления вроде USDC.e не выпускаются и не обеспечиваются Circle. Если платёжная система ожидает native-контракт, другой токен не становится подходящим из-за совпадения символа.

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

Выберите модель приёма USDC

Фраза «принимать USDC» может описывать разные процессы и пути денег.

МодельКогда подходитЧто остаётся на стороне бизнеса
Ручной перевод на адресНесколько контролируемых платежейИнструкции, проверка, связь с заказом и исключения
Отслеживаемая платёжная ссылкаУслуги и продажи в чате или emailСоздание invoice, кошелёк, возвраты и учёт
API и hosted checkoutEcommerce, SaaS и онлайн-сервисыЛокальный заказ, интеграция, fulfilment и исключения
Кастодиальный процессингБизнес согласен хранить выручку на балансе провайдераДоступ к аккаунту, правила вывода и сверка
Конвертация при зачисленииБизнес хочет получать фиат или другой активДоступность, сроки payout, стоимость конвертации и учёт

Обычный адрес не содержит коммерческого контекста. Если два покупателя переведут по 100 USDC на один кошелёк, блокчейн не сообщит, какой товар или заказ относится к каждой транзакции. Платёжная ссылка даёт обязательству отдельную сумму, срок и статус. API invoice связывает этот запрос с заказом сайта ещё до оплаты.

Необязательно автоматизировать единичные сделки. Консультанту с одним депозитом в месяц может быть удобнее платёжная ссылка. Сервису, который продаёт доступ без участия сотрудника, нужны серверный статус и повторобезопасный fulfilment. Руководство по платёжным ссылкам раскрывает ручной сценарий, а приём криптоплатежей на сайте — автоматизированный.

Выбирайте сети по реальному поведению клиентов

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

  • кошелёк или биржа клиента умеет выводить native USDC именно по этому маршруту;
  • кошелёк продавца принимает и отображает официальный токен;
  • платёжный продукт отслеживает тот же контракт или mint;
  • бизнес знает, в каком токене оплачивается network fee и как отправить возврат;
  • поддержка умеет выбрать правильный explorer и распознать сеть.

Сейчас GramPayBot поддерживает настроенные маршруты USDC в Ethereum, Optimism, BNB Smart Chain, Base, Polygon, Arbitrum и Solana. Не каждый маршрут с обозначением USDC обязательно является native USDC от Circle: например, текущего контракта BNB Smart Chain нет в списке native-контрактов Circle. Считайте каталог продукта и точные адреса контрактов актуальной информацией о маршрутах, а не бессрочным заявлением эмитента. Включайте только сети, доступные в текущей конфигурации проекта и поддерживаемые принимающим кошельком. Подробнее это разобрано в руководстве по кошелькам и сетям.

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

Создавайте отдельный invoice для каждого обязательства

Коммерческий заказ должен появляться раньше платёжного запроса. Сначала создайте заказ магазина, пополнение аккаунта, покупку тарифа или этап проекта и назначьте ему неизменяемый внутренний ID. Затем создайте payment invoice и сохраните полученный invoice ID рядом с заказом.

При интеграции по API передайте ссылку на заказ в машинно-читаемом поле payload. Для создания invoice используйте стабильный Idempotency-Key, чтобы повтор запроса после timeout не создал два активных checkout для одного заказа. Покупатель должен получить только актуальную ссылку. Если цена или состав заказа изменились, отмените старый запрос и создайте новый, а не меняйте контекст вокруг уже отправленного адреса.

Эта связь позволяет разделить два вопроса:

  1. Пришла ли корректная транзакция USDC по ожидаемому маршруту?
  2. Какой заказ бизнеса разрешено исполнить?

На первый отвечает блокчейн. На второй — сохранённая связь заказа и invoice. Полный процесс разобран в материале как связать криптоплатёж с заказом клиента.

Покажите покупателю одну полную инструкцию

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

  • назначение платежа;
  • точная сумма и обозначение USDC;
  • полное название сети;
  • полный адрес и QR-код;
  • оставшееся время действия invoice;
  • текущий статус: ожидание, оплачено, истёк или отменён.

Не отправляйте адрес и сеть разными сообщениями. Несколько EVM-сетей используют одинаковый формат адреса, поэтому кошелёк не обязан автоматически выбрать правильный маршрут. Покупатель должен сверить сеть и видимый адрес перед подписью. При выводе с биржи название withdrawal network должно соответствовать checkout.

Native USDC от Circle обычно использует шесть десятичных знаков, но другое настроенное представление может иметь другую точность; текущий маршрут GramPayBot в BNB Smart Chain использует 18. Покупатель не должен самостоятельно пересчитывать минимальные единицы токена. Показывайте точную сумму из invoice, получайте precision из route catalog, а в коде используйте decimal arithmetic, а не binary float и не придумывайте скрытый допуск.

Подтверждайте оплату на сервере

Страница возврата в браузере — часть интерфейса, а не доказательство расчёта. Вкладка может закрыться до подтверждения, старый success URL можно открыть повторно, а клиентское состояние — изменить. Скриншот и присланный покупателем tx hash тоже недостаточны сами по себе: настоящий hash может относиться к другой сети, версии токена, сумме, адресу или заказу.

При ручной проверке откройте транзакцию в explorer правильной сети и сравните status, контракт токена, recipient и amount с активным invoice. Последовательность есть в чек-листе проверки криптоплатежа. Для автоматизированного сайта используйте авторизованный API lookup или валидный подписанный webhook. Сохраните hash и время оплаты рядом с заказом, чтобы поддержка могла восстановить картину позже.

Обработка webhook должна быть идемпотентной. Система доставки может повторить событие, если первый ответ задержался или потерялся. Проверяйте подпись по исходному raw body, сохраняйте стабильный event или delivery key, быстро возвращайте успешный ответ и допускайте только одно выполнение бизнес-действия. Повторный paid не должен дважды отправить товар, включить два тарифа или два раза пополнить баланс.

Разделяйте custody и settlement

Одни провайдеры получают USDC клиента и зачисляют внутренний баланс. Другие конвертируют платёж в фиат. Direct-to-wallet сервис может отслеживать checkout, пока перевод идёт сразу на публичный адрес продавца. Это разные продукты, даже если у каждого есть кнопка USDC.

Зафиксируйте полный путь средств:

кошелёк клиента → blockchain route → получатель → возможная конвертация → итоговый баланс бизнеса

При прямом зачислении продавец контролирует кошелёк и возвраты, но отвечает за безопасность ключей, network fees, treasury и учёт. Платёжному сервису нужен только публичный адрес — seed phrase или private key передавать нельзя. В кастодиальной модели изучите доступ к аккаунту, сроки вывода, ограничения, conversion spread и возвраты.

Различия нужно проверять на уровне конкретного продукта. Например, текущая документация Shopify по USDC описывает собственные сети, регионы, способы payout и правила refund. Это условия Shopify, а не свойства USDC вообще.

Определите правила для ошибочных и поздних переводов

До запуска решите, что делать, если:

  • native USDC пришёл после expiry;
  • клиент отправил меньше или больше;
  • на адрес пришёл другой контракт токена;
  • USDC отправлен по другой поддерживаемой или неподдерживаемой сети;
  • клиент оплатил старый invoice после изменения заказа;
  • перевод обнаружен, но ещё не достиг правила подтверждения;
  • покупатель запросил возврат после поступления денег в кошелёк продавца.

Не переводите такие случаи автоматически в paid. Сохраните реальные данные транзакции и передайте решение уполномоченному сотруднику. Wrong-network перевод может потребовать специальных действий кошелька или оказаться невосстановимым. Direct-to-wallet gateway не может отправить refund из чужого кошелька — решение и исходящий перевод остаются у продавца.

Выберите поддерживаемый маршрут USDC

Перед включением сети проверьте полную матрицу маршрутов. Сравните native USDC в Ethereum, Base, Polygon и Arbitrum с точным активом отправителя.

Как в этот процесс входит GramPayBot

GramPayBot создаёт invoice в USDC и отслеживает поддерживаемые сети, пока деньги покупателя поступают прямо на публичный кошелёк продавца. Ссылку можно создать вручную в Telegram или веб-кабинете. Сайт может создать invoice через API, передать свой order reference в payload, открыть hosted checkout и получить статус через API или подписанные webhooks.

GramPayBot отвечает за платёжный запрос, checkout и найденную транзакцию. Продавец отвечает за заказ, кошелёк, fulfilment, возвраты, treasury и бухгалтерский процесс. Внутри GramPayBot нет баланса выручки продавца и автоматического fiat payout. Перед автоматической выдачей товара пройдите API quickstart и настройте подписанные webhooks.

Запустите один контролируемый маршрут

Начните с одного продукта, одной сети и небольшого реального перевода. Проверьте, что checkout показывает ожидаемый контракт USDC по выбранному маршруту, адрес принадлежит настроенному кошельку, средства поступают, invoice получает paid, а локальный заказ сохраняет исходный reference и tx hash. Затем протестируйте expiry, повтор webhook и неправильную сумму без автоматического исполнения.

Расширяйте набор сетей только после того, как команда может проследить весь путь от заказа до зачисления и разобрать исключение без догадок. Хороший USDC checkout даёт покупателю одну однозначную инструкцию, а бизнесу — один связанный с заказом и проверенный сервером результат.

Следующий шаг

Автоматизируйте проверку оплаты на сайте

Создавайте invoice для каждого заказа, отправляйте покупателя на hosted checkout и получайте результат, связанный с заказом.

Приём платежей на сайте →