ISHLAB CHIQARUVCHI HUJJATLARI
TronEnergy API Xato kodlari va muammolarni hal qilish
TronEnergy API xato kodlarining to'liq ro'yxati tavsiflar, sabablar va hal qilish bosqichlari bilan. To'lov tekshirish, imzo va taqsimot xatolarini qamrashadi.
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 Kodi | HTTP | Sabab | Hal qilish |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash 64 belgili o'n oltilik qator emas | Xesh formatini tekshiring. Aniq 64 o'n oltilik belgidan iborat bo'lishi kerak, prefikssiz. |
invalid_address | 400 | delegate_to to'g'ri Tron manzili emas | Chaqiruvdan oldin TronWeb.isAddress() bilan manzilni tasdiqlovchi xabarni yuboring. |
missing_signature | 400 | So'rovda imzo berilmagan | Xabarni imzolang {tx_hash}:{delegate_to} bilan tronWeb.trx.signMessageV2() TRX yuborgan hamyondan. |
invalid_signature | 401 | Imzo tekshirilmadi | Aniq imzolangan ekanligiga ishonch hosil qiling {tx_hash}:{delegate_to} (kichik o'n oltilik xesh, ikki nuqta, to'g'ri Tron manzili). |
signature_mismatch | 403 | Imzovchi manzil to'lov yuboruvchisining manzili bilan mos kelmaydi | Imzo TRX to'lovini yuborgan xuddi shu hamyondan kelishi kerak. Boshqa hamyon = rad etilgan. |
To'lov Xatolari
| Xato Kodi | HTTP | Sabab | Hal qilish |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Zincirdagi 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_used | 409 | Bu tx xeshi allaqachon talablangan | Har bir to'lov xeshini faqat bir marta ishlatish mumkin. Yangi energiya ijarasi uchun yangi to'lov yuboring. |
Xizmat Xatolari
| Xato Kodi | HTTP | Sabab | Hal qilish |
|---|---|---|---|
delegation_failed | 400 / 500 | Providay energiya ijarasi taqdim eta olmadi | Agar 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_limited | 429 | Bu IP manzildan juda ko'p so'rovlar | Sekinlashing va qayta urinib ko'ring. Chegarasi sekundiga 20 so'rov. |
server_error | 500 | Kutilmagan ichki xato | Bir 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);