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 erroHTTPCausaResolução
invalid_tx_hash400tx_hash não é uma string hexadecimal de 64 caracteres.Verifique o formato do hash. Deve ter exatamente 64 caracteres hexadecimais, sem prefixo.
invalid_address400delegate_to não é um endereço Tron válido.Valide o endereço com TronWeb () antes de fazer a chamada.
missing_signature400Nenhuma assinatura foi fornecida na solicitação.Assine a mensagem {tx_hash}:{delegate_to} com tronWeb.trx.signMessageV2() da carteira que enviou os TRX .
invalid_signature401A 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_mismatch403O 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 erroHTTPCausaResolução
payment_verification_failed404 / 400O 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_used409Este 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 erroHTTPCausaResolução
delegation_failed400 / 500O 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_limited429Muitas solicitações deste IPDiminua a velocidade e tente novamente. O limite é de 20 solicitações por segundo.
server_error500Erro interno inesperadoTente 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);
Telegram WhatsApp