DEVELOPER DOCS
TronEnergy API Hata Kodları ve Sorun Giderme
TronEnergy API hata kodlarının tam listesi açıklamalar, nedenleri ve çözüm adımlarıyla. Ödeme doğrulaması, imza ve delegasyon hatalarını kapsar.
Her hata yanıtının iki alanı vardır: error (makine tarafından okunabilir, kararlı, sürümler arasında asla değişmez) ve message (insan tarafından okunabilir, zaman içinde iyileştirilebilir). Kodunda her zaman error üzerinde geç. message kullanıcılara göster.
Hata Biçimi
Tüm hata yanıtları aynı yapıyı izler:
hata yanıtı
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Bazı hatalar ek alanlar içerir: ref (delegasyon denemesine ait bir referans kimliği) ve refund (otomatik geri ödeme hakkında ayrıntılar).
Doğrulama Hataları
| Hata Kodu | HTTP | Sebep | Çözüm |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash, 64 karakterli hex dizesi değildir | Hash biçimini kontrol edin. Tam olarak 64 hex karakter olmalı, ön ek yok. |
invalid_address | 400 | delegate_to geçerli bir Tron adresi değildir | Çağrıyı yapmadan önce adresi TronWeb.isAddress() ile doğrulayın. |
missing_signature | 400 | İstekte hiçbir imza sağlanmamıştır | Mesajı {tx_hash}:{delegate_to} ile tronWeb.trx.signMessageV2() tarafından TRX gönderen cüzdandan imzalayın. |
invalid_signature | 401 | İmza doğrulanamadı | Tam olarak {tx_hash}:{delegate_to} imzaladığınızdan emin olun (küçük harf hex hash, iki nokta, tam Tron adresi). |
signature_mismatch | 403 | İmzalayan adres ödeme göndericisiyle eşleşmiyor | İmza, TRX ödemesini gönderen aynı cüzdandan gelmelidir. Farklı cüzdan = reddedildi. |
Ödeme Hataları
| Hata Kodu | HTTP | Sebep | Çözüm |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Zincir üstü ödeme doğrulanamadı. message alanı belirli sebebi açıklar. | Yaygın sebepler: tx henüz onaylanmadı (3-5 saniye bekleyin ve bir kez daha deneyin), yanlış alıcı adresi, işlem TRX transferi değil, 4 TRX minimumunun altında. |
hash_already_used | 409 | Bu tx hash zaten talep edilmiştir | Her ödeme hash'i yalnızca bir kez kullanılabilir. Yeni delegasyon için yeni bir ödeme gönderin. |
Hizmet Hataları
| Hata Kodu | HTTP | Sebep | Çözüm |
|---|---|---|---|
delegation_failed | 400 / 500 | Sağlayıcı enerji delegasyonunu gerçekleştiremedi | Hatanız ödemeniz doğrulandıktan sonra gerçekleştiyse, otomatik geri ödeme kuyruğa alınmıştır. refund nesnesi. Aksi takdirde yeniden deneyin veya destek ile iletişime geçin ref ID. |
rate_limited | 429 | Bu IP'den çok fazla istek | Yavaşlayın ve yeniden deneyin. Limit saniyede 20 istektir. |
server_error | 500 | Beklenmeyen iç hata | Birkaç saniye sonra yeniden deneyin. Devam ederse, destek ile iletişime geçin ref (varsa). |
Kodda Hataları Yönetmek
önerilen hata işleme
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);