เอกสารสำหรับนักพัฒนา
รหัสข้อผิดพลาด TronEnergy API และการแก้ไขปัญหา
รายการที่สมบูรณ์ของรหัสข้อผิดพลาด TronEnergy API พร้อมคำอธิบาย สาเหตุ และขั้นตอนการแก้ไข ครอบคลุมข้อผิดพลาดเกี่ยวกับการตรวจสอบการชำระเงิน ลายเซ็น และการมอบหมายพลังงาน
ทุกการตอบสนองข้อผิดพลาดมีสองฟิลด์: error (อ่านได้โดยเครื่องจักร เสถียร ไม่เปลี่ยนแปลงระหว่างเวอร์ชน) และ message (อ่านได้โดยมนุษย์ อาจปรับปรุงตามเวลา) เสมอให้สลับ error ในโค้ดของคุณ แสดง message ให้กับผู้ใช้
รูปแบบข้อผิดพลาด
การตอบสนองข้อผิดพลาดทั้งหมดปฏิบัติตามโครงสร้างเดียวกัน:
การตอบสนองข้อผิดพลาด
{
"error": "error_code_here",
"message": "Human-readable explanation"
}
ข้อผิดพลาดบางรายการมีฟิลด์เพิ่มเติม: ref (รหัสอ้างอิงสำหรับการมอบหมายพลังงาน) และ refund (รายละเอียดเกี่ยวกับการคืนเงินอัตโนมัติ)
ข้อผิดพลาดในการตรวจสอบ
| รหัสข้อผิดพลาด | HTTP | สาเหตุ | วิธีแก้ไข |
|---|---|---|---|
invalid_tx_hash | 400 | tx_hash ไม่ใช่สตริง hex ที่มี 64 ตัวอักษร | ตรวจสอบรูปแบบแฮช ต้องเป็น hex 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} (แฮช hex ตัวพิมพ์เล็ก ลำไส้ใหญ่ ที่อยู่ Tron ที่แน่นอน) |
signature_mismatch | 403 | ที่อยู่ผู้ลงนามไม่ตรงกับผู้ส่งชำระเงิน | ลายเซ็นต้องมาจากกระเป๋าเงินเดียวกันที่ส่งการชำระเงิน TRX ต่างกระเป๋าเงิน = ปฏิเสธ |
ข้อผิดพลาดในการชำระเงิน
| รหัสข้อผิดพลาด | HTTP | สาเหตุ | วิธีแก้ไข |
|---|---|---|---|
payment_verification_failed | 404 / 400 | ไม่สามารถตรวจสอบการชำระเงินในเชน ฟิลด์ message อธิบายสาเหตุเฉพาะ | สาเหตุทั่วไป: tx ยังไม่ได้ยืนยัน (รอ 3-5 วินาทีและลองใหม่อีกครั้ง) ที่อยู่ผู้รับผิด ธุรกรรมไม่ใช่การโอน TRX ต่ำกว่าขั้นต่ำ 4 TRX |
hash_already_used | 409 | แฮชธุรกรรมนี้ได้รับการเรียกร้องแล้ว | แต่ละแฮชการชำระเงินสามารถใช้ได้เพียงครั้งเดียว ส่งการชำระเงินใหม่สำหรับการมอบหมายพลังงานใหม่ |
ข้อผิดพลาดของบริการ
| รหัสข้อผิดพลาด | HTTP | สาเหตุ | วิธีแก้ไข |
|---|---|---|---|
delegation_failed | 400 / 500 | ผู้ให้บริการไม่สามารถส่งมอบการมอบหมายพลังงาน | หากความล้มเหลวเกิดขึ้นหลังจากที่การชำระเงินของคุณได้รับการยืนยัน จะมีการเรียกคิวการคืนเงินอัตโนมัติ ตรวจสอบ refund object โปรดลองใหม่ หรือติดต่อ support พร้อมกับ ref ID |
rate_limited | 429 | คำขอมากเกินไปจาก IP นี้ | ชะลอการร้องขอและลองใหม่ ขีดจำกัดคือ 20 คำขอต่อวินาที |
server_error | 500 | เกิดข้อผิดพลาดภายในที่ไม่คาดคิด | ลองใหม่หลังจากผ่านไปสักครู่ หากปัญหายังคงเกิดขึ้น ติดต่อ support พร้อมกับ 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);