Mỗi phản hồi lỗi có hai trường: error (có thể đọc được bằng máy, ổn định, không bao giờ thay đổi giữa các phiên bản) và message (có thể đọc được bằng con người, có thể được cải thiện theo thời gian). Luôn chuyển đổi error trong mã của bạn. Hiển thị message cho người dùng.

Định Dạng Lỗi

Tất cả các phản hồi lỗi tuân theo cùng một cấu trúc:

phản hồi lỗi
{ "error": "error_code_here", "message": "Human-readable explanation" }

Một số lỗi có chứa các trường bổ sung: ref (ID tham chiếu cho nỗ lực ủy quyền năng lượng) và refund (chi tiết về hoàn tiền tự động).

Lỗi Xác Thực

Mã LỗiHTTPNguyên NhânGiải Pháp
invalid_tx_hash400tx_hash không phải là chuỗi hex 64 ký tựKiểm tra định dạng hash. Phải chính xác 64 ký tự hex, không có tiền tố.
invalid_address400delegate_to không phải là địa chỉ Tron hợp lệXác thực địa chỉ bằng TronWeb.isAddress() trước khi gọi.
missing_signature400Không có chữ ký trong yêu cầuKý pesan {tx_hash}:{delegate_to} với tronWeb.trx.signMessageV2() từ ví đã gửi TRX.
invalid_signature401Không thể xác minh chữ kýĐảm bảo bạn đã ký chính xác {tx_hash}:{delegate_to} (hex hash viết thường, dấu hai chấm, địa chỉ Tron chính xác).
signature_mismatch403Địa chỉ người ký không khớp với người gửi thanh toánChữ ký phải đến từ cùng ví đã gửi thanh toán TRX. Ví khác = bị từ chối.

Lỗi Thanh Toán

Mã LỗiHTTPNguyên NhânGiải Pháp
payment_verification_failed404 / 400Không thể xác minh thanh toán trên chuỗi. Trường message mô tả nguyên nhân cụ thể.Nguyên nhân phổ biến: giao dịch chưa được xác nhận (chờ 3-5 giây và thử lại), địa chỉ nhận sai, giao dịch không phải chuyển TRX, dưới mức tối thiểu 4 TRX.
hash_already_used409Hash giao dịch này đã được yêu cầuMỗi hash thanh toán chỉ có thể được sử dụng một lần. Gửi thanh toán mới để ủy quyền năng lượng mới.

Lỗi Dịch Vụ

Mã LỗiHTTPNguyên NhânGiải Pháp
delegation_failed400 / 500Nhà cung cấp không thể cung cấp ủy quyền năng lượngNếu lỗi xảy ra sau khi thanh toán của bạn được xác minh, hoàn tiền tự động sẽ được xếp hàng. Kiểm tra refund đối tượng. Nếu không, hãy thử lại hoặc liên hệ hỗ trợ với ref ID.
rate_limited429Quá nhiều yêu cầu từ IP nàyGiảm tốc độ và thử lại. Giới hạn là 20 yêu cầu mỗi giây.
server_error500Lỗi nội bộ không mong muốnThử lại sau vài giây. Nếu còn tiếp diễn, hãy liên hệ hỗ trợ với ref nếu có.

Xử lý Lỗi trong Mã

xử lý lỗi được khuyến nghị
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