Skip to content
Translated page. The English version is the source of truth.

POST /apiv2/order5m

สร้างคำสั่งเช่า Energy ระยะเวลา 5 นาทีผ่านพูล Energy ภายในของ Netts

URL ของ Endpoint

POST https://netts.io/apiv2/order5m

Headers ของคำขอ

ส่วนหัวจำเป็นคำอธิบาย
Content-Typeใช่application/json
X-API-KEYใช่คีย์ API ของคุณจากแดชบอร์ด Netts
X-Real-IPใช่ที่อยู่ IP จากไวท์ลิสต์ของคุณ

เนื้อหาของคำขอ

json
{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
}

พารามิเตอร์

พารามิเตอร์ประเภทจำเป็นคำอธิบาย
amountตัวเลขจำนวนเต็มใช่ปริมาณ Energy ที่ต้องการเช่า (ขั้นต่ำ: 61,000, สูงสุด: 650,000)
receiveAddressข้อความใช่ที่อยู่ TRON ที่จะรับ Energy (รูปแบบ TRC-20)

ขีดจำกัด Energy

ปลายทางแบบ 5 นาทีรับปริมาณ Energy ระหว่าง 61,000 ถึง 650,000 หน่วยต่อหนึ่งคำสั่งซื้อ คำขอที่อยู่นอกเหนือช่วงนี้จะถูกปฏิเสธด้วย HTTP 400

ข้อมูลผู้ให้บริการ

คำสั่งซื้อ Energy แบบ 5 นาทีจะดำเนินการผ่าน พูล Energy ภายในของ Netts โดยเฉพาะ ซึ่งแตกต่างจากปลายทางแบบ 1 ชั่วโมงตรงที่ไม่มีการใช้งานผู้ให้บริการภายนอก

ความพร้อมใช้งานและกลยุทธ์การลองใหม่

เนื่องจากการมอบสิทธิ์ (Delegation) มาจากพูลภายในเท่านั้น จึงอาจเกิดภาวะไม่พร้อมให้บริการชั่วคราวในช่วงเวลาที่มีความต้องการสูง หากคุณได้รับข้อผิดพลาด 503 ให้ ลองส่งคำขอใหม่อีกครั้งหลังจากหน่วงเวลาสั้นๆ หรือเปลี่ยนไปใช้ ปลายทางแบบ 1 ชั่วโมง ซึ่งสามารถเข้าถึงผู้ให้บริการภายนอกได้หลายราย

ตัวอย่างคำขอ

cURL

bash
curl -X POST https://netts.io/apiv2/order5m \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -d '{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
  }'

Python

python
import requests

url = "https://netts.io/apiv2/order5m"
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip"
}

payload = {
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
}

response = requests.post(url, headers=headers, json=payload)
data = response.json()

if response.status_code == 200:
    detail = data.get('detail', {})
    order_data = detail.get('data', {})
    print(f"Order ID: {order_data.get('orderId')}")
    print(f"Transaction Hash: {order_data.get('hash')}")
    print(f"Energy Delivered: {order_data.get('energy')}")
    print(f"Cost: {order_data.get('paidTRX')} TRX")
    print(f"Delegate Address: {order_data.get('delegateAddress')}")
elif response.status_code == 503:
    # Pool temporarily unavailable - retry or fallback to 1h
    print("Pool busy, retrying in 2 seconds...")
else:
    error_detail = data.get('detail', data)
    print(f"Error Code: {error_detail.get('code', 'N/A')}")
    print(f"Error Message: {error_detail.get('msg', error_detail)}")

การตอบกลับ

การตอบกลับเมื่อสำเร็จ (200 OK)

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX deducted",
        "data": {
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 1.43,
            "hash": "3636f97dde244fca17cdc0b2cf7fd157...",
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
            "energy": 65050
        }
    }
}

สำเร็จพร้อมการเปิดใช้งานที่อยู่ (200 OK)

