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 errorHTTPCausaResolución
invalid_tx_hash400tx_hash no es una cadena hexadecimal de 64 caracteres.Verifique el formato del hash. Debe tener exactamente 64 caracteres hexadecimales, sin prefijo.
invalid_address400delegate_to no es una dirección Tron válidaValida la dirección con TronWeb .isAddress() antes de realizar la llamada.
missing_signature400No 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_signature401No 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_mismatch403La 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 errorHTTPCausaResolución
payment_verification_failed404 / 400El 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_used409Este 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 errorHTTPCausaResolución
delegation_failed400 / 500El 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_limited429Demasiadas solicitudes desde esta IP.Reduce la velocidad e inténtalo de nuevo. El límite es de 20 solicitudes por segundo.
server_error500Error interno inesperadoInté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);
Telegram WhatsApp