DOKUMENTASI PENGEMBANG
Kode Kesalahan & Pemecahan Masalah TronEnergy API
Daftar lengkap kode kesalahan TronEnergy API dengan deskripsi, penyebab, dan langkah penyelesaian. Mencakup verifikasi pembayaran, tanda tangan, dan kesalahan delegasi.
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 Kesalahan | HTTP | Penyebab | Resolusi |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash bukan string hex 64 karakter | Periksa format hash. Harus tepat 64 karakter hex, tanpa awalan. |
invalid_address | 400 | delegate_to bukan alamat Tron yang valid | Validasi alamat dengan TronWeb.isAddress() sebelum memanggil. |
missing_signature | 400 | Tidak ada tanda tangan dalam permintaan | Tanda tangani pesan {tx_hash}:{delegate_to} dengan tronWeb.trx.signMessageV2() dari dompet yang mengirim TRX. |
invalid_signature | 401 | Tanda tangan tidak dapat diverifikasi | Pastikan Anda menandatangani tepat {tx_hash}:{delegate_to} (hash hex huruf kecil, titik dua, alamat Tron yang tepat). |
signature_mismatch | 403 | Alamat penandatangan tidak cocok dengan pengirim pembayaran | Tanda tangan harus berasal dari dompet yang sama yang mengirim pembayaran TRX. Dompet berbeda = ditolak. |
Kesalahan Pembayaran
| Kode Kesalahan | HTTP | Penyebab | Resolusi |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Pembayaran 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_used | 409 | Hash tx ini sudah diklaim | Setiap hash pembayaran hanya dapat digunakan sekali. Kirim pembayaran baru untuk delegasi baru. |
Kesalahan Layanan
| Kode Kesalahan | HTTP | Penyebab | Resolusi |
|---|---|---|---|
delegation_failed | 400 / 500 | Penyedia tidak dapat memberikan delegasi energi | Jika kegagalan terjadi setelah pembayaran Anda diverifikasi, pengembalian dana otomatis antri. Periksa refund obyek. Jika tidak, coba lagi atau hubungi dukungan dengan ref ID. |
rate_limited | 429 | Terlalu banyak permintaan dari IP ini | Pelankan dan coba lagi. Batas adalah 20 permintaan per detik. |
server_error | 500 | Kesalahan internal yang tidak terduga | Coba 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);