DOCUMENTAÇÃO DO DESENVOLVEDOR
ERROR CODES
Lista completa dos códigos de erro API TronEnergy com descrições e etapas de resolução.
Cada resposta de erro possui dois campos: error (legível por máquina, estável, nunca muda entre versões) e message (Legível para humanos, pode ser aprimorado com o tempo). Sempre ativar error no seu código. Exibir message para usuários.
Formato de erro
Todas as respostas de erro seguem a mesma estrutura:
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Alguns erros incluem campos adicionais: ref (um ID de referência para a tentativa de delegação) e refund (detalhes sobre um reembolso automático).
Erros de validação
| Código de erro | HTTP | Causa | Resolução |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash não é uma string hexadecimal de 64 caracteres. | Verifique o formato do hash. Deve ter exatamente 64 caracteres hexadecimais, sem prefixo. |
invalid_address | 400 | delegate_to não é um endereço Tron válido. | Valide o endereço com TronWeb () antes de fazer a chamada. |
missing_signature | 400 | Nenhuma assinatura foi fornecida na solicitação. | Assine a mensagem {tx_hash}:{delegate_to} com tronWeb.trx.signMessageV2() da carteira que enviou os TRX . |
invalid_signature | 401 | A assinatura não pôde ser verificada. | Certifique-se de ter assinado corretamente. {tx_hash}:{delegate_to} (hash hexadecimal em minúsculas, dois pontos, endereço Tron exato). |
signature_mismatch | 403 | O endereço do signatário não corresponde ao remetente do pagamento. | A assinatura deve vir da mesma carteira que enviou o pagamento TRX . Carteira diferente = rejeitado. |
Erros de pagamento
| Código de erro | HTTP | Causa | Resolução |
|---|---|---|---|
payment_verification_failed | 404 / 400 | O pagamento on-chain não pôde ser verificado. message O campo descreve a causa específica. | Causas comuns: transação ainda não confirmada (aguarde de 3 a 5 segundos e tente novamente), endereço do destinatário incorreto, transação não é uma transferência TRX , valor inferior ao mínimo de 4 TRX . |
hash_already_used | 409 | Este hash de transação já foi reivindicado. | Cada hash de pagamento só pode ser usado uma vez. Envie um novo pagamento para uma nova delegação. |
Erros de serviço
| Código de erro | HTTP | Causa | Resolução |
|---|---|---|---|
delegation_failed | 400 / 500 | O fornecedor não conseguiu entregar a delegação de energia. | Se a falha ocorreu após a verificação do seu pagamento, um reembolso automático é processado. Verifique o refund objeto. Caso contrário, tente novamente ou entre em contato com o suporte. ref EU IA. |
rate_limited | 429 | Muitas solicitações deste IP | Diminua a velocidade e tente novamente. O limite é de 20 solicitações por segundo. |
server_error | 500 | Erro interno inesperado | Tente novamente após alguns segundos. Se o problema persistir, entre em contato com o suporte. ref se disponível. |
Tratamento de erros no código
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);