DOCUMENTS POUR DÉVELOPPEURS
ERROR CODES
Liste complète des codes d'erreur API TronEnergy avec descriptions et étapes de résolution.
Chaque réponse d'erreur comporte deux champs : error (lisible par machine, stable, ne change jamais d'une version à l'autre) et message (lisible par l'homme, peut être amélioré au fil du temps). Toujours allumer error dans votre code. Afficher message aux utilisateurs.
Format d'erreur
Toutes les réponses d'erreur suivent la même structure :
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Certaines erreurs incluent des champs supplémentaires : ref (un identifiant de référence pour la tentative de délégation) et refund (détails concernant un remboursement automatique).
Erreurs de validation
| Code d'erreur | HTTP | Cause | Résolution |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash n'est pas une chaîne hexadécimale de 64 caractères. | Vérifiez le format du hachage. Il doit comporter exactement 64 caractères hexadécimaux, sans préfixe. |
invalid_address | 400 | delegate_to n'est pas une adresse Tron valide | Validez l'adresse avec TronWeb () avant d'appeler. |
missing_signature | 400 | Aucune signature n'a été fournie dans la demande. | Signez le message {tx_hash}:{delegate_to} avec tronWeb.trx.signMessageV2() du portefeuille qui a envoyé le TRX . |
invalid_signature | 401 | La signature n'a pas pu être vérifiée. | Assurez-vous d'avoir signé exactement {tx_hash}:{delegate_to} (hash hexadécimal en minuscules, deux-points, adresse Tron exacte). |
signature_mismatch | 403 | L'adresse du signataire ne correspond pas à celle de l'expéditeur du paiement. | La signature doit provenir du même portefeuille que celui ayant effectué le paiement TRX . Portefeuille différent = refus. |
Erreurs de paiement
| Code d'erreur | HTTP | Cause | Résolution |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Le paiement sur la blockchain n'a pas pu être vérifié. message Ce champ décrit la cause spécifique. | Causes fréquentes : transaction non encore confirmée (attendez 3 à 5 secondes et réessayez), adresse du destinataire incorrecte, transaction qui n’est pas un transfert TRX , montant inférieur au minimum de 4 TRX . |
hash_already_used | 409 | Ce hachage de transaction a déjà été réclamé. | Chaque code de hachage de paiement ne peut être utilisé qu'une seule fois. Veuillez effectuer un nouveau paiement pour une nouvelle délégation. |
Erreurs de service
| Code d'erreur | HTTP | Cause | Résolution |
|---|---|---|---|
delegation_failed | 400 / 500 | Le fournisseur n'a pas pu assurer la délégation énergétique. | Si l'échec est survenu après la vérification de votre paiement, un remboursement automatique est en cours. Consultez la section « À vérifier ». refund objet. Sinon, réessayez ou contactez le support avec l'objet. ref IDENTIFIANT. |
rate_limited | 429 | Trop de requêtes provenant de cette adresse IP | Ralentissez et réessayez. La limite est de 20 requêtes par seconde. |
server_error | 500 | Erreur interne inattendue | Réessayez dans quelques secondes. Si le problème persiste, contactez l'assistance. ref si disponible. |
Gestion des erreurs dans le code
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);