ڈیولپر ڈاکومنٹیشن
TronEnergy API کوڈز اور مسائل کا حل
TronEnergy API کے مکمل خرابی کے کوڈز کی فہرست تفصیلات، وجوہات، اور حل کے مراحل کے ساتھ۔ ادائیگی کی تصدیق، دستخط، اور ڈیلیگیشن کی خرابیوں کو کوور کرتا ہے۔
ہر خرابی کے جواب میں دو فیلڈز ہیں: error (مشین کے لیے قابلِ فہم، مستحکم، ورژن کے درمیان کبھی تبدیل نہیں ہوتا) اور message (انسان کے لیے قابلِ فہم، وقت کے ساتھ بہتر ہو سکتا ہے)۔ اپنے کوڈ میں ہمیشہ error پر سوئچ کریں۔ صارفین کو message دکھائیں۔
خرابی کی شکل
تمام خرابی کے جوابات ایک جیسی ساخت کی پیروی کرتے ہیں:
خرابی کا جواب
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
کچھ غلطیوں میں اضافی فیلڈز شامل ہیں: ref (ڈیلیگیشن کوشش کے لیے حوالہ ID) اور refund (خودکار رقم واپسی کی تفصیلات)۔
توثیق کی غلطیاں
| غلطی کوڈ | HTTP | وجہ | حل |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash 64 حروف والا hex string نہیں ہے | ہیش فارمیٹ چیک کریں۔ بالکل 64 hex حروف ہونے چاہیں، کوئی prefix نہیں۔ |
invalid_address | 400 | delegate_to درست Tron address نہیں ہے | کال کرنے سے پہلے TronWeb.isAddress() سے address کی تصدیق کریں۔ |
missing_signature | 400 | درخواست میں کوئی دستخط فراہم نہیں کیا گیا | پیغام پر دستخط کریں {tx_hash}:{delegate_to} کے ساتھ tronWeb.trx.signMessageV2() اس wallet سے جس نے TRX بھیجا۔ |
invalid_signature | 401 | دستخط کی تصدیق نہ ہو سکی | یقینی بنائیں کہ آپ نے بالکل دستخط کیا ہے {tx_hash}:{delegate_to} (lowercase hex hash، کولن، بالکل Tron address)۔ |
signature_mismatch | 403 | دستخط کنندہ address ادائیگی بھیجنے والے سے مماثل نہیں ہے | دستخط اسی wallet سے ہونا چاہیے جس نے TRX ادائیگی بھیجی۔ مختلف wallet = مسترد۔ |
ادائیگی کی غلطیاں
| غلطی کوڈ | HTTP | وجہ | حل |
|---|---|---|---|
payment_verification_failed | 404 / 400 | آن چین ادائیگی کی تصدیق نہ ہو سکی۔ message فیلڈ خاص وجہ بیان کرتا ہے۔ | عام وجوہات: tx ابھی تک تصدیق نہیں ہوئی (3-5 سیکنڈ انتظار کریں اور ایک بار دوبارہ کوشش کریں)، غلط وصول کنندہ address، ٹرانزیکشن TRX transfer نہیں ہے، 4 TRX کم سے کم سے کم ہے۔ |
hash_already_used | 409 | یہ tx hash پہلے سے دعویٰ کیا جا چکا ہے | ہر ادائیگی hash کو صرف ایک بار استعمال کیا جا سکتا ہے۔ نئی ڈیلیگیشن کے لیے نئی ادائیگی بھیجیں۔ |
سروس کی غلطیاں
| غلطی کوڈ | HTTP | وجہ | حل |
|---|---|---|---|
delegation_failed | 400 / 500 | فراہم کنندہ توانائی ڈیلیگیشن فراہم نہ کر سکا | اگر ناکامی آپ کی ادائیگی کی تصدیق کے بعد ہوئی ہے تو ایک خودکار رقم واپسی قطار میں ہے۔ چیک کریں refund شے۔ ورنہ دوبارہ کوشش کریں، یا سپورٹ سے رابطہ کریں اور یہ ref ID فراہم کریں۔ |
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);