開発者向けドキュメント
ERROR CODES
TronEnergy APIエラーコード一覧(説明と解決手順付き)。
エラー応答には、次の2つのフィールドがあります。 error (機械可読、安定しており、バージョン間で変更されない) message (人間が読める形式、今後改善される可能性があります)。常にオンにしてください。 error コード内で表示します。 message ユーザーへ。
エラー形式
すべてのエラー応答は同じ構造に従います。
error response
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
エラーの中には、追加フィールドが含まれる場合があります。 ref (委任試行の参照ID) refund (自動返金に関する詳細)
検証エラー
| エラーコード | HTTP | 原因 | 解決 |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hashは64文字の16進数文字列ではありません | ハッシュの形式を確認してください。正確に64文字の16進数で、接頭辞は不要です。 |
invalid_address | 400 | delegate_to は有効なTronアドレスではありません | 呼び出し前に、 TronWeb () を使用してアドレスを検証してください。 |
missing_signature | 400 | 依頼書に署名がありません | メッセージに署名する {tx_hash}:{delegate_to} と tronWeb.trx.signMessageV2() TRXを送信したウォレットから。 |
invalid_signature | 401 | 署名を確認できませんでした | 必ず正確に署名してください {tx_hash}:{delegate_to} (小文字の16進数ハッシュ、コロン、正確な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 ID。 |
rate_limited | 429 | このIPアドレスからのリクエストが多すぎます | 処理速度を落として再試行してください。制限は1秒あたり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);