Har bir xato javobida ikkita maydon bor: error (mashina tarafidan o'qiladi, barqaror, versiyalar orasida hech qachon o'zgarishadi) va message (inson tarafidan o'qiladi, vaqt o'tishi bilan yaxshi bo'lishi mumkin). Har doim kodingizda error ga o'ting. Foydalanuvchilarga message ko'rsating.

Xato formati

Barcha xato javoblari bir xil tuzilmaga ega:

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

Ba'zi xatolar qo'shimcha maydonlarni o'z ichiga oladi: ref (energiya ijarasi urinishi uchun tasdiq identifikatori) va refund (avtomatik qayta to'lov haqida tafsilotlar).

Tasdiqlovchi Xatolar

Xato KodiHTTPSababHal qilish
invalid_tx_hash400tx_hash 64 belgili o'n oltilik qator emasXesh formatini tekshiring. Aniq 64 o'n oltilik belgidan iborat bo'lishi kerak, prefikssiz.
invalid_address400delegate_to to'g'ri Tron manzili emasChaqiruvdan oldin TronWeb.isAddress() bilan manzilni tasdiqlovchi xabarni yuboring.
missing_signature400So'rovda imzo berilmaganXabarni imzolang {tx_hash}:{delegate_to} bilan tronWeb.trx.signMessageV2() TRX yuborgan hamyondan.
invalid_signature401Imzo tekshirilmadiAniq imzolangan ekanligiga ishonch hosil qiling {tx_hash}:{delegate_to} (kichik o'n oltilik xesh, ikki nuqta, to'g'ri Tron manzili).
signature_mismatch403Imzovchi manzil to'lov yuboruvchisining manzili bilan mos kelmaydiImzo TRX to'lovini yuborgan xuddi shu hamyondan kelishi kerak. Boshqa hamyon = rad etilgan.

To'lov Xatolari

Xato KodiHTTPSababHal qilish
payment_verification_failed404 / 400Zincirdagi to'lovni tekshirish mumkin bo'lmadi. message maydonida aniq sabab ko'rsatilgan.Keng tarqalgan sabablar: tx hali tasdiqlanmagan (3-5 soniya kutib bitta bor qayta urinib ko'ring), noto'g'ri qabul qiluvchi manzili, tranzaksyon TRX o'tkazmasi emas, 4 TRX minimalining ostida.
hash_already_used409Bu tx xeshi allaqachon talablanganHar bir to'lov xeshini faqat bir marta ishlatish mumkin. Yangi energiya ijarasi uchun yangi to'lov yuboring.

Xizmat Xatolari

Xato KodiHTTPSababHal qilish
delegation_failed400 / 500Providay energiya ijarasi taqdim eta olmadiAgar xato to'lovingiz tasdiqlanganidan keyin sodir bo'lsa, avtomatik qayta to'lov chupisida. Tekshiring refund ob'ekti. Aks holda qayta urinib ko'ring yoki qo'llab-quuvchi xizmatga murojaat qiling. ref ID.
rate_limited429Bu IP manzildan juda ko'p so'rovlarSekinlashing va qayta urinib ko'ring. Chegarasi sekundiga 20 so'rov.
server_error500Kutilmagan ichki xatoBir necha soniyadan so'ng qayta urinib ko'ring. Agar davom etsa, qo'llab-quuvchi xizmatga murojaat qiling. ref (agar mavjud bo'lsa).

Kodda Xatolarni Boshqarish

tavsiya etilgan xato boshqaruvi
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