ҲУҶҶАТҲОИ ТАҲИЯ КУНАНДА
Кодҳои хатои TronEnergy API ва ҳалли мушкилот
Рӯйхати пурра кодҳои хатои TronEnergy API бо шархҳо, сабабҳо ва қадамҳои қатъӣ. Ғилофи тасдиқи пардахт, имзо ва хатоҳои делегатсия.
Ҳар як ҷавоби хато дукунҷа майдон дорад: error (бинави мошин, ҳамвор, ҳарқадом байни версияҳо тағйир намеёбад) ва message (бинави инсон, метавонад бо гузишт бехтар шавад). Ҳамеша ба error ба коди худ табдил ёбед. Намоиш message ба корбарон.
Шакли хато
Ҳамаи ҷавобҳои хато як сохтори якхела риоя мекунанд:
посухи хатогӣ
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
Баъзе хатоҳо қуллаҳои иловагиро дарбар мегиранд: ref (шунохаси ҳавола барои кӯшиши воколатдиҳӣ) ва refund (тафсилот дар бораи бозгардонидани худкори).
Хатоҳои Тасдиқкунӣ
| Коди Хатоҳ | HTTP | Сабаб | Ҳал |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash як сатри hex 64-ханҷари нест | Формати хеши шумо барсӣ кунед. Бояд дақиқан 64 хонаи hex бошад, беғайра префикс. |
invalid_address | 400 | delegate_to адреси Tron дилхоҳ нест | Адресро бо TronWeb.isAddress() пеш аз даъват тасдиқ кунед. |
missing_signature | 400 | Вақт имзо дар истидоди нест | Паёми {tx_hash}:{delegate_to} бо tronWeb.trx.signMessageV2() аз ҳамён, ки TRX ирсол кард, имзо кунед. |
invalid_signature | 401 | Имзои тасдиқ карда нашуд | Мутаассис шумо дақиқан {tx_hash}:{delegate_to} (хеши hex хурдҳуроф, қавум, адреси Tron дақиқ) имзо кард. |
signature_mismatch | 403 | Адреси имзокунанда адреси фиристандаи пардохт мутобиқ нест | Имзо бояд аз ҳаммон ҳамён, ки пардохти TRX ирсол кард, бошад. Ҳамён гуногун = рад карда шуд. |
Хатоҳои Пардохт
| Коди Хатоҳ | HTTP | Сабаб | Ҳал |
|---|---|---|---|
payment_verification_failed | 404 / 400 | Пардохти зинҷирӣ тасдиқ карда нашуд. Майдони message сабаби махсусро тавсиф мекунад. | Сабабҳои маъмул: tx ҳалу ҷоӣ нашудаанд (3-5 сония интизор шавед ва як маротиба аз нав кӯшиш кунед), адреси қабулкунанда нодуруст, му'омила интиқоли TRX нест, пасти ҳадди ақали 4 TRX. |
hash_already_used | 409 | Ин хеши tx аллакай даъво карда шудаист | Ҳар як хеши пардохт танҳо як маротиба истифода карда мешавад. Барои воколатдиҳии нави пардохти нави ирсол кунед. |
Хатоҳои Хидмат
| Коди Хатоҳ | HTTP | Сабаб | Ҳал |
|---|---|---|---|
delegation_failed | 400 / 500 | Фоъил наметавонист ҷаҳанбар энергиро ирсол кунад | Агар шикост пас аз тасдиқи пардохти шумо ба вуҷуд омада бошад, бозгардонидани худкор сатр карда шудаист. Корибро барсӣ кунед refund объект. Агар не, кӯшиш кунед дубора ё бо дастгирӣ тамос гиред. ref шахсияти. |
rate_limited | 429 | Аз ин IP адреси бисёр зиёд дархостҳо | Суръати худро кам кунед ва кӯшиш кунед дубора. Ҳадди аксимум 20 дархост дар сония. |
server_error | 500 | Хатои дохилии ғайримунтазири сервер | Баъди якчанд сонияҳо кӯшиш кунед дубора. Агар мувомолат давом ёбад, бо дастгирӣ тамос гиред ва ref агар дастрас бошад. |
Коркард кардани Хатоҳо дар Код
идоракунии хатоҳои тавсияшуда
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);