ᲓᲔᲕᲔᲚᲝᲞᲔᲠᲔᲑᲘᲡ ᲓᲝᲙᲣᲛᲔᲜᲢᲐᲪᲘᲐ
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 სტრიქონი | შეამოწმეთ hash-ის ფორმატი. უნდა იყოს ზუსტად 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 hash, მორის ხაზი, ზუსტი Tron მისამართი). |
signature_mismatch | 403 | ხელმომწერის მისამართი არ ემთხვევა გადახდის მომწერს | ხელმოწერა უნდა მომდინარეობდეს იმავე საფულიდან, რომელმაც გაგზავნა TRX გადახდა. სხვადსხვა საფულე = უარყოფილი. |
გადახდის შეცდომები
| შეცდომის კოდი | HTTP | მიზეზი | გადაწყვეტა |
|---|---|---|---|
payment_verification_failed | 404 / 400 | ჯაჭვზე შემავალი გადახდა ვერ გადამოწმდა. message ველი აღწერს კონკრეტულ მიზეზს. | ხშირი მიზეზები: tx ჯერ არ არის დასტური (დაიცადეთ 3-5 წამი და კიდევ ერთხელ სცადეთ), არასწორი მიმღების მისამართი, ტრანზაქცია არ არის TRX გადარიცხვა, 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);