Структура Payload
Каждое событие содержит объектdata с данными о транзакции на момент события. Структура payload одинакова для всех типов событий, но значения полей различаются в зависимости от типа транзакции и этапа её жизненного цикла.
Пояснение полей сумм
Есть четыре поля, связанных с суммами, и они имеют разное назначение в зависимости от типа транзакции.Вывод (Buy)
| Поле | Значение | Пример |
|---|---|---|
requestedAmount | Чистая сумма, которую пользователь получит в блокчейне | "25" TRX |
expectedAmount | Общая сумма с комиссией сети: requestedAmount + networkFee | "25.5" TRX |
amount | Фактически отправленная сумма (сообщается после отправки в блокчейн) | "25" TRX |
usdtTotal | USDT зарезервированные с баланса, включая буфер удержания 1.25% | "7.52" USDT |
includeFeeInAmount: true, расчёт меняется на обратный: expectedAmount = исходная сумма, requestedAmount = исходная сумма - networkFee. Соотношение всегда: expectedAmount = requestedAmount + networkFee.
usdtTotal рассчитывается так: конвертированный expectedAmount в USDT по предварительному курсу, затем добавленный буфер удержания 1.25%. Это общая сумма USDT, списываемая с баланса мерчанта. После конвертации излишек удержания возвращается.
Пример:
Пополнение (Sale)
| Поле | Значение | Пример |
|---|---|---|
requestedAmount | Сумма, которую интегратор ожидает получить в качестве депозита | "0.001" BTC |
expectedAmount | То же, что requestedAmount | "0.001" BTC |
amount | Кумулятивная фактическая сумма депозитов по всем частичным внесениям | "0.0012" BTC |
receivedAmount | Сумма отдельного депозита в receivedCurrency (только при deposit_received) | "0.0005" BTC |
usdtTotal | Кумулятивная сумма USDT, зачисленная на баланс мерчанта (после комиссий) | "45.30" USDT |
requestedAmount и expectedAmount всегда одинаковы. Поле amount показывает фактическую общую полученную сумму. Сравнивая amount с expectedAmount, система определяет статус транзакции: Paid (ровная сумма), Overpaid (сумма больше), Underpaid (сумма меньше).
Пример:
| Поле | Вывод | Пополнение |
|---|---|---|
requestedAmount | Чистая сумма к получению (без комиссии) | Ожидаемая сумма депозита |
expectedAmount | Полная сумма (с комиссией сети) | То же, что requestedAmount |
amount | Расчитанная сумма | Кумулятивная фактическая сумма депозитов |
usdtTotal | Зарезервированные USDT (с удержанием 1.25%) | Кумулятивная сумма зачисленных USDT |
Значения статусов
| Status | Используется в | Описание |
|---|---|---|
Queued | Вывод | В очереди на обработку |
New | Пополнение | Заказ создан, ожидается депозит |
Waiting | Пополнение | Подтверждение в блокчейне в процессе |
Paid | Пополнение | Депозит соответствует ожидаемой сумме |
Overpaid | Пополнение | Депозит превышает ожидаемую сумму |
Underpaid | Пополнение | Депозит меньше ожидаемой суммы |
Canceled | Оба | Транзакция отменена / отклонена / ошибка |
CurrencyMismatch | Пополнение | Внесена неверная криптовалюта |
CanceledButPaid | Пополнение | Заказ просрочен/отклонён, но получен точный депозит |
CanceledButOverpaid | Пополнение | Заказ просрочен/отклонён, но получена переплата |
CanceledButUnderpaid | Пополнение | Заказ просрочен/отклонён, но получена недоплата |
Логика валют
Полеcurrency отображает то, что ожидалось, а не то, что было фактически получено:
- Вывод: целевая криптовалюта, которая покупается (например,
"TRX","BTC") - Пополнение: ожидаемая криптовалюта для депозита из конфигурации заказа (например,
"BTC")
receivedCurrency (см. ниже).
Поля получения (receivedCurrency, receivedNetwork, receivedAmount)
Эти три поля отображают то, что фактически было внесено в блокчейн для конкретного депозита. Они заполняются только для события deposit_received и всегда null для всех остальных событий.
receivedAmountфактически зачисленная сумма, а НЕ кумулятивный итог (используйтеamountдля кумулятивного)receivedCurrency— фактически зачисленная криптовалютаreceivedNetwork— сеть фактически зачисленной криптовалюты
| Сценарий | receivedCurrency | receivedNetwork | receivedAmount |
|---|---|---|---|
| Вывод (любое событие) | null | null | null |
Пополнение — deposit_received | фактический тикер криптовалюты | сеть депозита | сумма отдельного депозита |
| Пополнение — все остальные события | null | null | null |
Детали полей по событиям
События вывода
| Поле | created | completed | declined | failed | canceled |
|---|---|---|---|---|---|
status | Queued | финальный статус | Canceled | Canceled | Canceled |
amount | null | финальная сумма | из БД | из БД | из БД |
hash | "" | хеш блокчейна | хеш | может быть "" | может быть "" |
usdtTotal | сумма резерва | финальное значение | из БД | из БД | из БД |
exchangeRate | предварительный курс | фактический курс | из БД | из БД | из БД |
dealFee | "0" | рассчитано | из БД | из БД | из БД |
cancelReason | null | null | причина | сообщение об ошибке | причина отката |
completedAt | null | метка времени | null | null | null |
received* | null | null | null | null | null |
События пополнения
| Поле | created | confirmation_started | deposit_received | completed / overpaid / underpaid / currency_mismatch | declined | canceled |
|---|---|---|---|---|---|---|
status | New | Waiting | зависит | зависит | зависит | Canceled |
currency | ожидаемая криптовалюта | ожидаемая криптовалюта | ожидаемая криптовалюта | ожидаемая криптовалюта | ожидаемая криптовалюта | ожидаемая криптовалюта |
receivedCurrency | null | null | фактическая криптовалюта | null | null | null |
receivedNetwork | null | null | сеть депозита | null | null | null |
receivedAmount | null | null | сумма отдельного депозита | null | null | null |
amount | null | null | кумулятивная | кумулятивная | кумулятивная или null | null |
hash | "" | хеш блокчейна | хеш | хеш | хеш | "" |
usdtTotal | null | null | кумулятивная USDT | кумулятивная USDT | кумулятивная или null | null |
exchangeRate | null | null | взвешенное среднее | взвешенное среднее | из БД | null |
dealFee | null | null | рассчитано | рассчитано | из БД | null |
completedAt | null | null | если доступно | если доступно | если доступно | null |
cancelReason | null | null | null | null | null | null |
deposit_receivedвсегда отправляется вместе с одним из:completed,overpaid,underpaidилиcurrency_mismatchdeclinedможет содержать или не содержать данные депозита, в зависимости от того, были ли получены депозиты до отклонения- Суммы пополнения являются кумулятивными по нескольким депозитам (каждый вебхук
was_final_exchangeдобавляется к общей сумме) - Для
currency_mismatchполеcurrencyпоказывает, что ожидалось, аreceivedCurrency— что было фактически отправлено