POST /apiv2/order5m
สร้างคำสั่งเช่า Energy ระยะเวลา 5 นาทีผ่านพูล Energy ภายในของ Netts
URL ของ Endpoint
POST https://netts.io/apiv2/order5mส่วนหัวของคำขอ
| ส่วนหัว | จำเป็น | คำอธิบาย |
|---|---|---|
| Content-Type | ใช่ | application/json |
| X-API-KEY | ใช่ | คีย์ API ของคุณจากแดชบอร์ด Netts |
| X-Real-IP | ใช่ | ที่อยู่ IP จากไวท์ลิสต์ของคุณ |
เนื้อหาคำขอ
{
"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
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
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)
{
"detail": {
"code": 10000,
"msg": "Successful, 1.430 TRX deducted",
"data": {
"orderId": "5Mb4ee11ef86",
"paidTRX": 1.43,
"hash": "3636f97dde244fca17cdc0b2cf7fd1572a9b4c6d8e0f1a3b5c7d9e1f3a5b7c9d",
"delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
"energy": 65050
}
}
}สำเร็จพร้อมการเปิดใช้งานที่อยู่ (200 OK)
เมื่อที่อยู่ผู้รับยังไม่เคยเปิดใช้งานบนเครือข่าย TRON ทาง Netts จะเปิดใช้งานให้อัตโนมัติ โดยค่าใช้จ่ายในการเปิดใช้งานจะถูกบวกรวมเข้ากับยอดรวม:
{
"detail": {
"code": 10000,
"msg": "Successful, 1.430 TRX for energy + 1.100 TRX for address activation",
"data": {
"orderId": "5Mb4ee11ef86",
"paidTRX": 2.53,
"hash": "3636f97dde244fca17cdc0b2cf7fd1572a9b4c6d8e0f1a3b5c7d9e1f3a5b7c9d",
"delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
"energy": 65050,
"activationHash": "bab38070a64b237acc9110ecf5135acc4d6e8f0a2b4c6d8e0f2a4b6c8d0e2f4a"
}
}
}ฟิลด์การตอบกลับ
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| detail.code | ตัวเลขจำนวนเต็ม | เป็น 10000 เสมอสำหรับคำสั่งซื้อที่สำเร็จ |
| detail.msg | ข้อความ | ข้อความแจ้งความสำเร็จพร้อมจำนวนเงินที่หัก |
| detail.data.orderId | ข้อความ | ID คำสั่งซื้อแบบรวมศูนย์ (รูปแบบ: 5M{id}) |
| detail.data.paidTRX | ตัวเลข | ค่าใช้จ่ายทั้งหมดในหน่วย TRX (รวมค่าเปิดใช้งานหากมี) |
| detail.data.hash | ข้อความ | แฮชของธุรกรรมการมอบสิทธิ์ |
| detail.data.delegateAddress | ข้อความ | ที่อยู่พูลที่ทำหน้าที่มอบสิทธิ์ Energy |
| detail.data.energy | ตัวเลขจำนวนเต็ม | จำนวน Energy + ส่วนสำรองเพิ่มเติม (โดยทั่วไปคือ +50) |
| detail.data.activationHash | ข้อความ | จะปรากฏเฉพาะเมื่อมีการเปิดใช้งานที่อยู่เท่านั้น |
การตอบกลับข้อผิดพลาด
จำนวน Energy ไม่ถูกต้อง (400)
{
"code": 1003,
"msg": "Energy amount must be between 61000 and 650000. Requested: 50000"
}ข้อผิดพลาดในการยืนยันตัวตน (401)
{
"detail": "Invalid API key or IP not in whitelist"
}ยอดเงินคงเหลือไม่เพียงพอ (403)
{
"code": 1004,
"msg": "Insufficient funds. Required: 1.43 TRX, Available: 0.50 TRX"
}บริการไม่พร้อมใช้งาน (503)
{
"code": 5003,
"msg": "Service temporarily unavailable. Energy delegation failed after retries."
}การจัดการข้อผิดพลาด 503
การตอบกลับ 503 หมายความว่าพูลภายในมีความจุเต็มชั่วคราว กลยุทธ์ที่แนะนำ:
- รอ 2-3 วินาทีแล้วลองส่งคำสั่งซื้อแบบ 5 นาทีใหม่อีกครั้ง
- หากยังไม่พร้อมใช้งาน ให้สลับไปใช้ เอนด์พอยต์ 1 ชั่วโมง ซึ่งใช้งานผู้ให้บริการหลายราย
ข้อผิดพลาดภายในเซิร์ฟเวอร์ (500)
{
"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 คำขอต่อวินาที |
ส่วนหัวของขีดจำกัดอัตราการเรียกใช้งาน
RateLimit-Limit: 50
RateLimit-Remaining: 49
RateLimit-Reset: 1
X-RateLimit-Limit-Second: 50
X-RateLimit-Remaining-Second: 49เกินขีดจำกัดอัตราการเรียกใช้งาน (429)
{
"message": "API rate limit exceeded"
}การทำงานแบบ Idempotency
API รองรับ Idempotency เพื่อป้องกันการประมวลผลคำสั่งซื้อซ้ำซ้อน เมื่อคุณส่งคำขอที่เหมือนกันหลายรายการ ระบบจะทำให้มั่นใจได้ว่าคำสั่งซื้อจะได้รับการประมวลผลเพียงครั้งเดียวเท่านั้น
หลักการทำงานของ Idempotency
ความซ้ำซ้อนของคำขอจะพิจารณาจากชุดค่าผสมของ:
- การประทับเวลาของคำขอ (Timestamp) (หน้าต่างเวลา 2 วินาที)
- จำนวน Energy
- ที่อยู่ผู้รับ
- คีย์ API
คำขอแต่ละรายการจะได้รับ หน้าต่างเวลาป้องกันความซ้ำซ้อน 2 วินาที คำขอที่มีพารามิเตอร์เหมือนกันทุกประการภายในช่วงเวลานี้จะถือว่าเป็นคำขอซ้ำ
การระบุคีย์ของคุณเอง
คุณสามารถควบคุม Idempotency ได้ด้วยตนเองโดยการส่งส่วนหัว X-Idempotency-Key เมื่อมีส่วนหัวนี้ ค่าดังกล่าวเพียงอย่างเดียวจะถูกนำมาใช้ตัดสินว่าคำขอนั้นเป็นคำขอซ้ำหรือไม่ และจะไม่มีการใช้ชุดค่าผสมอัตโนมัติด้านบน หากไม่มีส่วนหัวนี้ จะไม่มีอะไรเปลี่ยนแปลง — เซิร์ฟเวอร์จะสร้างคีย์ให้คุณโดยอัตโนมัติ
กฎเกณฑ์จะเหมือนกันกับบน /apiv2/order1h:
| ส่วนหัว | X-Idempotency-Key |
| รูปแบบ | อักขระเลขฐานสิบหกตัวพิมพ์เล็ก 64 ตัว เท่านั้น — ค่าไดเจสต์ SHA-256 |
| อายุการใช้งาน | 24 ชั่วโมงนับจากคำขอแรกที่มีคีย์ดังกล่าว |
| ขอบเขต | บัญชีของคุณ ค่าเดียวกันที่ส่งโดยบัญชีอื่นจะไม่ส่งคืนผลลัพธ์ของคุณโดยเด็ดขาด |
คีย์ในรูปแบบอื่นใด — UUID ที่มีเครื่องหมายขีดกลาง, base64, เลขฐานสิบหกตัวพิมพ์ใหญ่ — จะถูกปฏิเสธด้วยรหัส 400 ก่อนที่จะมีการสร้างคำสั่งซื้อและก่อนที่จะมีการเรียกเก็บเงินใดๆ:
{
"detail": "Invalid idempotency key format. Must be 64-character hexadecimal string."
}สร้างคีย์จากคีย์ API ของคุณเพื่อให้ไม่ซ้ำกับบัญชีของคุณและสามารถสร้างซ้ำได้เมื่อทำการลองใหม่ — ดูตัวอย่างการทำงานได้ใน หน้าแบบ 1 ชั่วโมง โปรดระบุระยะเวลาการเช่าลงในข้อความที่คุณนำมาแฮชด้วย: การเช่าที่อยู่เดียวกันสำหรับ 5 นาทีและสำหรับ 1 ชั่วโมงถือเป็นคนละคำสั่งซื้อ และการนำคีย์เดียวกันมาใช้ซ้ำสำหรับทั้งสองแบบจะทำให้คำขอที่สองได้รับผลการตอบกลับของคำสั่งซื้อแรก
การส่งคำสั่งซื้อที่เหมือนกันสองรายการ
เป็นข้อควรระวังเช่นเดียวกับเอนด์พอยต์รายชั่วโมง แต่มีหน้าต่างเวลาที่กว้างกว่า คำสั่งซื้อที่เหมือนกันสองรายการ — จำนวนเท่ากันไปยังที่อยู่เดียวกัน — จะแยกไม่ออกจากคำขอที่ลองใหม่ และมีเพียงจังหวะเวลาที่มาถึงเท่านั้นที่สร้างความแตกต่างระหว่างคำสั่งซื้อเหล่านั้น
หากไม่ได้ระบุคีย์ของคุณเอง:
| ช่องว่างเวลาระหว่างสองคำขอ | สิ่งที่จะเกิดขึ้น |
|---|---|
| ภายในหน้าต่างเวลา 2 วินาทีเดียวกัน | คำขอที่สองจะถือเป็นคำขอซ้ำ คำขอนี้จะ ไม่ถูกดำเนินการ: คุณจะได้รับ 208 และการตอบกลับของคำสั่งซื้อแรก และไม่มีการเรียกเก็บเงินใดๆ สำหรับคำขอนี้ |
| ห่างกันมากกว่าสองวินาที | ได้รับคีย์ที่แตกต่างกันสองคีย์ — คำสั่งซื้อทั้งสองรายการจะถูกดำเนินการและถูกเรียกเก็บเงินทั้งคู่ |
ดังนั้นควรเว้นระยะห่าง มากกว่าสองวินาที ระหว่างคำสั่งซื้อที่เหมือนกันสองรายการ และตรวจสอบรหัสสถานะ: 208 หมายความว่าคำสั่งซื้อที่คุณเพิ่งส่งไปนั้นไม่ได้ถูกสร้างขึ้น
การหยุดพักเป็นเพียงวิธีแก้ไขปัญหาชั่วคราว ไม่ใช่การแก้ปัญหาที่ต้นเหตุ — มันยังแยกระหว่างคำขอที่คุณไม่เคยตั้งใจจะส่งซ้ำด้วย เช่น การลองใหม่หลังจากหมดเวลา (timeout) หรือข้อความที่ถูกส่งซ้ำโดยคิวของคุณ ซึ่งแต่ละกรณีเหล่านั้นจะกลายเป็นคำสั่งซื้อที่แยกจากกันพร้อมการเรียกเก็บเงินที่แยกกัน การส่งคีย์ของคุณเองคือสิ่งที่จะช่วยจัดการเรื่องนี้ได้อย่างแท้จริง: ใช้ nonce ใหม่สำหรับคำสั่งซื้อใหม่ และใช้ nonce ของความพยายามครั้งแรกสำหรับการลองใหม่ ดูเหตุผลฉบับเต็มได้ใน หน้าแบบ 1 ชั่วโมง
รหัสสถานะ HTTP สำหรับคำขอซ้ำ
| รหัสสถานะ | ชื่อ | คำอธิบาย |
|---|---|---|
| 200 | OK | ดำเนินการคำสั่งซื้อสำเร็จ (คำขอแรก) |
| 208 | Already Reported | คำสั่งซื้อได้รับการประมวลผลแล้ว ส่งคืนการตอบกลับจากแคช |
| 409 | Conflict | คำขอกำลังอยู่ระหว่างการประมวลผล ห้ามลองส่งใหม่ |
คำขอซ้ำ - ได้รับการประมวลผลแล้ว (208)
{
"detail": {
"code": 10000,
"msg": "Successful, 1.430 TRX deducted",
"data": {
"hash": "3636f97dde244fca17cdc0b2cf7fd1572a9b4c6d8e0f1a3b5c7d9e1f3a5b7c9d",
"energy": 65050,
"orderId": "5Mb4ee11ef86",
"paidTRX": 1.43,
"delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq"
}
},
"idempotency": {
"status": "completed",
"cached": true,
"original_created_at": "2026-03-21T08:53:52.498000"
}
}คำขอซ้ำ - กำลังอยู่ระหว่างการประมวลผล (409)
{
"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 ชั่วโมง |
| ช่วง Energy | 61,000 - 650,000 | 61,000 - 3,000,000 |
| ผู้ให้บริการ | พูลภายในของ Netts เท่านั้น | พูลภายใน + ผู้ให้บริการภายนอก |
| ราคา | ถูกกว่า (อัตรา 5 นาที) | อัตรามาตรฐานรายชั่วโมง |
| ความพร้อมใช้งาน | อาจจำกัดในช่วงเวลาที่มีการใช้งานสูง | สูง (มีระบบสำรองจากผู้ให้บริการหลายราย) |
| เหมาะสำหรับ | ธุรกรรมขนาดเล็กที่เกิดขึ้นบ่อยครั้ง | ธุรกรรมขนาดใหญ่หรือที่ต้องการการันตีการส่งมอบ |
บัญชีแบบชำระเงินภายหลัง (Postpaid)
บัญชีที่ใช้ ระบบเรียกเก็บเงินแบบชำระเงินภายหลัง จะใช้เอนด์พอยต์, URL, ส่วนหัว และเนื้อหาคำขอเดียวกันกับผู้ใช้ทั่วไป ข้อแตกต่างคือวิธีการชำระเงินสำหรับคำสั่งซื้อ:
- ไม่มีการหักยอดเงินจากเงินฝากของคุณ คำสั่งซื้อที่สำเร็จแต่ละรายการจะถูกเพิ่มเข้าไปในยอดหนี้ของบัญชีของคุณใน สกุลเงินที่ใช้ชำระราคาตามที่ตกลงกันในสัญญาของคุณ คุณจะชำระเงินตามใบแจ้งหนี้ตามข้อตกลงของคุณ
- บัญชีของคุณจะมี วงเงินสินเชื่อ ตราบใดที่ยอดหนี้ที่ต้องชำระยังอยู่ภายในวงเงิน คำสั่งซื้อจะได้รับการอนุมัติแม้จะมียอดเงินฝากเป็นศูนย์ก็ตาม
- มีการเรียกเก็บเงินเฉพาะบริการที่ส่งมอบสำเร็จเท่านั้น คำสั่งซื้อที่ถูกปฏิเสธหรือไม่ได้ดำเนินการจะไม่มีค่าใช้จ่าย
- หากจำเป็นต้องเปิดใช้งานที่อยู่ผู้รับ การเปิดใช้งานจะเป็นส่วนหนึ่งของคำสั่งซื้อเดียวกันและจะถูกเรียกเก็บเงินเป็นรายการแยกต่างหาก
ระบบเรียกเก็บเงินแบบชำระเงินภายหลังจะเปิดใช้งานโดย Netts ตามคำขอของบัญชี ทุกการตอบกลับจะบอกคุณว่าคำสั่งซื้อนั้นชำระอย่างไร: paymentMode คือ postpaid หรือ prepaid
ฟิลด์คำขอเพิ่มเติม
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| test | ค่าความจริง | ไม่ | true — คำนวณราคาเท่านั้น ไม่มีการสั่งซื้อ ส่งมอบ หรือเรียกเก็บเงินใดๆ |
| freezePrice | ค่าความจริง | ไม่ | true — ตรึงราคาภายใต้สัญญาของคุณเป็นเวลา 60 วินาที ไม่มีการสั่งซื้อหรือเรียกเก็บเงินใดๆ |
| quoteId | ข้อความ | ไม่ | สร้างคำสั่งซื้อตามราคาของใบเสนอราคาที่ออกโดย freezePrice |
| priceCurrency | ข้อความ | ไม่ | TRX (ค่าเริ่มต้น) หรือสกุลเงินตามสัญญาของคุณ เช่นใน settlement.asset สำหรับบัญชีแบบชำระเงินภายหลัง จำนวนเงินในสกุลเงินตามสัญญาของคุณจะรวมอยู่ด้วยเสมอ |
quoteId ไม่สามารถใช้ร่วมกับ test หรือ freezePrice ได้ ฟิลด์อื่นๆ ในเนื้อหาคำขอจะถูกปฏิเสธ
การตรวจสอบราคา (test: true)
{
"amount": 65000,
"receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
"test": true
}{
"detail": {
"code": 10010,
"msg": "Test calculation",
"data": {
"amount": 65000,
"unitPriceSun": "19",
"discount": null,
"energyTRX": "1.235000",
"activationTRX": "1.100000",
"wouldCostTRX": "2.335000",
"paidTRX": 0,
"paymentMode": "postpaid",
"activationCheck": "inactive",
"alt": {"USDC": {"energy": "0.409088", "activation": "0.364370", "total": "0.773458"}},
"fxAt": "2026-10-19T07:16:12.548894+00:00"
}
}
}| ฟิลด์ | คำอธิบาย |
|---|---|
| unitPriceSun | ราคาต่อหน่วย Energy ในหน่วย SUN รวมส่วนลดส่วนบุคคลของคุณแล้วหากมี |
| discount | ส่วนลดส่วนบุคคลของคุณ (type, value) หรือ null |
| energyTRX / activationTRX / wouldCostTRX | Energy, การเปิดใช้งาน (หากที่อยู่นั้นจำเป็นต้องใช้) และยอดรวม ในหน่วย TRX |
| activationCheck | inactive — ที่อยู่จะได้รับการเปิดใช้งานและเรียกเก็บเงิน; active — ไม่มีการเปิดใช้งาน; unknown — ไม่สามารถตรวจสอบได้ในขณะนี้ |
alt.<currency> | จำนวนเงินเดียวกันในสกุลเงินตามสัญญาของคุณ |
| fxAt | เวลาของอัตราแลกเปลี่ยนที่ใช้สำหรับจำนวนเงินในสกุลเงินตามสัญญาของคุณ |
ใบเสนอราคาแบบคงที่ (freezePrice: true)
ใช้ใบเสนอราคาเพื่อตรึงราคาภายใต้สัญญาของคุณก่อนที่คุณจะทำการสั่งซื้อ
- ส่งคำสั่งซื้อพร้อม
"freezePrice": trueการตอบกลับจะมีรหัส10011(Quote issued), ฟิลด์เดียวกันกับการตรวจสอบราคา พร้อมด้วยquoteIdและexpiresAt - ภายใน 60 วินาที ให้ส่งคำสั่งซื้อพร้อม
"quoteId": "<quoteId>"และamountรวมถึงreceiveAddressเดิม - คำสั่งซื้อจะถูกเรียกเก็บเงินตามราคาที่เสนอ — ราคาภายใต้สัญญาของคุณ ณ เวลาที่ออกใบเสนอราคา — แม้ว่าราคาจะเปลี่ยนแปลงหลังจากนั้นก็ตาม
ใบเสนอราคาสามารถใช้งานได้ ครั้งเดียว และสำหรับผลิตภัณฑ์ประเภทเดียวกันเท่านั้น: ใบเสนอราคาแบบ 5 นาทีไม่สามารถนำไปชำระสำหรับคำสั่งซื้อแบบ 1 ชั่วโมงได้ ใบเสนอราคาที่หมดอายุหรือถูกใช้ไปแล้วจะถูกปฏิเสธและจะไม่มีการสั่งซื้อเกิดขึ้น
{
"amount": 65000,
"receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
"quoteId": "q_4f540f16a2c94b7f8e3d1a6b5c0e9d72"
}คำสั่งซื้อสำเร็จ
{
"detail": {
"code": 10000,
"msg": "Successful, 1.24 TRX service cost, postpaid",
"data": {
"orderId": "5M5f557d2fba",
"paidTRX": 1.235,
"hash": "c1fafd8ef7fb6b7fb8a729120756b26e611f401275cb4f7a04fe2bafd75b13da",
"delegateAddress": "TR3qZsdmkFcvP729Md3PwXzktFQkMoUzjg",
"energy": 65000,
"paymentMode": "postpaid",
"energyTRX": "1.235000",
"activationTRX": "0.000000",
"totalTRX": "1.235000"
}
}
}| ฟิลด์ | คำอธิบาย |
|---|---|
| paidTRX | ค่าบริการในหน่วย TRX สำหรับบัญชีแบบชำระเงินภายหลังจะ ไม่ ถูกหักออกจากเงินฝาก |
| paymentMode | postpaid |
| energyTRX / activationTRX / totalTRX | จำนวนเงินที่แน่นอน ทศนิยม 6 ตำแหน่ง |
| quoteId, alt | จะแสดงเมื่อคำสั่งซื้อถูกส่งด้วยใบเสนอราคา: รหัสใบเสนอราคาและจำนวนเงินตามใบเสนอราคา |
ฟิลด์อื่นๆ ทั้งหมดเหมือนกับคำสั่งซื้อแบบชำระเงินล่วงหน้า (Prepaid)
วงเงินสินเชื่อเต็ม (402)
{
"detail": {
"code": 1004,
"msg": "Postpaid credit limit reached.",
"paymentMode": "postpaid",
"reason": "limit_reached"
}
}คำสั่งซื้อจะไม่ถูกดำเนินการและไม่มีการเรียกเก็บเงินใดๆ คำสั่งซื้อใหม่จะได้รับการยอมรับอีกครั้งเมื่อการชำระเงินของคุณได้รับการบันทึกหรือมีการเพิ่มวงเงินของคุณ
รหัสข้อผิดพลาดของระบบชำระเงินภายหลัง
| รหัส | HTTP | คำอธิบาย |
|---|---|---|
10010 | 200 | ผลลัพธ์การตรวจสอบราคา (test) |
10011 | 200 | ออกใบเสนอราคาแล้ว (freezePrice) |
1004 | 402 | วงเงินสินเชื่อของระบบชำระเงินภายหลังเต็ม |
4100 | 400 | คำขอไม่ถูกต้อง |
4101 | 400 | ไม่รองรับ priceCurrency |
4102 | 400 | มีการใช้ quoteId ร่วมกับ test หรือ freezePrice |
4103 | 409 | ใบเสนอราคาถูกใช้งานไปแล้ว |
4104 | 409 | ใบเสนอราคาหมดอายุ |
4105 | 409 | คีย์ Idempotency ถูกใช้ไปแล้วสำหรับคำขออื่น |
4106 | 404 | ไม่พบใบเสนอราคา |
4107 | 409 | พารามิเตอร์ของคำสั่งซื้อแตกต่างจากในใบเสนอราคา |
4108 | 400 | รูปแบบ quoteId ไม่ถูกต้อง |
4109 | 422 | ไม่สามารถใช้งานได้สำหรับบัญชีย่อย |
5032 | 503 | ราคาไม่พร้อมใช้งานชั่วคราว |
5033 | 503 | อัตราแลกเปลี่ยนไม่พร้อมใช้งานชั่วคราว |
5034 | 503 | ระบบเรียกเก็บเงินไม่พร้อมใช้งานชั่วคราว — คำสั่งซื้อไม่ได้รับการยอมรับ |
5036 | 503 | การตรวจสอบสินเชื่อไม่พร้อมใช้งานชั่วคราว — โปรดลองใหม่ภายหลัง |
สำหรับการตอบกลับ 4xx และ 503 ทั้งหมดข้างต้น จะไม่มีการสั่งซื้อและไม่มีการเรียกเก็บเงินใดๆ
หมายเหตุ
- Energy จะได้รับการส่งมอบทันทีเมื่อสั่งซื้อสำเร็จ (โดยทั่วไปภายใน 0.5-2 วินาที)
- การหมดเวลาตอบกลับของ API: สูงสุด 10 วินาที (รวมความพยายามในการลองใหม่ภายในระบบ)
- การเปิดใช้งานที่อยู่: หากที่อยู่ผู้รับยังไม่ได้เปิดใช้งาน Netts จะเปิดใช้งานให้ตามราคาทุน ค่าใช้จ่ายในการเปิดใช้งานจะถูกเรียกเก็บเพียงครั้งเดียวต่อที่อยู่
- ระยะเวลา: คงที่ 5 นาที (300 วินาที)
- จำนวน Energy ขั้นต่ำ: 61,000 หน่วย
- จำนวน Energy สูงสุด: 650,000 หน่วยต่อคำสั่งซื้อ
- Energy สำรองเพิ่มเติม: เพิ่ม +50 หน่วยโดยอัตโนมัติ (ไม่มีค่าใช้จ่าย)
- รูปแบบ ID คำสั่งซื้อ:
5M{id}สำหรับการติดตามแบบรวมศูนย์ - การกำหนดราคา: แบบไดนามิกตามช่วงเวลาของวันผ่าน Pricing API
- การจำกัดอัตราการเรียกใช้งาน: 50 คำขอต่อวินาทีต่อที่อยู่ IP
- พูลภายในเท่านั้น: หากพูลมีความจุเต็ม ให้ลองส่งใหม่หลังจากหน่วงเวลาสั้นๆ หรือใช้ เอนด์พอยต์ 1 ชั่วโมง เป็นทางเลือกสำรอง