Каждый ответ об ошибке содержит два поля: error (машинночитаемый, стабильный, никогда не меняется между версиями) и message (Удобочитаемый текст, может быть улучшен со временем). Всегда включайте. error в вашем коде. Отображение message пользователям.

Формат ошибки

Все ответы об ошибках имеют одинаковую структуру:

error response
{ "error": "error_code_here", "message": "Human-readable explanation" }

Некоторые ошибки связаны с дополнительными полями: ref (идентификатор ссылки для попытки делегирования) и refund (подробности об автоматическом возврате средств).

Ошибки проверки

Код ошибкиHTTPПричинаРазрешение
invalid_tx_hash400tx_hash не является 64-символьной шестнадцатеричной строкой.Проверьте формат хеша. Он должен состоять ровно из 64 шестнадцатеричных символов, без префикса.
invalid_address400delegate_to не является допустимым адресом Tron .Перед вызовом функции проверьте адрес с помощью TronWeb ().
missing_signature400Подпись в запросе не предоставлена.Подпишите сообщение {tx_hash}:{delegate_to} с tronWeb.trx.signMessageV2() с кошелька, из которого был отправлен TRX .
invalid_signature401Подпись не удалось подтвердить.Убедитесь, что вы подписали именно так, как указано. {tx_hash}:{delegate_to} (шестнадцатеричный хеш в нижнем регистре, двоеточие, точный адрес Tron ).
signature_mismatch403Адрес подписавшего лица не совпадает с адресом отправителя платежа.Подпись должна быть получена с того же кошелька, с которого был отправлен платеж TRX . Использование другого кошелька приведет к отклонению платежа.

Ошибки при оплате

Код ошибкиHTTPПричинаРазрешение
payment_verification_failed404 / 400Платеж в блокчейне не удалось подтвердить. message В поле описывается конкретная причина.Распространенные причины: транзакция еще не подтверждена (подождите 3-5 секунд и повторите попытку), неверный адрес получателя, транзакция не является переводом TRX , сумма транзакции меньше минимальной — 4 TRX .
hash_already_used409Этот хеш транзакции уже занят.Каждый хэш платежа может быть использован только один раз. Отправьте новый платеж для нового делегирования.

Ошибки обслуживания

Код ошибкиHTTPПричинаРазрешение
delegation_failed400 / 500Поставщик не смог осуществить передачу прав на энергоснабжение.Если ошибка произошла после подтверждения вашего платежа, автоматически будет произведен возврат средств. Проверьте refund объект. В противном случае повторите попытку или обратитесь в службу поддержки. ref ИДЕНТИФИКАТОР.
rate_limited429Слишком много запросов с этого IP-адресаСбавьте скорость и повторите попытку. Лимит — 20 запросов в секунду.
server_error500Непредвиденная внутренняя ошибкаПовторите попытку через несколько секунд. Если проблема не исчезнет, обратитесь в службу поддержки. ref если имеется.

Обработка ошибок в коде

recommended error handling
const result = await fetch('https://api.tronnrg.com/delegate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tx_hash: hash, delegate_to: addr, signature: sig }), }).then(r => r.json()); if (result.error) { switch (result.error) { case 'payment_verification_failed': // Most common: tx not yet indexed. Wait 3s and retry once. await new Promise(r => setTimeout(r, 3000)); return retry(hash, addr); case 'hash_already_used': // Already claimed. Don't retry. throw new Error('Duplicate delegation attempt'); case 'signature_mismatch': // Signer != payment sender. Sign with the same key. throw new Error('Signer does not match payment sender'); case 'delegation_failed': // Refund queued automatically if payment was verified. if (result.refund) console.log('Refund queued:', result.refund); break; default: console.error(result.error, result.message); } return; } // Success console.log('Delegated:', result.energy, 'energy'); console.log('Delegation tx:', result.delegations[0].tx); // verify on TronScan console.log('Ref:', result.ref);
Telegram WhatsApp