ДОКУМЕНТАЦИЯ ДЛЯ РАЗРАБОТЧИКОВ
ERROR CODES
Полный список кодов ошибок API TronEnergy с описаниями и шагами по устранению.
Каждый ответ об ошибке содержит два поля: error (машинночитаемый, стабильный, никогда не меняется между версиями) и message (Удобочитаемый текст, может быть улучшен со временем). Всегда включайте. error в вашем коде. Отображение message пользователям.
Формат ошибки
Все ответы об ошибках имеют одинаковую структуру:
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Некоторые ошибки связаны с дополнительными полями: ref (идентификатор ссылки для попытки делегирования) и refund (подробности об автоматическом возврате средств).
Ошибки проверки
| Код ошибки | HTTP | Причина | Разрешение |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash не является 64-символьной шестнадцатеричной строкой. | Проверьте формат хеша. Он должен состоять ровно из 64 шестнадцатеричных символов, без префикса. |
invalid_address | 400 | delegate_to не является допустимым адресом Tron . | Перед вызовом функции проверьте адрес с помощью TronWeb (). |
missing_signature | 400 | Подпись в запросе не предоставлена. | Подпишите сообщение {tx_hash}:{delegate_to} с tronWeb.trx.signMessageV2() с кошелька, из которого был отправлен TRX . |
invalid_signature | 401 | Подпись не удалось подтвердить. | Убедитесь, что вы подписали именно так, как указано. {tx_hash}:{delegate_to} (шестнадцатеричный хеш в нижнем регистре, двоеточие, точный адрес Tron ). |
signature_mismatch | 403 | Адрес подписавшего лица не совпадает с адресом отправителя платежа. | Подпись должна быть получена с того же кошелька, с которого был отправлен платеж TRX . Использование другого кошелька приведет к отклонению платежа. |
Ошибки при оплате
| Код ошибки | HTTP | Причина | Разрешение |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Платеж в блокчейне не удалось подтвердить. message В поле описывается конкретная причина. | Распространенные причины: транзакция еще не подтверждена (подождите 3-5 секунд и повторите попытку), неверный адрес получателя, транзакция не является переводом TRX , сумма транзакции меньше минимальной — 4 TRX . |
hash_already_used | 409 | Этот хеш транзакции уже занят. | Каждый хэш платежа может быть использован только один раз. Отправьте новый платеж для нового делегирования. |
Ошибки обслуживания
| Код ошибки | HTTP | Причина | Разрешение |
|---|---|---|---|
delegation_failed | 400 / 500 | Поставщик не смог осуществить передачу прав на энергоснабжение. | Если ошибка произошла после подтверждения вашего платежа, автоматически будет произведен возврат средств. Проверьте refund объект. В противном случае повторите попытку или обратитесь в службу поддержки. ref ИДЕНТИФИКАТОР. |
rate_limited | 429 | Слишком много запросов с этого IP-адреса | Сбавьте скорость и повторите попытку. Лимит — 20 запросов в секунду. |
server_error | 500 | Непредвиденная внутренняя ошибка | Повторите попытку через несколько секунд. Если проблема не исчезнет, обратитесь в службу поддержки. 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);