Как принимать платежи в USDT (BEP20, BNB Smart Chain)
USDT в сети BNB Smart Chain популярен: переводы быстрые, комиссия сети низкая. Этот гайд показывает минимальную интеграцию с ChainPay: без регистрации и без API-ключа.
Модель
- Ваш бэкенд просит у ChainPay адрес для депозита на каждый заказ или пользователя.
- Плательщик отправляет USDT (BEP20) на этот адрес.
- После 15 подтверждений (значение по умолчанию для BSC) ChainPay переводит средства на ваш собственный кошелёк и вызывает ваш вебхук.
Средства остаются у вас: получатель — ваш forwardAddress.
Создайте адрес
curl -X POST https://api.chainpay.site/deposit-address \
-H 'content-type: application/json' \
-d '{
"ticker": "bep20/usdt",
"callbackUrl": "https://shop.example.com/crypto-webhook?token=SECRET",
"forwardAddress": "0xYourOwnBscWallet...",
"externalReference": "order-123"
}'
ticker: "bep20/usdt"выбирает сеть BNB Smart Chain и токен USDT.forwardAddress— обычный адрес0x…вашего кошелька в BSC.- Повторный запрос с теми же параметрами возвращает тот же адрес, поэтому ретраи безопасны.
Обработайте вебхук
После подтверждения депозита ChainPay отправляет POST на ваш callbackUrl:
{
"status": "confirmed",
"externalReference": "order-123",
"chain": "bsc",
"tokenSymbol": "USDT",
"tokenAddress": "0x55d398326f99059fF775485246999027B3197955",
"isNative": false,
"amount": "25.000000000000000000",
"txHash": "0x…"
}
- Проверяйте значение
tokenиз своегоcallbackUrl: вебхуки не подписываются. - Находите заказ по
externalReferenceи зачисляйте его только приstatus: "confirmed". - Сделайте обработчик идемпотентным: одно событие может прийти несколько раз. См. рекомендации по вебхукам.
Укажите плательщику сеть
Показывайте сеть рядом с адресом: BNB Smart Chain (BEP20). Токен, отправленный по другой сети, не придёт как BEP20-депозит, поэтому понятная подсказка убирает большую часть обращений в поддержку.
Комиссия
Комиссия — 1% плюс небольшая фиксированная часть по реальной стоимости газа сети. Газ в BSC низкий, поэтому небольшие платежи имеют смысл чаще, чем в TRON. Актуальные цифры — на странице Pricing, минимальные суммы — в Networks.