ENTWICKLER-DOKUMENTATION
TronEnergy API Fehlercodes & Fehlerbehebung
Vollständige Liste der TronEnergy API Fehlercodes mit Beschreibungen, Ursachen und Lösungsschritten. Behandelt Zahlungsverifizierung, Signatur und Delegationsfehler.
Jede Fehlerantwort hat zwei Felder: error (maschinenlesbar, stabil, ändert sich zwischen Versionen nicht) und message (für Menschen lesbar, kann im Laufe der Zeit verbessert werden). Wechsle in deinem Code immer zu error. Zeige message den Benutzern.
Fehlerformat
Alle Fehlerantworten folgen der gleichen Struktur:
Fehlerantwort
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Einige Fehler enthalten zusätzliche Felder: ref (eine Referenz-ID für den Delegationsversuch) und refund (Details zu einer automatischen Rückerstattung).
Validierungsfehler
| Fehlercode | HTTP | Ursache | Lösung |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash ist keine 64-stellige Hexadezimalzeichenkette | Überprüfe das Hash-Format. Muss genau 64 Hexadezimalzeichen sein, kein Präfix. |
invalid_address | 400 | delegate_to ist keine gültige Tron-Adresse | Validiere die Adresse mit TronWeb.isAddress() vor dem Aufruf. |
missing_signature | 400 | Keine Signatur in der Anfrage vorhanden | Signiere die Nachricht {tx_hash}:{delegate_to} mit tronWeb.trx.signMessageV2() aus der Wallet, die das TRX gesendet hat. |
invalid_signature | 401 | Signatur konnte nicht verifiziert werden | Stelle sicher, dass du genau {tx_hash}:{delegate_to} signiert hast (Hexadezimal-Hash in Kleinbuchstaben, Doppelpunkt, exakte Tron-Adresse). |
signature_mismatch | 403 | Unterzeichner-Adresse stimmt nicht mit dem Zahlungssender überein | Die Signatur muss von der gleichen Wallet kommen, die das TRX gesendet hat. Andere Wallet = abgelehnt. |
Zahlungsfehler
| Fehlercode | HTTP | Ursache | Lösung |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Die On-Chain-Zahlung konnte nicht verifiziert werden. Das message Feld beschreibt die spezifische Ursache. | Häufige Ursachen: Transaktion noch nicht bestätigt (warte 3–5 Sekunden und versuche es erneut), falsche Empfängeradresse, Transaktion ist keine TRX-Überweisung, unter dem Minimum von 4 TRX. |
hash_already_used | 409 | Dieser tx Hash wurde bereits eingelöst | Jeder Zahlungs-Hash kann nur einmal verwendet werden. Sende eine neue Zahlung für eine neue Delegation. |
Servicefehler
| Fehlercode | HTTP | Ursache | Lösung |
|---|---|---|---|
delegation_failed | 400 / 500 | Anbieter konnte die Energie-Delegation nicht bereitstellen | Falls der Fehler nach Verifizierung deiner Zahlung auftrat, wird eine automatische Rückerstattung eingeleitet. Überprüfe das refund Objekt. Versuchen Sie es andernfalls erneut, oder kontaktieren Sie den Support mit dem ref ID. |
rate_limited | 429 | Zu viele Anfragen von dieser IP-Adresse | Verlangsamen Sie das Tempo und versuchen Sie es erneut. Das Limit beträgt 20 Anfragen pro Sekunde. |
server_error | 500 | Unerwarteter interner Fehler | Versuchen Sie es nach einigen Sekunden erneut. Bei Fortbestand kontaktieren Sie den Support mit dem ref falls verfügbar. |
Fehlerbehandlung im Code
empfohlene Fehlerbehandlung
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);