وثائق المطورين
ERROR CODES
قائمة كاملة برموز أخطاء API TronEnergy مع وصفها وخطوات حلها.
تحتوي كل استجابة خطأ على حقلين: error (قابلة للقراءة آلياً، مستقرة، لا تتغير بين الإصدارات) و message (قابل للقراءة البشرية، وقد يتم تحسينه بمرور الوقت). قم بتشغيله دائمًا error في الكود الخاص بك. اعرض message للمستخدمين.
تنسيق الخطأ
تتبع جميع استجابات الأخطاء نفس البنية:
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
تتضمن بعض الأخطاء حقولاً إضافية: ref (معرف مرجعي لمحاولة التفويض) و refund (تفاصيل حول استرداد الأموال تلقائيًا).
أخطاء التحقق
| رمز الخطأ | HTTP | سبب | دقة |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash ليس سلسلة سداسية عشرية مكونة من 64 حرفًا | تحقق من تنسيق التجزئة. يجب أن يكون 64 حرفًا سداسيًا عشريًا بالضبط، بدون أي بادئة. |
invalid_address | 400 | delegate_to ليس عنوان Tron صالحًا | تحقق من صحة العنوان باستخدام TronWeb () قبل الاستدعاء. |
missing_signature | 400 | لم يتم تقديم أي توقيع في الطلب | وقّع الرسالة {tx_hash}:{delegate_to} مع tronWeb.trx.signMessageV2() من المحفظة التي أرسلت عملة TRX . |
invalid_signature | 401 | تعذر التحقق من التوقيع | تأكد من أنك وقعت بالضبط {tx_hash}:{delegate_to} (رمز سداسي عشري صغير، نقطتان رأسيتان، عنوان Tron الدقيق). |
signature_mismatch | 403 | عنوان المُوقِّع لا يتطابق مع عنوان مُرسِل الدفعة | يجب أن يكون التوقيع من نفس المحفظة التي أرسلت دفعة TRX . محفظة مختلفة = رفض. |
أخطاء في الدفع
| رمز الخطأ | HTTP | سبب | دقة |
|---|---|---|---|
payment_verification_failed | 404 / 400 | لم يتم التحقق من عملية الدفع عبر سلسلة الكتل. message يصف الحقل السبب المحدد. | الأسباب الشائعة: لم يتم تأكيد المعاملة بعد (انتظر من 3 إلى 5 ثوانٍ ثم أعد المحاولة مرة أخرى)، عنوان المستلم خاطئ، المعاملة ليست تحويل TRX ، أقل من الحد الأدنى البالغ 4 TRX . |
hash_already_used | 409 | تم بالفعل المطالبة برمز التجزئة هذا للمعاملة | لا يمكن استخدام كل رمز دفع إلا مرة واحدة. أرسل دفعة جديدة لتفويض جديد. |
أخطاء الخدمة
| رمز الخطأ | HTTP | سبب | دقة |
|---|---|---|---|
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);