هر پاسخ خطا دو فیلد دارد: error (قابل خواندن توسط ماشین، پایدار، هرگز بین نسخه‌ها تغییر نمی‌کند) و message (قابل خواندن توسط انسان، ممکن است به مرور زمان بهبود یابد). همیشه روشن باشد error در کد شما. نمایش message به کاربران.

قالب خطا

همه پاسخ‌های خطا از ساختار یکسانی پیروی می‌کنند:

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

برخی از خطاها شامل فیلدهای اضافی هستند: ref (یک شناسه مرجع برای تلاش برای واگذاری) و refund (جزئیات مربوط به بازپرداخت خودکار).

خطاهای اعتبارسنجی

کد خطااچ‌تی‌پیعلتوضوح تصویر
invalid_tx_hash400tx_hash یک رشته هگز ۶۴ کاراکتری نیست.فرمت هش را بررسی کنید. باید دقیقاً ۶۴ کاراکتر هگز باشد، بدون پیشوند.
invalid_address400delegate_to یک آدرس Tron معتبر نیستقبل از فراخوانی، آدرس را با TronWeb .isAddress() اعتبارسنجی کنید.
missing_signature400هیچ امضایی در درخواست ارائه نشده استپیام را امضا کنید {tx_hash}:{delegate_to} با tronWeb.trx.signMessageV2() از کیف پولی که TRX را ارسال کرده است.
invalid_signature401امضا قابل تأیید نبودمطمئن شوید که دقیقاً امضا کرده‌اید {tx_hash}:{delegate_to} (هش هگز کوچک، دونقطه، آدرس دقیق Tron ).
signature_mismatch403آدرس امضاکننده با فرستنده پرداخت مطابقت نداردامضا باید از همان کیف پولی باشد که پرداخت TRX را ارسال کرده است. کیف پول متفاوت = رد شده.

خطاهای پرداخت

کد خطااچ‌تی‌پیعلتوضوح تصویر
payment_verification_failed404 / 400پرداخت درون زنجیره‌ای قابل تأیید نبود. message فیلد علت خاص را توصیف می‌کند.دلایل رایج: تراکنش هنوز تأیید نشده است (۳-۵ ثانیه صبر کنید و دوباره امتحان کنید)، آدرس گیرنده اشتباه است، تراکنش یک انتقال TRX نیست، کمتر از حداقل ۴ TRX است.
hash_already_used409این هش تراکنش قبلاً ادعا شده استهر هش پرداخت فقط یک بار قابل استفاده است. برای یک نمایندگی جدید، یک پرداخت جدید ارسال کنید.

خطاهای سرویس

کد خطااچ‌تی‌پیعلتوضوح تصویر
delegation_failed400 / 500ارائه دهنده نتوانست تفویض اختیار انرژی را انجام دهداگر خرابی پس از تأیید پرداخت شما رخ داده باشد، بازپرداخت خودکار در صف انتظار قرار می‌گیرد. بررسی کنید refund در غیر این صورت دوباره امتحان کنید، یا با پشتیبانی تماس بگیرید ref شناسنامه.
rate_limited429درخواست‌های زیادی از این IP ارسال شده استسرعت را کم کنید و دوباره امتحان کنید. محدودیت 20 درخواست در ثانیه است.
server_error500خطای داخلی غیرمنتظرهبعد از چند ثانیه دوباره امتحان کنید. در صورت ادامه، با پشتیبانی تماس بگیرید 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);
Telegram WhatsApp