DOKUMENTASI PENGEMBANG
ERROR CODES
Daftar lengkap kode kesalahan API TronEnergy beserta deskripsi dan langkah-langkah penyelesaiannya.
Setiap respons kesalahan memiliki dua kolom: error (dapat dibaca mesin, stabil, tidak pernah berubah antar versi) dan message (Dapat dibaca manusia, dapat ditingkatkan seiring waktu). Selalu nyalakan error dalam kode Anda. Tampilkan message kepada pengguna.
Format Kesalahan
Semua respons kesalahan mengikuti struktur yang sama:
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Beberapa kesalahan menyertakan kolom tambahan: ref (ID referensi untuk upaya delegasi) dan refund (detail tentang pengembalian dana otomatis).
Kesalahan Validasi
| Kode Kesalahan | HTTP | Menyebabkan | Resolusi |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash bukanlah string heksadesimal 64 karakter. | Periksa format hash. Harus tepat 64 karakter heksadesimal, tanpa awalan. |
invalid_address | 400 | delegate_to bukan alamat Tron yang valid | Validasi alamat dengan TronWeb () sebelum melakukan panggilan. |
missing_signature | 400 | Tidak ada tanda tangan yang diberikan dalam permintaan tersebut. | Tandatangani pesan tersebut {tx_hash}:{delegate_to} dengan tronWeb.trx.signMessageV2() dari dompet yang mengirimkan TRX . |
invalid_signature | 401 | Tanda tangan tidak dapat diverifikasi. | Pastikan Anda menandatangani dengan tepat. {tx_hash}:{delegate_to} (hash heksadesimal huruf kecil, titik dua, alamat Tron yang tepat). |
signature_mismatch | 403 | Alamat penandatangan tidak sesuai dengan alamat pengirim pembayaran. | Tanda tangan harus berasal dari dompet yang sama yang mengirimkan pembayaran TRX . Dompet berbeda = ditolak. |
Kesalahan Pembayaran
| Kode Kesalahan | HTTP | Menyebabkan | Resolusi |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Pembayaran on-chain tidak dapat diverifikasi. message Kolom tersebut 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 transaksi ini sudah diklaim. | Setiap hash pembayaran hanya dapat digunakan sekali. Kirim pembayaran baru untuk delegasi baru. |
Kesalahan Layanan
| Kode Kesalahan | HTTP | Menyebabkan | Resolusi |
|---|---|---|---|
delegation_failed | 400 / 500 | Penyedia tidak dapat mengirimkan delegasi energi. | Jika kegagalan terjadi setelah pembayaran Anda diverifikasi, pengembalian dana otomatis sedang diproses. Periksa refund objek. Jika tidak berhasil, coba lagi, atau hubungi dukungan dengan ref PENGENAL. |
rate_limited | 429 | Terlalu banyak permintaan dari IP ini | Perlambat dan coba lagi. Batasnya adalah 20 permintaan per detik. |
server_error | 500 | Kesalahan internal yang tidak terduga | Coba lagi setelah beberapa detik. Jika masih berlanjut, hubungi dukungan dengan ref jika tersedia. |
Menangani Kesalahan dalam Kode
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);