เมื่อที่อยู่ผู้รับยังไม่เคยถูกเปิดใช้งานบนเครือข่าย TRON ทาง Netts จะทำการเปิดใช้งานให้โดยอัตโนมัติ โดยค่าใช้จ่ายในการเปิดใช้งานจะถูกบวกเพิ่มเข้าไปในยอดรวม:

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX for energy + 1.100 TRX for address activation",
        "data": {
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 2.53,
            "hash": "3636f97dde244fca17cdc0b2cf7fd157...",
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
            "energy": 65050,
            "activationHash": "bab38070a64b237acc9110ecf5135acc..."
        }
    }
}

ฟิลด์การตอบกลับ

ฟิลด์ประเภทคำอธิบาย
detail.codeตัวเลขจำนวนเต็มเป็น 10000 เสมอสำหรับคำสั่งซื้อที่สำเร็จ
detail.msgข้อความข้อความแจ้งความสำเร็จพร้อมจำนวนเงินที่ถูกหัก
detail.data.orderIdข้อความรหัสคำสั่งซื้อแบบรวมศูนย์ (รูปแบบ: 5M{id})
detail.data.paidTRXตัวเลขค่าใช้จ่ายรวมในหน่วย TRX (รวมค่าธรรมเนียมการเปิดใช้งานหากมี)
detail.data.hashข้อความแฮชของธุรกรรมการมอบสิทธิ์ (Delegation)
detail.data.delegateAddressข้อความที่อยู่ของพูลที่ทำการมอบสิทธิ์ Energy
detail.data.energyตัวเลขจำนวนเต็มปริมาณ Energy + ส่วนเผื่อบัฟเฟอร์ (โดยทั่วไปคือ +50)
detail.data.activationHashข้อความจะปรากฏเฉพาะเมื่อมีการเปิดใช้งานที่อยู่เท่านั้น

การตอบกลับเมื่อเกิดข้อผิดพลาด

ปริมาณ Energy ไม่ถูกต้อง (400)

json
{
    "code": 1003,
    "msg": "Energy amount must be between 61000 and 650000. Requested: 50000"
}

ข้อผิดพลาดในการยืนยันตัวตน (401)

json
{
    "detail": "Invalid API key or IP not in whitelist"
}

ยอดเงินคงเหลือไม่เพียงพอ (403)

json
{
    "code": 1004,
    "msg": "Insufficient funds. Required: 1.43 TRX, Available: 0.50 TRX"
}

ไม่พร้อมให้บริการ (503)

json
{
    "code": 5003,
    "msg": "Service temporarily unavailable. Energy delegation failed after retries."
}

การจัดการข้อผิดพลาด 503

การตอบกลับ 503 หมายความว่าพูลภายในมีความจุเต็มชั่วคราว กลยุทธ์ที่แนะนำ:

  1. รอประมาณ 2-3 วินาทีแล้วลองส่งคำสั่งซื้อแบบ 5 นาทีใหม่อีกครั้ง
  2. หากยังคงไม่พร้อมใช้งาน ให้สลับไปใช้ ปลายทางแบบ 1 ชั่วโมง ซึ่งใช้งานผู้ให้บริการหลายราย

ข้อผิดพลาดภายในเซิร์ฟเวอร์ (500)

json
{
    "code": 5000,
    "msg": "Internal server error occurred"
}

ข้อมูลอ้างอิงรหัสข้อผิดพลาด

รหัสคำอธิบายสถานะ HTTP
10000สำเร็จ200
10000สำเร็จ (การตอบกลับจากแคช)208
-คำขอซ้ำซ้อนกำลังอยู่ระหว่างดำเนินการ409
1003ปริมาณ Energy อยู่นอกช่วงที่กำหนด400
1004ยอดเงินคงเหลือไม่เพียงพอ403
1005ยังไม่ได้กำหนดค่าที่อยู่ผู้ชำระเงินของผู้ใช้400
5000ข้อผิดพลาดภายในเซิร์ฟเวอร์500
5003บริการ Energy ไม่พร้อมใช้งาน503

