اسناد توسعهدهنده
ERROR CODES
لیست کاملی از کدهای خطای API TronEnergy به همراه توضیحات و مراحل رفع آنها.
هر پاسخ خطا دو فیلد دارد: error (قابل خواندن توسط ماشین، پایدار، هرگز بین نسخهها تغییر نمیکند) و message (قابل خواندن توسط انسان، ممکن است به مرور زمان بهبود یابد). همیشه روشن باشد error در کد شما. نمایش message به کاربران.
قالب خطا
همه پاسخهای خطا از ساختار یکسانی پیروی میکنند:
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
برخی از خطاها شامل فیلدهای اضافی هستند: ref (یک شناسه مرجع برای تلاش برای واگذاری) و refund (جزئیات مربوط به بازپرداخت خودکار).
خطاهای اعتبارسنجی
| کد خطا | اچتیپی | علت | وضوح تصویر |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash یک رشته هگز ۶۴ کاراکتری نیست. | فرمت هش را بررسی کنید. باید دقیقاً ۶۴ کاراکتر هگز باشد، بدون پیشوند. |
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} (هش هگز کوچک، دونقطه، آدرس دقیق Tron ). |
signature_mismatch | 403 | آدرس امضاکننده با فرستنده پرداخت مطابقت ندارد | امضا باید از همان کیف پولی باشد که پرداخت TRX را ارسال کرده است. کیف پول متفاوت = رد شده. |
خطاهای پرداخت
| کد خطا | اچتیپی | علت | وضوح تصویر |
|---|---|---|---|
payment_verification_failed | 404 / 400 | پرداخت درون زنجیرهای قابل تأیید نبود. message فیلد علت خاص را توصیف میکند. | دلایل رایج: تراکنش هنوز تأیید نشده است (۳-۵ ثانیه صبر کنید و دوباره امتحان کنید)، آدرس گیرنده اشتباه است، تراکنش یک انتقال TRX نیست، کمتر از حداقل ۴ TRX است. |
hash_already_used | 409 | این هش تراکنش قبلاً ادعا شده است | هر هش پرداخت فقط یک بار قابل استفاده است. برای یک نمایندگی جدید، یک پرداخت جدید ارسال کنید. |
خطاهای سرویس
| کد خطا | اچتیپی | علت | وضوح تصویر |
|---|---|---|---|
delegation_failed | 400 / 500 | ارائه دهنده نتوانست تفویض اختیار انرژی را انجام دهد | اگر خرابی پس از تأیید پرداخت شما رخ داده باشد، بازپرداخت خودکار در صف انتظار قرار میگیرد. بررسی کنید refund در غیر این صورت دوباره امتحان کنید، یا با پشتیبانی تماس بگیرید ref شناسنامه. |
rate_limited | 429 | درخواستهای زیادی از این IP ارسال شده است | سرعت را کم کنید و دوباره امتحان کنید. محدودیت 20 درخواست در ثانیه است. |
server_error | 500 | خطای داخلی غیرمنتظره | بعد از چند ثانیه دوباره امتحان کنید. در صورت ادامه، با پشتیبانی تماس بگیرید ref در صورت موجود بودن. |
مدیریت خطاها در کد
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);