Приём BNB, ETH и токенов на одном адресе для депозитов
По умолчанию адрес для депозитов следит за одним активом, например bep20/usdt. С multiToken один адрес принимает нативную монету сети и каждый поддерживаемый токен этой сети. Это удобно для кошельков и пополнений, где пользователи отправляют то, что у них есть.
Создайте мультитокенный адрес
curl -X POST https://api.chainpay.site/deposit-address \
-H 'content-type: application/json' \
-d '{
"ticker": "bnb",
"multiToken": true,
"callbackUrl": "https://shop.example.com/crypto-webhook?token=SECRET",
"forwardAddress": "0xYourOwnBscWallet...",
"externalReference": "user-42"
}'
- Используйте голый нативный тикер:
trxдля TRON,bnbдля BNB Smart Chain,ethдля Ethereum. multiToken: trueделает адрес принимающим нативную монету и каждый поддерживаемый токен (TRC20, BEP20, ERC20).- Берите стабильный
externalReferenceна пользователя: адрес постоянный и может принимать много депозитов.
Что сообщает вебхук
Каждый депозит отслеживается и переводится отдельно, а вебхук описывает актив, который действительно поступил:
{
"status": "confirmed",
"externalReference": "user-42",
"chain": "bsc",
"tokenSymbol": "BNB",
"tokenAddress": null,
"isNative": true,
"amount": "0.842000000000000000",
"txHash": "0x…"
}
Для перевода токена isNative — false, а tokenSymbol / tokenAddress идентифицируют токен. Ветвите логику по этим полям:
function handleDeposit(event) {
if (event.status !== 'confirmed') return;
const { externalReference, tokenSymbol, isNative, amount } = event;
// credit `amount` of `tokenSymbol` to the user identified by externalReference
creditBalance(externalReference, tokenSymbol, amount);
}
Что нужно знать
- Неподдерживаемые токены не зачисляются. Перевод токена вне списка поддерживаемых игнорируется — это защищает от спам-токенов.
- Переводы от контрактов в EVM не обнаруживаются. Платёж, отправленный смарт-контрактом (internal transfer, например некоторые выводы с бирж), пока не зачисляется. Обычные переводы кошелёк-кошелёк и переводы токенов работают.
- Комиссия для нативной монеты. Нативные депозиты оплачивают стоимость сети из самого депозита, поэтому очень малые нативные суммы могут считаться пылью.
- Пороги и комиссии применяются отдельно к каждому активу. См. Pricing и Networks.