ขีดจำกัดอัตราการเรียกใช้

ขีดจำกัดอัตราต่อไปนี้มีผลกับปลายทางนี้ (ต่อที่อยู่ IP):

ช่วงเวลาขีดจำกัดคำอธิบาย
1 วินาที50 คำขอสูงสุด 50 คำขอต่อวินาที

ส่วนหัวขีดจำกัดอัตราการเรียกใช้

http
RateLimit-Limit: 50
RateLimit-Remaining: 49
RateLimit-Reset: 1
X-RateLimit-Limit-Second: 50
X-RateLimit-Remaining-Second: 49

เกินขีดจำกัดอัตราการเรียกใช้ (429)

json
{
    "message": "API rate limit exceeded"
}

การทำงานแบบ Idempotency

API รองรับ Idempotency เพื่อป้องกันการประมวลผลคำสั่งซื้อซ้ำ เมื่อคุณส่งคำขอที่เหมือนกันหลายรายการ ระบบจะทำให้มั่นใจว่าคำสั่งซื้อจะถูกประมวลผลเพียงครั้งเดียวเท่านั้น

หลักการทำงานของ Idempotency

ความซ้ำซ้อนของคำขอจะพิจารณาจากชุดข้อมูลร่วมดังต่อไปนี้:

  • การประทับเวลาของคำขอ (หน้าต่างเวลา 2 วินาที)
  • ปริมาณ Energy
  • ที่อยู่ผู้รับ
  • คีย์ API

แต่ละคำขอจะได้รับ หน้าต่างเวลาความเฉพาะตัว 2 วินาที คำขอที่มีพารามิเตอร์เหมือนกันทั้งหมดภายในหน้าต่างเวลานี้จะถือว่าเป็นรายการซ้ำ

การระบุคีย์ของคุณเอง

คุณสามารถควบคุม Idempotency ได้ด้วยตนเองโดยการส่งส่วนหัว X-Idempotency-Key เมื่อมีส่วนหัวนี้ ค่าดังกล่าวจะถูกใช้เป็นเกณฑ์ตัดสินแต่เพียงผู้เดียวว่าคำขอนั้นเป็นรายการซ้ำหรือไม่ และจะไม่มีการใช้ชุดข้อมูลร่วมอัตโนมัติตามด้านบน ในกรณีที่ไม่มีส่วนหัวนี้ ทุกอย่างจะทำงานตามปกติ โดยเซิร์ฟเวอร์จะสร้างคีย์ขึ้นมาให้คุณโดยอัตโนมัติ

กฎเกณฑ์จะเหมือนกันกับบน /apiv2/order1h:

ส่วนหัวX-Idempotency-Key
รูปแบบอักขระเลขฐานสิบหกพิมพ์เล็ก 64 ตัว เท่านั้น — ค่าสรุปย่อยแบบ SHA-256
อายุการใช้งาน24 ชั่วโมง นับจากคำขอแรกที่มีคีย์ดังกล่าว
ขอบเขตบัญชีของคุณ ค่าเดียวกันที่ส่งโดยบัญชีอื่นจะไม่มีวันส่งคืนผลลัพธ์ของคุณ

คีย์ที่มีรูปแบบอื่นใด — เช่น UUID ที่มีเครื่องหมายขีดคั่น, base64, เลขฐานสิบหกตัวพิมพ์ใหญ่ — จะถูกปฏิเสธด้วย 400 ก่อนที่คำสั่งซื้อจะถูกสร้างและก่อนที่จะมีการเรียกเก็บเงิน:

json
{
    "detail": "Invalid idempotency key format. Must be 64-character hexadecimal string."
}

