Setiap respons kesalahan memiliki dua bidang: error (dapat dibaca mesin, stabil, tidak pernah berubah antar versi) dan message (dapat dibaca manusia, dapat ditingkatkan seiring waktu). Selalu beralih pada error dalam kode Anda. Tampilkan message kepada pengguna.

Format Kesalahan

Semua respons kesalahan mengikuti struktur yang sama:

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

Beberapa kesalahan mencakup kolom tambahan: ref (ID referensi untuk upaya delegasi energi) dan refund (detail tentang pengembalian dana otomatis).

Kesalahan Validasi

Kode KesalahanHTTPPenyebabResolusi
invalid_tx_hash400tx_hash bukan string hex 64 karakterPeriksa format hash. Harus tepat 64 karakter hex, tanpa awalan.
invalid_address400delegate_to bukan alamat Tron yang validValidasi alamat dengan TronWeb.isAddress() sebelum memanggil.
missing_signature400Tidak ada tanda tangan dalam permintaanTanda tangani pesan {tx_hash}:{delegate_to} dengan tronWeb.trx.signMessageV2() dari dompet yang mengirim TRX.
invalid_signature401Tanda tangan tidak dapat diverifikasiPastikan Anda menandatangani tepat {tx_hash}:{delegate_to} (hash hex huruf kecil, titik dua, alamat Tron yang tepat).
signature_mismatch403Alamat penandatangan tidak cocok dengan pengirim pembayaranTanda tangan harus berasal dari dompet yang sama yang mengirim pembayaran TRX. Dompet berbeda = ditolak.

Kesalahan Pembayaran

Kode KesalahanHTTPPenyebabResolusi
payment_verification_failed404 / 400Pembayaran di-chain tidak dapat diverifikasi. Kolom message menjelaskan penyebab spesifiknya.Penyebab umum: transaksi belum dikonfirmasi (tunggu 3–5 detik dan coba lagi sekali), alamat penerima salah, transaksi bukan transfer TRX, di bawah minimum 4 TRX.
hash_already_used409Hash tx ini sudah diklaimSetiap hash pembayaran hanya dapat digunakan sekali. Kirim pembayaran baru untuk delegasi baru.

Kesalahan Layanan

Kode KesalahanHTTPPenyebabResolusi
delegation_failed400 / 500Penyedia tidak dapat memberikan delegasi energiJika kegagalan terjadi setelah pembayaran Anda diverifikasi, pengembalian dana otomatis antri. Periksa refund obyek. Jika tidak, coba lagi atau hubungi dukungan dengan ref ID.
rate_limited429Terlalu banyak permintaan dari IP iniPelankan dan coba lagi. Batas adalah 20 permintaan per detik.
server_error500Kesalahan internal yang tidak terdugaCoba lagi setelah beberapa detik. Jika terus berlanjut, hubungi dukungan dengan ref jika tersedia.

Menangani Kesalahan dalam Kode

penanganan kesalahan yang disarankan
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