ISHLAB CHIQARUVCHI HUJJATLARI
ERROR CODES
TronEnergy API xato kodlarining tavsiflari va hal qilish bosqichlari bilan to'liq ro'yxati.
Har bir xato javobi ikkita maydonga ega: error (mashina tomonidan o'qiladigan, barqaror, versiyalar orasida hech qachon o'zgarmaydi) va message (odam o'qiy oladigan, vaqt o'tishi bilan yaxshilanishi mumkin). Har doim yoqing error kodingizda. Displey message foydalanuvchilarga.
Xato formati
Barcha xato javoblari bir xil tuzilishga amal qiladi:
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Ba'zi xatolar qo'shimcha maydonlarni o'z ichiga oladi: ref (delegatsiya urinishi uchun ma'lumotnoma identifikatori) va refund (avtomatik qaytarish haqida batafsil ma'lumot).
Tasdiqlash xatolari
| Xato kodi | HTTP | Sabab | Ruxsat |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash 64 belgili hex qatori emas | Xesh formatini tekshiring. Aniq 64 ta o'n oltilik belgidan iborat bo'lishi kerak, prefikssiz. |
invalid_address | 400 | delegate_to haqiqiy Tron manzili emas | Qo'ng'iroq qilishdan oldin manzilni TronWeb .isAddress() yordamida tasdiqlang. |
missing_signature | 400 | So'rovda imzo ko'rsatilmagan | Xabarni imzolang {tx_hash}:{delegate_to} bilan tronWeb.trx.signMessageV2() TRX yuborgan hamyondan. |
invalid_signature | 401 | Imzo tekshirilmadi | To'liq imzolaganingizga ishonch hosil qiling {tx_hash}:{delegate_to} (kichik harflar bilan hex xesh, ikki nuqta, aniq Tron manzili). |
signature_mismatch | 403 | Imzolovchining manzili to'lov jo'natuvchisi bilan mos kelmaydi | Imzo TRX to'lovini yuborgan hamyondan bo'lishi kerak. Boshqa hamyon = rad etilgan. |
To'lov xatolari
| Xato kodi | HTTP | Sabab | Ruxsat |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Zanjir ichidagi to'lovni tekshirib bo'lmadi. message maydon aniq sababni tavsiflaydi. | Umumiy sabablar: TX hali tasdiqlanmagan (3-5 soniya kuting va bir marta qayta urinib ko'ring), noto'g'ri qabul qiluvchining manzili, tranzaksiya TRX o'tkazmasi emas, 4 TRX minimal miqdoridan past. |
hash_already_used | 409 | Bu tx xeshi allaqachon da'vo qilingan | Har bir toʻlov xeshidan faqat bir marta foydalanish mumkin. Yangi delegatsiya uchun yangi toʻlov yuboring. |
Xizmat xatolari
| Xato kodi | HTTP | Sabab | Ruxsat |
|---|---|---|---|
delegation_failed | 400 / 500 | Provayder energiya delegatsiyasini yetkazib bera olmadi | Agar xatolik to'lovingiz tasdiqlangandan keyin sodir bo'lsa, avtomatik qaytarish navbatga qo'yiladi. Tekshiring refund obyekt. Aks holda, qayta urinib ko'ring yoki qo'llab-quvvatlash xizmatiga murojaat qiling ref Shaxsni tasdiqlovchi hujjat. |
rate_limited | 429 | Bu IP manzilidan juda ko'p so'rovlar | Sekinlashtiring va qayta urinib ko'ring. Cheklov sekundiga 20 ta so'rov. |
server_error | 500 | Kutilmagan ichki xato | Bir necha soniyadan keyin qayta urinib ko'ring. Agar muammo davom etsa, qo'llab-quvvatlash xizmatiga murojaat qiling ref agar mavjud bo'lsa. |
Koddagi xatolarni qayta ishlash
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);