สร้างคีย์ขึ้นจากคีย์ API ของคุณเพื่อให้มีความเฉพาะเจาะจงสำหรับบัญชีของคุณและสามารถสร้างซ้ำได้เมื่อทำการลองใหม่ — ดูตัวอย่างการทำงานได้ที่ หน้าคำสั่งซื้อ 1 ชั่วโมง ระบุระยะเวลาการเช่าเข้าไปในข้อความที่คุณนำไปทำแฮชด้วย: การเช่าไปยังที่อยู่เดียวกันเป็นเวลา 5 นาทีและการเช่าเป็นเวลา 1 ชั่วโมงถือเป็นคำสั่งซื้อที่ต่างกัน และการนำคีย์เดียวกันมาใช้ซ้ำสำหรับทั้งสองรายการจะส่งผลให้การตอบกลับของคำสั่งซื้อแรกถูกส่งคืนสำหรับคำขอที่สอง

การสร้างคำสั่งซื้อที่เหมือนกันสองรายการ

ข้อควรระวังเช่นเดียวกันกับปลายทางรายชั่วโมง โดยมีหน้าต่างเวลาที่กว้างกว่า คำสั่งซื้อที่เหมือนกันสองรายการ — ปริมาณเท่ากันไปยังที่อยู่เดียวกัน — จะแยกไม่ออกจากการลองส่งใหม่ และมีเพียงเวลาที่มาถึงเท่านั้นที่แยกความแตกต่างได้

ในกรณีที่ไม่มีคีย์ที่คุณกำหนดเอง:

ช่องว่างระหว่างคำขอทั้งสองสิ่งที่จะเกิดขึ้น
ภายในหน้าต่างเวลา 2 วินาทีเดียวกันคำขอที่สองจะถือเป็นการส่งซ้ำ คำขอดังกล่าวจะ ไม่ถูกดำเนินการ: คุณจะได้รับ 208 และการตอบกลับของคำสั่งซื้อแรก และจะไม่มีการคิดค่าบริการสำหรับคำขอนั้น
ห่างกันมากกว่าสองวินาทีถือเป็นคนละคีย์ — คำสั่งซื้อทั้งสองจะถูกสร้างขึ้นและถูกคิดค่าบริการทั้งคู่

ดังนั้นควรเว้นระยะห่าง มากกว่าสองวินาที ระหว่างคำสั่งซื้อที่เหมือนกันสองรายการ และตรวจสอบรหัสสถานะ: 208 หมายความว่าคำสั่งซื้อที่คุณเพิ่งส่งไปนั้นไม่ได้ถูกสร้างขึ้น

การหยุดรอเป็นเพียงวิธีแก้ปัญหาชั่วคราว ไม่ใช่การแก้ไขที่ต้นเหตุ — นอกจากนี้ยังคั่นคำขอที่คุณไม่เคยตั้งใจจะส่งซ้ำด้วย เช่น การลองใหม่หลังจากหมดเวลา หรือข้อความที่ถูกส่งซ้ำโดยคิวของคุณ ซึ่งแต่ละกรณีจะกลายเป็นคำสั่งซื้อแยกต่างหากพร้อมค่าบริการแยกกัน การส่งคีย์ของคุณเองคือสิ่งที่จะช่วยจัดการปัญหานี้ได้อย่างแท้จริง: ใช้ nonce ใหม่สำหรับคำสั่งซื้อใหม่ และใช้ nonce ของความพยายามครั้งแรกสำหรับการลองใหม่ คำอธิบายเหตุผลโดยละเอียดอยู่ที่ หน้าคำสั่งซื้อ 1 ชั่วโมง

รหัสสถานะ HTTP สำหรับคำขอซ้ำซ้อน

รหัสสถานะชื่อคำอธิบาย
200OKประมวลผลคำสั่งซื้อสำเร็จ (คำขอแรก)
208Already Reportedคำสั่งซื้อได้รับการประมวลผลแล้ว ส่งคืนการตอบกลับจากแคช
409Conflictคำขอกำลังอยู่ระหว่างการประมวลผล ห้ามลองส่งใหม่

