Кожна відповідь на помилку має два поля: error (машиночитабельний, стабільний, ніколи не змінюється між версіями) та message (читабельний для людини, може бути покращений з часом). Завжди вмикайте error у вашому коді. Відображення message користувачам.

Формат помилки

Усі відповіді на помилки мають однакову структуру:

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

Деякі помилки містять додаткові поля: ref (ідентифікатор посилання для спроби делегування) та refund (деталі про автоматичне повернення коштів).

Помилки перевірки

Код помилкиHTTPПричинаРоздільна здатність
invalid_tx_hash400tx_hash не є шістнадцятковим рядком із 64 символівПеревірте формат хешу. Має бути рівно 64 шістнадцяткових символів, без префікса.
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 . Інший гаманець = відхилено.

Помилки оплати

Код помилкиHTTPПричинаРоздільна здатність
payment_verification_failed404 / 400Платіж у мережі не вдалося перевірити. message поле описує конкретну причину.Типові причини: передача ще не підтверджена (зачекайте 3-5 секунд і спробуйте ще раз), неправильна адреса одержувача, транзакція не є переказом TRX , менше мінімальної суми 4 TRX .
hash_already_used409Цей хеш передачі вже заявленоКожен хеш платежу можна використовувати лише один раз. Надішліть новий платіж для нового делегування.

Помилки служби

Код помилкиHTTPПричинаРоздільна здатність
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