CChainPay
Войти

Приём 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"
  }'

Что сообщает вебхук

Каждый депозит отслеживается и переводится отдельно, а вебхук описывает актив, который действительно поступил:

{
  "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);
}

Что нужно знать

См. также