คำขอซ้ำซ้อน - ประมวลผลแล้ว (208)

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX deducted",
        "data": {
            "hash": "3636f97dde244fca17cdc0b2cf7fd157...",
            "energy": 65050,
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 1.43,
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq"
        }
    },
    "idempotency": {
        "status": "completed",
        "cached": true,
        "original_created_at": "2026-03-21T08:53:52.498000"
    }
}

คำขอซ้ำซ้อน - กำลังประมวลผล (409)

json
{
    "success": false,
    "error": "duplicate_request_processing",
    "message": "This request is currently being processed. Please wait and do not retry.",
    "retry_after_seconds": 3
}

แนวทางปฏิบัติที่ดีที่สุด

  • อย่าส่งคำขอพร้อมกันแบบคู่ขนาน ด้วยพารามิเตอร์เดียวกัน - ให้รอการตอบกลับของแต่ละคำขอ
  • จัดการการตอบกลับ 409 โดยการรอ ไม่ใช่การลองส่งใหม่ในทันที
  • ตรวจสอบฟิลด์ idempotency.cached เพื่อระบุการตอบกลับที่มาจากแคช

การเปรียบเทียบ: คำสั่งซื้อแบบ 5 นาที กับ 1 ชั่วโมง

ฟีเจอร์คำสั่งซื้อแบบ 5 นาทีคำสั่งซื้อแบบ 1 ชั่วโมง
ปลายทาง/apiv2/order5m/apiv2/order1h
ระยะเวลา5 นาที1 ชั่วโมง
ช่วง Energy61,000 - 650,00061,000 - 3,000,000
ผู้ให้บริการพูลภายในของ Netts เท่านั้นพูลภายใน + ผู้ให้บริการภายนอก
ราคาต่ำกว่า (อัตรา 5 นาที)อัตรามาตรฐานรายชั่วโมง
ความพร้อมใช้งานอาจมีจำกัดในช่วงที่มีการใช้งานสูงสูง (มีระบบสำรองจากผู้ให้บริการหลายราย)
เหมาะสำหรับธุรกรรมย่อยที่เกิดขึ้นบ่อยครั้งธุรกรรมขนาดใหญ่หรือต้องการการส่งมอบที่แน่นอน

หมายเหตุ

  • Energy จะถูกส่งมอบทันทีเมื่อคำสั่งซื้อสำเร็จ (โดยทั่วไปภายใน 0.5-2 วินาที)
  • การหมดเวลาตอบกลับของ API: สูงสุด 10 วินาที (รวมการพยายามลองใหม่ภายในระบบแล้ว)
  • การเปิดใช้งานที่อยู่: หากที่อยู่ผู้รับยังไม่ได้เปิดใช้งาน Netts จะเปิดใช้งานให้ตามราคาทุน ค่าใช้จ่ายในการเปิดใช้งานจะถูกเรียกเก็บเพียงครั้งเดียวต่อหนึ่งที่อยู่
  • ระยะเวลา: คงที่ 5 นาที (300 วินาที)
  • ปริมาณ Energy ขั้นต่ำ: 61,000 หน่วย
  • ปริมาณ Energy สูงสุด: 650,000 หน่วยต่อคำสั่งซื้อ
  • ส่วนเผื่อ Energy: เพิ่มให้อัตโนมัติ +50 หน่วย (ไม่มีค่าใช้จ่าย)
  • รูปแบบรหัสคำสั่งซื้อ: 5M{id} สำหรับการติดตามแบบรวมศูนย์
  • การกำหนดราคา: ปรับเปลี่ยนตามช่วงเวลาของวันผ่าน Pricing API
  • การจำกัดอัตราการเรียกใช้: 50 คำขอต่อวินาทีต่อที่อยู่ IP
  • พูลภายในเท่านั้น: หากพูลมีความจุเต็ม ให้ลองใหม่หลังจากหน่วงเวลาสั้นๆ หรือใช้ ปลายทางแบบ 1 ชั่วโมง เป็นระบบสำรอง