Bawat error response ay may dalawang fields: error (machine-readable, stable, hindi kailanman nagbabago sa pagitan ng versions) at message (human-readable, maaaring mapabuti sa paglipas ng panahon). Laging mag-switch sa error sa iyong code. Ipakita ang message sa mga users.

Error Format

Lahat ng error responses ay sumusunod sa parehong structure:

error response
{ "error": "error_code_here", "message": "Human-readable explanation" }

Ang ilang errors ay may karagdagang fields: ref (reference ID para sa delegation attempt) at refund (detalye tungkol sa automatic refund).

Validation Errors

Error CodeHTTPSanhiSolusyon
invalid_tx_hash400tx_hash ay hindi 64-character hex stringSuriin ang hash format. Dapat eksaktong 64 hex characters, walang prefix.
invalid_address400delegate_to ay hindi valid na Tron addressI-validate ang address gamit ang TronWeb.isAddress() bago mag-call.
missing_signature400Walang signature na ibinigay sa requestI-sign ang message {tx_hash}:{delegate_to} gamit ang tronWeb.trx.signMessageV2() mula sa wallet na nagpadala ng TRX.
invalid_signature401Hindi ma-verify ang signatureSiguraduhin na i-sign mo ang eksaktong {tx_hash}:{delegate_to} (lowercase hex hash, colon, exact Tron address).
signature_mismatch403Ang signer address ay hindi tumutugma sa payment senderAng signature ay dapat mula sa parehong wallet na nagpadala ng TRX payment. Ibang wallet = rejected.

Payment Errors

Error CodeHTTPSanhiSolusyon
payment_verification_failed404 / 400Hindi ma-verify ang on-chain payment. Ang message field ay naglalarawan ng specific cause.Karaniwang sanhi: tx hindi pa confirmed (maghintay 3-5 segundo at subukan ulit), maling recipient address, transaction ay hindi TRX transfer, mas mababa sa 4 TRX minimum.
hash_already_used409Ang tx hash na ito ay na-claim naBawat payment hash ay maaaring gamitin lang minsan. Magpadala ng bagong payment para sa bagong delegation.

Service Errors

Error CodeHTTPSanhiSolusyon
delegation_failed400 / 500Hindi kayang i-deliver ng provider ang energy delegationKung ang failure ay nangyari pagkatapos ma-verify ang payment mo, isang automatic refund ay nakaqueue. Suriin ang refund object. Otherwise retry, o makipag-ugnayan sa support kasama ang ref ID.
rate_limited429Masyadong maraming requests mula sa IP na itoMagpahinga at subukan ulit. Ang limit ay 20 requests per second.
server_error500Unexpected internal errorSubukan ulit pagkatapos ng ilang segundo. Kung patuloy pa rin, makipag-ugnayan sa support kasama ang ref kung available.

Paghawak ng Errors sa Code

inirekomendang 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