DOCUMENTACIÓN PARA DESARROLLADORES
ERROR CODES
Lista completa de códigos de error API TronEnergy con descripciones y pasos para su resolución.
Cada respuesta de error tiene dos campos: error (legible por máquina, estable, nunca cambia entre versiones) y message (legible para humanos, puede mejorarse con el tiempo). Encienda siempre error en tu código. Mostrar message a los usuarios.
Formato de error
Todas las respuestas de error siguen la misma estructura:
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Algunos errores incluyen campos adicionales: ref (un ID de referencia para el intento de delegación) y refund (detalles sobre el reembolso automático).
Errores de validación
| Código de error | HTTP | Causa | Resolución |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash no es una cadena hexadecimal de 64 caracteres. | Verifique el formato del hash. Debe tener exactamente 64 caracteres hexadecimales, sin prefijo. |
invalid_address | 400 | delegate_to no es una dirección Tron válida | Valida la dirección con TronWeb .isAddress() antes de realizar la llamada. |
missing_signature | 400 | No se proporcionó ninguna firma en la solicitud. | Firma el mensaje {tx_hash}:{delegate_to} con tronWeb.trx.signMessageV2() desde la billetera que envió el TRX . |
invalid_signature | 401 | No se pudo verificar la firma. | Asegúrese de haber firmado exactamente {tx_hash}:{delegate_to} (hash hexadecimal en minúsculas, dos puntos, dirección exacta Tron ). |
signature_mismatch | 403 | La dirección del firmante no coincide con la del remitente del pago. | La firma debe provenir de la misma billetera que envió el pago TRX . Si proviene de una billetera diferente, será rechazada. |
Errores de pago
| Código de error | HTTP | Causa | Resolución |
|---|---|---|---|
payment_verification_failed | 404 / 400 | El pago en la cadena no pudo ser verificado. message El campo describe la causa específica. | Causas comunes: la transacción aún no está confirmada (espere de 3 a 5 segundos e inténtelo de nuevo), dirección del destinatario incorrecta, la transacción no es una transferencia TRX , por debajo del mínimo de 4 TRX . |
hash_already_used | 409 | Este hash de transacción ya ha sido reclamado. | Cada código hash de pago solo se puede usar una vez. Envíe un nuevo pago para una nueva delegación. |
Errores del servicio
| Código de error | HTTP | Causa | Resolución |
|---|---|---|---|
delegation_failed | 400 / 500 | El proveedor no pudo entregar la delegación de energía. | Si el fallo se produjo después de que se verificara su pago, se pondrá en cola un reembolso automático. Compruebe el refund objeto. De lo contrario, vuelva a intentarlo o póngase en contacto con el soporte técnico. ref IDENTIFICACIÓN. |
rate_limited | 429 | Demasiadas solicitudes desde esta IP. | Reduce la velocidad e inténtalo de nuevo. El límite es de 20 solicitudes por segundo. |
server_error | 500 | Error interno inesperado | Inténtelo de nuevo después de unos segundos. Si persiste, póngase en contacto con el soporte técnico. ref si está disponible. |
Manejo de errores en el 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);