ДОКУМЕНТАЦІЯ РОЗРОБНИКА
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 .isAddress() перед викликом. |
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);