すべてのエラーレスポンスには 2 つのフィールドがあります:error(機械可読、安定、バージョン間で変更なし)とmessage(人間が読める形式、改善される可能性があります)。コードでは常にerrorで切り替えてください。messageをユーザーに表示してください。

エラーフォーマット

すべてのエラーレスポンスは同じ構造に従います:

エラーレスポンス
{ "error": "error_code_here", "message": "Human-readable explanation" }

エラーには追加フィールドが含まれる場合があります:ref(エナジー委任試行の参照ID)およびrefund(自動返金の詳細)。

バリデーションエラー

エラーコードHTTP原因解決方法
invalid_tx_hash400tx_hashは64文字の16進文字列ではありませんハッシュ形式を確認してください。正確に64文字の16進数である必要があり、プレフィックスは不要です。
invalid_address400delegate_toは有効なTronアドレスではありません呼び出し前にTronWeb.isAddress()でアドレスを検証してください。
missing_signature400リクエストに署名がありませんメッセージ{tx_hash}:{delegate_to}に署名してくださいtronWeb.trx.signMessageV2()TRXを送信したウォレットから署名してください。
invalid_signature401署名を検証できませんでした正確に{tx_hash}:{delegate_to}(小文字の16進ハッシュ、コロン、正確なTronアドレス)に署名したことを確認してください。
signature_mismatch403署名者アドレスが支払い送信者と一致しません署名はTRX支払いを送信したウォレットと同じウォレットからである必要があります。別のウォレット=却下されます。

支払いエラー

エラーコードHTTP原因解決方法
payment_verification_failed404 / 400オンチェーン支払いを検証できませんでした。messageフィールドが具体的な原因を説明しています。一般的な原因:トランザクションがまだ承認されていない(3~5秒待機して1回再試行)、受信者アドレスが間違っている、トランザクションはTRX送金ではない、4 TRXの最小値未満。
hash_already_used409このトランザクションハッシュは既に請求されています各支払いハッシュは1回のみ使用できます。新しい委任の場合は新しい支払いを送信してください。

サービスエラー

エラーコードHTTP原因解決方法
delegation_failed400 / 500プロバイダーはエナジー委任を提供できませんでした支払いが検証された後に失敗が発生した場合、自動返金がキューに入ります。確認してくださいrefund オブジェクト。または再度お試しいただくか、サポートにお問い合わせください。ref ID。
rate_limited429このIPからのリクエストが多すぎます速度を落として再度お試しください。制限は毎秒20リクエストです。
server_error500予期しない内部エラーが発生しました数秒待ってから再度お試しください。問題が続く場合は、サポートにお問い合わせください。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);
Telegram WhatsApp