POST /apiv2/bandwidth
เช่า TRON bandwidth และมอบหมาย (delegate) ไปยังที่อยู่ผู้รับตามระยะเวลาที่กำหนด: 5 นาที หรือ 1 ชั่วโมงสำหรับบัญชีที่ผ่านการรับรอง
⚠️ ระดับการเข้าถึง (Access tiers)
- บัญชีที่ผ่านการรับรอง (Accredited accounts) สามารถเช่า จำนวนเท่าใดก็ได้ (สูงสุด 5000) เป็นเวลา 5 นาทีหรือ 1 ชั่วโมง ภายในขนาดของพูลและขีดจำกัดสูงสุด โดยสามารถส่ง คำสั่งซื้อพร้อมกันได้หลายรายการ การรับรองจะได้รับการอนุมัติโดย ฝ่ายสนับสนุนของ Netts
- หากไม่มีการรับรอง คุณสามารถเช่าได้ 400 หน่วยเป็นเวลา 5 นาที ครั้งละหนึ่งรายการ — คำสั่งซื้อถัดไปจะทำได้ก็ต่อเมื่อ การเช่าก่อนหน้าสิ้นสุดลงแล้วเท่านั้น คำขอสำหรับจำนวนอื่นที่ไม่ใช่ 400 คำขอเช่า 1 ชั่วโมง หรือคำสั่งซื้อที่สองในขณะที่คำสั่งซื้อแรกยังคงทำงานอยู่ จะถูกปฏิเสธ
URL ของ Endpoint
POST https://netts.io/apiv2/bandwidthHeaders ของคำขอ
| Header | Required | Description |
|---|---|---|
| Content-Type | Yes | application/json |
| X-API-KEY | Yes | คีย์ API ของคุณจากแดชบอร์ด Netts |
| X-Real-IP | Yes | ที่อยู่ IP จากไวท์ลิสต์ของคุณ |
| X-Idempotency-Key | No | คีย์เสริมที่ไคลเอนต์สร้างขึ้น (base64) เพื่อลองส่งคำขอใหม่ได้อย่างปลอดภัยโดยไม่เกิดคำสั่งซื้อซ้ำซ้อน หากละเว้นไว้ เซิร์ฟเวอร์จะสร้างขึ้นโดยอัตโนมัติ |
เนื้อหาของคำขอ
{
"amount": 1500,
"receiveAddress": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"period": "5m"
}พารามิเตอร์ของคำขอ
| Parameter | Type | Required | Description |
|---|---|---|---|
| amount | integer | Yes | จำนวนหน่วย Bandwidth ที่ต้องการเช่า (ขั้นต่ำ: 400, สูงสุด: 5000) |
| receiveAddress | string | Yes | ที่อยู่ TRON ที่จะรับ bandwidth (T…, ความยาว 34 ตัวอักษร, base58) |
| period | string | Yes | ระยะเวลาการเช่า: "5m" (5 นาที) หรือ "1h" (1 ชั่วโมง เฉพาะบัญชีที่ผ่านการรับรอง) |
| trx_send | boolean | No | การทำธุรกรรมที่รับประกัน: หากไม่มี bandwidth ให้บริการ จะส่ง TRX ไปยังที่อยู่ดังกล่าวแทนเพื่อให้ธุรกรรมยังคงดำเนินการได้ ใช้งานได้เฉพาะเมื่อ amount = 400 เท่านั้น (กรณีอื่นจะถูกละเว้น) ค่าเริ่มต้นคือ false |
| check | boolean | No | หากเป็น true และผู้รับมี bandwidth มากกว่า 400 อยู่แล้ว คำสั่งซื้อจะ ไม่ ถูกมอบหมายและ ไม่มีการเรียกเก็บเงิน (สถานะ enough) ค่าเริ่มต้นคือ false |
| test | boolean | No | การจำลองการทำงาน (Dry run) หากเป็น true ขั้นตอนการสั่งซื้อทั้งหมดจะถูกจำลองขึ้น — การตอบกลับจะแจ้งให้คุณทราบถึง ผลลัพธ์ ที่จะเกิดขึ้นและ ราคา ที่จะถูกเรียกเก็บ — โดยไม่มีการดำเนินการใดๆ บนเครือข่ายบล็อกเชนและไม่มีการเรียกเก็บเงิน ค่าเริ่มต้นคือ false |
ตัวอย่าง
ตัวอย่างด้านล่างนี้ยังรวมถึงการ สร้างและส่ง
X-Idempotency-Keyเพื่อไม่ให้การส่งซ้ำโดยไม่ได้ตั้งใจสร้างคำสั่งซื้อที่สองขึ้นมา ดูรายละเอียดกฎทั้งหมดได้ที่ ความสามารถในการทำงานซ้ำได้ (Idempotency)
cURL
API_KEY="your_api_key"
ADDR="TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
AMOUNT=1500
PERIOD="5m"
NONCE=$(( $(date +%s) / 2 )) # stable for retries within a 2s window; or your own order UUID
# X-Idempotency-Key = base64( HMAC-SHA256( API_KEY, "addr:amount:period:nonce" ) )
IDEMP=$(printf '%s' "${ADDR}:${AMOUNT}:${PERIOD}:${NONCE}" \
| openssl dgst -sha256 -hmac "$API_KEY" -binary | base64)
curl -X POST https://netts.io/apiv2/bandwidth \
-H "Content-Type: application/json" \
-H "X-API-KEY: $API_KEY" \
-H "X-Real-IP: your_whitelisted_ip" \
-H "X-Idempotency-Key: $IDEMP" \
-d "{\"amount\": $AMOUNT, \"receiveAddress\": \"$ADDR\", \"period\": \"$PERIOD\"}"Python
import time, hmac, hashlib, base64, requests
API_KEY = "your_api_key"
url = "https://netts.io/apiv2/bandwidth"
payload = {
"amount": 1500,
"receiveAddress": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"period": "5m",
}
# X-Idempotency-Key = base64( HMAC-SHA256( API_KEY, "addr:amount:period:nonce" ) )
# Generate ONCE per order and resend the same value on every retry.
nonce = str(int(time.time() // 2)) # 2s bucket; or your own order UUID
message = f"{payload['receiveAddress']}:{payload['amount']}:{payload['period']}:{nonce}"
idem_key = base64.b64encode(
hmac.new(API_KEY.encode(), message.encode(), hashlib.sha256).digest()
).decode()
headers = {
"Content-Type": "application/json",
"X-API-KEY": API_KEY,
"X-Real-IP": "your_whitelisted_ip",
"X-Idempotency-Key": idem_key,
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
detail = data.get("detail", {})
if response.status_code == 200 and detail.get("status") == "completed":
d = detail["data"]
print(f"Order ID: {d['orderId']}")
print(f"Hashes: {d['hash']}") # array of delegation tx hashes
print(f"Bandwidth: {d['bandwidth']} for {d['period']}")
print(f"Cost: {d['paidTRX']} TRX")
else:
print(f"Code: {detail.get('code')} | {detail.get('msg', detail)}")ตัวอย่างไคลเอนต์แบบเต็มรูปแบบ (Python + cURL) มีให้อยู่ในแพ็กเกจบริการ (handler_bandwidth/doc/client_example/)
การตอบกลับ
สำเร็จ — มอบหมาย bandwidth แล้ว (200 OK)
{
"detail": {
"code": 10000,
"status": "completed",
"msg": "Successful",
"data": {
"orderId": "B5M<key14>",
"paidTRX": "<amount charged in TRX>",
"fulfilledBy": "bandwidth",
"hash": ["a1b2c3...", "d4e5f6..."],
"bandwidth": 1500,
"period": "5m"
}
}
}สำเร็จ — ส่ง TRX แทน bandwidth (200 OK, เฉพาะ amount=400 + trx_send=true)
เมื่อในพูลไม่มี bandwidth และเปิดใช้งาน trx_send ระบบจะส่ง TRX ไปยังที่อยู่ดังกล่าวแทนเพื่อให้ธุรกรรมยังคงสำเร็จได้ ในกรณีนี้จะมีค่าบริการแบบคงที่ โดยไม่คำนึงถึงระยะเวลาที่ร้องขอ
{
"detail": {
"code": 10000,
"status": "completed",
"msg": "Successful (sent TRX, bandwidth unavailable)",
"data": {
"orderId": "B5M<key14>",
"paidTRX": "<amount charged in TRX>",
"fulfilledBy": "trx",
"trxSendHash": ["<txid>"],
"hash": [],
"bandwidth": 400,
"period": "5m"
}
}
}มีเพียงพออยู่แล้ว — ไม่มีการเรียกเก็บเงิน (200 OK, เฉพาะเมื่อใช้ check=true)
{
"detail": {
"code": 10002,
"status": "enough",
"msg": "enough band for 1 transfer",
"data": { "orderId": "B5M<key14>", "paidTRX": 0, "bandwidth": 400, "period": "5m" }
}
}กำลังประมวลผล — ผู้ให้บริการภายนอก (202 Accepted)
จะส่งกลับมาเมื่อคำสั่งซื้อถูกส่งต่อไปยังผู้ให้บริการภายนอกแบบอะซิงโครนัส ให้ทำการสอบถามสถานะ (poll) ที่ Status Endpoint (ด้านล่าง) โดยใช้ orderId จนกว่าคำสั่งซื้อจะเสร็จสมบูรณ์
{
"detail": {
"code": 10001,
"status": "processing",
"msg": "Order accepted, processed by an external provider. Poll the status endpoint.",
"data": { "orderId": "B5M<key14>", "bandwidth": 1500, "period": "5m" }
}
}การทดสอบจำลอง (200 OK, เฉพาะเมื่อใช้ test=true)
ขั้นตอนการสั่งซื้อทั้งหมดจะถูกจำลองขึ้น testAction จะบอกคุณว่าสิ่งใด จะ เกิดขึ้น และ wouldCostTRX จะบอกว่า จะ มีการเรียกเก็บเงินเท่าใด โดยจะไม่มีการมอบหมายทรัพยากร ไม่มีการส่ง TRX และ ไม่มีการเรียกเก็บเงินใดๆ (paidTRX: 0)
{
"detail": {
"code": 10003,
"status": "test",
"msg": "Test run — no on-chain action, no charge",
"data": {
"orderId": "B5M<...>",
"testAction": "would_delegate",
"wouldCostTRX": "<amount that would be charged in TRX>",
"paidTRX": 0,
"bandwidth": 400,
"period": "5m",
"receiverFreeBandwidth": 600
}
}
}ค่าของ testAction: would_delegate (bandwidth จะถูกมอบหมาย), would_trx_send (ไม่มี bandwidth, amount=400 + trx_send → TRX จะถูกส่งไป), enough (ผู้รับมีเพียงพออยู่แล้ว เมื่อใช้ check=true), หรือ would_error:<reason> (เช่น no_bandwidth, not_whitelisted)
ฟิลด์การตอบกลับ
| Parameter | Type | Description |
|---|---|---|
| detail.code | integer | 10000 มอบหมายแล้ว/ส่ง TRX แล้ว, 10002 มีเพียงพอแล้ว, 10001 กำลังประมวลผล |
| detail.status | string | completed / enough / processing / failed |
| detail.data.orderId | string | รหัสคำสั่งซื้อ รูปแบบ B5M… (5 นาที) / B1H… (1 ชั่วโมง) — ใช้สำหรับ Status Endpoint |
| detail.data.paidTRX | number | จำนวนเงินที่เรียกเก็บในหน่วย TRX (0 เมื่อเป็น enough) |
| detail.data.fulfilledBy | string | bandwidth (มอบหมายแล้ว) / trx (ส่ง TRX แล้ว) |
| detail.data.hash | array | แฮชธุรกรรมการมอบหมาย (สูงสุด 10 รายการ) จะเป็นอาร์เรย์เสมอ (ว่างเปล่าสำหรับกรณี TRX) |
| detail.data.trxSendHash | array | แฮชการโอน TRX จะปรากฏเฉพาะเมื่อ fulfilledBy = trx |
| detail.data.bandwidth | integer | หน่วย Bandwidth ที่ได้รับการมอบหมาย |
| detail.data.period | string | ระยะเวลาการเช่า (5m / 1h) |
Endpoint สถานะ
GET https://netts.io/apiv2/bandwidth/status/{orderId}Headers: X-API-KEY + X-Real-IP (คำสั่งซื้อจะต้องเป็นของผู้ใช้ที่ได้รับการยืนยันตัวตนแล้ว)
| สถานะคำสั่งซื้อ | HTTP | code | status |
|---|---|---|---|
| สำเร็จแล้ว | 200 | 10000 | completed (พร้อม hash / trxSendHash) |
| กำลังดำเนินการ | 200 | 10001 | processing |
| มีเพียงพออยู่แล้ว | 200 | 10002 | enough |
| ล้มเหลว | 200 | 5003 | failed |
| ไม่พบ / ไม่ใช่ของคุณ | 404 | -1 | — |
เอนด์พอยต์การเรียกคืน (Reclaim Endpoint)
เรียกคืน (ยกเลิกการมอบหมาย) bandwidth ของหนึ่งในคำสั่งซื้อที่ มอบหมายแล้ว ของคุณโดยสมัครใจก่อนที่ระยะเวลาจะหมดลง bandwidth จะถูกยกเลิกการมอบหมายโดยอัตโนมัติและส่งคืนแฮชของธุรกรรม
POST https://netts.io/apiv2/bandwidth/reclaim/{orderId}Headers: X-API-KEY + X-Real-IP (คำสั่งซื้อจะต้องเป็นของผู้ใช้ที่ได้รับการยืนยันตัวตนแล้ว)
| สถานะคำสั่งซื้อ | HTTP | code | status | ผลลัพธ์ |
|---|---|---|---|---|
| มอบหมายแล้ว → เรียกคืนสำเร็จตอนนี้ | 200 | 10004 | reclaimed | reclaimHash (แฮชธุรกรรมการยกเลิกการมอบหมาย) |
| ถูกเรียกคืนไปแล้ว | 200 | 10004 | reclaimed | reclaimHash + ข้อความ "already reclaimed" |
| ไม่ได้อยู่ในสถานะมอบหมาย (ไม่มีสิ่งใดให้เรียกคืน) | 400 | 5005 | failed | — |
| การเรียกคืนยังไม่เสร็จสมบูรณ์ | 503 | 5003 | failed | ลองใหม่อีกครั้งในไม่ช้า |
| ไม่พบ / ไม่ใช่ของคุณ | 404 | -1 | — | — |
curl -X POST https://netts.io/apiv2/bandwidth/reclaim/B5M<...> \
-H "X-API-KEY: your_api_key" -H "X-Real-IP: your_whitelisted_ip"{
"detail": {
"code": 10004,
"status": "reclaimed",
"msg": "Bandwidth reclaimed",
"data": { "orderId": "B5M<...>", "reclaimHash": ["<txid>"] }
}
}import requests
order_id = "B5M..." # the orderId from your rental response
url = f"https://netts.io/apiv2/bandwidth/reclaim/{order_id}"
headers = {"X-API-KEY": "your_api_key", "X-Real-IP": "your_whitelisted_ip"}
resp = requests.post(url, headers=headers)
detail = resp.json()["detail"]
if resp.status_code == 200 and detail["status"] == "reclaimed":
print(f"Reclaimed: {detail['data']['reclaimHash']} ({detail['msg']})")
else:
print(f"Code {detail.get('code')}: {detail.get('msg', detail)}")ค่าบริการการเช่าจะ ไม่ ได้รับการคืนเงินเมื่อทำการเรียกคืนก่อนกำหนดโดยสมัครใจ — การเรียกคืนเป็นการนำ bandwidth ที่มอบหมายไว้กลับคืนสู่พูลก่อนครบกำหนดระยะเวลาเท่านั้น
การตอบกลับข้อผิดพลาด
ข้อผิดพลาดในการตรวจสอบสิทธิ์ (401)
{ "detail": { "code": -1, "msg": "Invalid API key or IP not in whitelist" } }ยอดเงินคงเหลือไม่เพียงพอ (403)
{ "detail": { "code": 1004, "status": "failed", "msg": "Insufficient funds" } }ข้อผิดพลาดในการตรวจสอบความถูกต้อง (400)
{ "detail": { "code": 5004, "status": "failed", "msg": "Bandwidth amount out of range (400..5000)" } }การมอบหมายล้มเหลว / บริการไม่พร้อมใช้งาน (503)
{ "detail": { "code": 5003, "status": "failed", "msg": "Bandwidth delegation failed" } }การอ้างอิงรหัสข้อผิดพลาด
| Code | Description | สถานะ HTTP |
|---|---|---|
10000 | สำเร็จ (มอบหมายแล้ว หรือส่ง TRX แล้ว) | 200 |
10000 | สำเร็จ (การตอบกลับที่แคชไว้) | 208 |
10001 | ได้รับคำขอแล้ว กำลังประมวลผลโดยผู้ให้บริการภายนอก | 202 |
10002 | ผู้รับมี bandwidth เพียงพออยู่แล้ว (ไม่มีการเรียกเก็บเงิน) | 200 |
10003 | การทดสอบจำลอง — แสดงผลลัพธ์ล่วงหน้า + ราคา โดยไม่มีการเรียกเก็บเงิน (test=true) | 200 |
10004 | เรียกคืน bandwidth แล้ว (ยกเลิกการมอบหมายโดยสมัครใจ) — ส่งคืน reclaimHash | 200 |
- | คำขอซ้ำซ้อนที่ยังคงอยู่ระหว่างการประมวลผล | 409 |
-1 | คีย์ API ไม่ถูกต้อง / IP ไม่อยู่ในไวท์ลิสต์ | 401 |
1004 | ยอดเงินคงเหลือไม่เพียงพอ | 403 |
1005 | ไม่มีที่อยู่ผู้ชำระเงินสำหรับผู้ใช้นี้ | 400 |
5004 | จำนวน/ระยะเวลาไม่ถูกต้อง (การตรวจสอบความถูกต้อง) | 400 |
5005 | ไม่มีสิ่งใดให้เรียกคืน (คำสั่งซื้อไม่ได้อยู่ในสถานะมอบหมาย) | 400 |
5007 | หากไม่มีการรับรอง — ทำการเช่าได้ครั้งละหนึ่งรายการเท่านั้น คำสั่งซื้อก่อนหน้ายังคงทำงานอยู่ (ให้รอจนกว่าจะสิ้นสุด) | 503 |
5008 | หากไม่มีการรับรอง — อนุญาตเฉพาะคำสั่งซื้อ 400 หน่วยเป็นเวลา 5 นาทีเท่านั้น ต้องได้รับการรับรองสำหรับจำนวนที่มากกว่านี้หรือการเช่า 1 ชั่วโมง | 503 |
5003 | การมอบหมาย Bandwidth ล้มเหลว / ไม่พร้อมใช้งาน | 503 |
5000 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ | 500 |
ขีดจำกัดอัตราการเรียกใช้
| Period | Limit | Description |
|---|---|---|
| 1 วินาที | 50 คำขอ | สูงสุด 50 คำขอต่อวินาทีต่อ IP |
เกินขีดจำกัดอัตราการส่งคำขอ (429)
{ "message": "API rate limit exceeded" }ความสามารถในการทำงานซ้ำได้ (Idempotency)
ส่งส่วนหัว X-Idempotency-Key ที่เป็นตัวเลือก เพื่อไม่ให้การส่งซ้ำโดยไม่ได้ตั้งใจสร้างคำสั่งซื้อที่สองขึ้นมา — ระบบจะส่งการตอบกลับเดิมกลับมาด้วย HTTP 208 หากคุณไม่ได้ส่งส่วนหัวนี้ เซิร์ฟเวอร์จะสร้างคีย์ขึ้นมาโดยอัตโนมัติจากพารามิเตอร์คำขอของคุณภายในช่วงเวลาสั้นๆ
วิธีการสร้างคีย์
คีย์คือ base64( HMAC-SHA256( secret, message ) ) — สตริง base64 ความยาว 44 ตัวอักษร โดยที่:
- secret = คีย์ API ของคุณ (
X-API-KEY) - message = ฟิลด์ต่างๆ ที่เชื่อมต่อกันด้วยเครื่องหมาย
:—receiveAddress:amount:period:nonce
nonce คือค่าใดๆ ที่ คงที่ตลอดการลองส่งซ้ำของคำสั่งซื้อเชิงตรรกะเดียวกัน แต่แตกต่างกันระหว่างคำสั่งซื้อที่ไม่เหมือนกัน — เช่น UUID ที่คุณเก็บไว้สำหรับคำสั่งซื้อนั้น หรือช่วงเวลาแบบคร่าวๆ สร้างคีย์เพียงครั้งเดียวต่อหนึ่งคำสั่งซื้อ และส่งค่าเดิมทุกประการซ้ำในการลองใหม่ทุกครั้ง
import hmac, hashlib, base64, time
def make_idempotency_key(api_key, receive_address, amount, period, nonce=None):
if nonce is None:
nonce = str(int(time.time() // 2)) # 2-second bucket; or your own order UUID
message = f"{receive_address}:{amount}:{period}:{nonce}"
digest = hmac.new(api_key.encode(), message.encode(), hashlib.sha256).digest()
return base64.b64encode(digest).decode() # 44-char base64# then send it as a header:
-H "X-Idempotency-Key: <base64_key>"การรวม period ไว้ในข้อความเป็นสิ่งสำคัญ: การเช่าสำหรับ ที่อยู่เดียวกันเป็นเวลา 5 นาที และ 1 ชั่วโมง ถือเป็นคำสั่งซื้อที่แตกต่างกันและต้องสร้างคีย์ที่ไม่เหมือนกัน
การตรวจสอบความถูกต้อง
X-Idempotency-Keyที่ระบุจะต้องเป็นสตริง base64 ที่มีความยาว 16–64 ตัวอักษร (ชุดอักขระA–Z a–z 0–9 + / = _ -) คีย์ที่มีรูปแบบไม่ถูกต้องหรือยาวเกินไปจะถูกปฏิเสธด้วย HTTP 400 (code 5004)
| รหัสสถานะ | ความหมาย |
|---|---|
| 200 | ประมวลผลสำเร็จแล้ว (คำขอแรก) |
| 208 | ได้รับการประมวลผลสำเร็จแล้ว — ส่งคืนการตอบกลับที่แคชไว้ (ไม่มีการเรียกเก็บเงินซ้ำ) |
| 409 | คำขอเดียวกันนี้กำลังอยู่ระหว่างการประมวลผล — โปรดรอ อย่าเพิ่งลองส่งใหม่ในขณะนี้ |
การลองใหม่หลังจากเกิดข้อผิดพลาด เฉพาะผลลัพธ์ที่ สำเร็จ (
completed/enough) เท่านั้นที่จะถูกแคชไว้ หากความพยายามก่อนหน้านี้ ล้มเหลวหรือหมดเวลา (ไม่มีการเรียกเก็บเงิน) คุณสามารถ ลองใหม่ด้วยX-Idempotency-Keyเดิม ได้อย่างปลอดภัย — ระบบจะพยายามดำเนินการคำสั่งซื้อใหม่อีกครั้งแทนที่จะส่งคืนข้อผิดพลาดเดิม ในขณะที่ความพยายามยังคงดำเนินการอยู่คุณจะได้รับ409ให้รอแล้วลองใหม่อีกครั้ง
บัญชีแบบชำระเงินทีหลัง (Postpaid Accounts)
บัญชีที่ใช้ ระบบเรียกเก็บเงินแบบชำระเงินทีหลัง (postpaid) จะใช้เอนด์พอยต์, URL, ส่วนหัว และเนื้อหาคำขอเดียวกันกับผู้อื่น ความแตกต่างอยู่ที่วิธีการชำระเงินสำหรับคำสั่งซื้อ:
- ไม่มีการหักเงินจากเงินฝากของคุณ คำสั่งซื้อที่ส่งมอบแล้วแต่ละรายการจะถูกเพิ่มเข้าไปในยอดดุลค้างชำระของบัญชีคุณใน สกุลเงินที่ใช้ชำระราคาตามที่ตกลงไว้ในสัญญาของคุณ คุณชำระเงินตามใบแจ้งหนี้ตามข้อตกลงของคุณ
- บัญชีของคุณจะมี วงเงินสินเชื่อ (credit limit) ตราบใดที่ยอดค้างชำระยังอยู่ภายในวงเงิน คำสั่งซื้อจะได้รับการยอมรับแม้ว่าจะมีเงินฝากเป็นศูนย์ก็ตาม การเช่าเป็นเวลา 5 นาทีและ 1 ชั่วโมงจะนับรวมในขีดจำกัด Bandwidth เดียวกัน
- จะเรียกเก็บเงินเฉพาะบริการที่ส่งมอบแล้วเท่านั้น: bandwidth ที่มอบหมายไปยังที่อยู่ หรือ TRX ที่ส่งไปแทน (
fulfilledBy = trx) จำนวนเงินจะเท่ากับคำสั่งซื้อแบบชำระเงินล่วงหน้า (prepaid) - คำสั่งซื้อที่ถูกปฏิเสธ, ไม่ได้ดำเนินการ, การทดสอบจำลอง (
test: true) หรือตอบกลับด้วยenough(check: true) จะไม่มีค่าใช้จ่ายใดๆ - การเรียกคืนก่อนกำหนดโดยสมัครใจจะไม่ลดจำนวนเงินที่ต้องชำระ เช่นเดียวกับคำสั่งซื้อแบบชำระเงินล่วงหน้า
- ระดับการเข้าถึง, จำนวน, ระยะเวลา และกฎเกณฑ์อื่นๆ ทั้งหมดของเอนด์พอยต์นี้จะเหมือนกับบัญชีแบบชำระเงินล่วงหน้า
การเรียกเก็บเงินแบบชำระเงินทีหลังจะเปิดใช้งานโดย Netts สำหรับบัญชีตามคำขอ การตอบกลับทุกครั้งจะบอกคุณว่าคำสั่งซื้อนั้นชำระอย่างไร: paymentMode จะเป็น postpaid หรือ prepaid
การตรวจสอบราคา (test: true)
{
"amount": 1000,
"receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
"period": "5m",
"test": true
}{
"detail": {
"code": 10003,
"status": "test",
"msg": "Test run — no on-chain action, no charge",
"data": {
"orderId": "B5M1a2b3c4d5e6f70",
"testAction": "would_delegate",
"wouldCostTRX": 0.7,
"paidTRX": 0,
"bandwidth": 1000,
"period": "5m",
"receiverFreeBandwidth": 600,
"paymentMode": "postpaid"
}
}
}wouldCostTRX คือจำนวนเงินที่จะถูกเพิ่มเข้าไปในยอดค้างชำระของคุณ ในหน่วย TRX โดยไม่มีสิ่งใดถูกมอบหมายหรือเรียกเก็บเงิน
คำสั่งซื้อสำเร็จ
{
"detail": {
"code": 10000,
"status": "completed",
"msg": "Successful, 0.700000 TRX, postpaid",
"data": {
"orderId": "B5M0f9e8d7c6b5a41",
"paidTRX": 0.7,
"fulfilledBy": "bandwidth",
"hash": ["<txid>"],
"bandwidth": 1000,
"period": "5m",
"paymentMode": "postpaid",
"totalTRX": "0.700000"
}
}
}| Parameter | Description |
|---|---|
| paidTRX | ค่าบริการในหน่วย TRX สำหรับบัญชีแบบชำระเงินทีหลัง จะ ไม่ ถูกหักออกจากเงินฝาก |
| paymentMode | postpaid |
| totalTRX | จำนวนเงินที่แน่นอน ทศนิยม 6 ตำแหน่ง |
ฟิลด์อื่นๆ ทั้งหมด รวมถึงกรณีของ TRX (fulfilledBy = trx, trxSendHash) จะเหมือนกับคำสั่งซื้อแบบชำระเงินล่วงหน้า
ถึงวงเงินสินเชื่อแล้ว (402)
{
"detail": {
"code": 1004,
"msg": "Postpaid credit limit reached.",
"paymentMode": "postpaid",
"reason": "limit_reached"
}
}คำสั่งซื้อจะไม่ถูกดำเนินการและไม่มีการเรียกเก็บเงิน คำสั่งซื้อใหม่จะได้รับการยอมรับอีกครั้งเมื่อการชำระเงินของคุณได้รับการบันทึกหรือวงเงินของคุณได้รับการปรับเพิ่มขึ้น
รหัสข้อผิดพลาดของระบบชำระเงินทีหลัง (Postpaid)
| Code | HTTP | Description |
|---|---|---|
1004 | 402 | ถึงวงเงินสินเชื่อของระบบชำระเงินทีหลังแล้ว |
5032 | 503 | ราคาไม่พร้อมใช้งานชั่วคราว |
5034 | 503 | ระบบเรียกเก็บเงินไม่พร้อมใช้งานชั่วคราว — คำสั่งซื้อไม่ได้รับการยอมรับ |
5036 | 503 | การตรวจสอบสินเชื่อไม่พร้อมใช้งานชั่วคราว — ให้ลองใหม่ภายหลัง |
สำหรับการตอบกลับทั้งหมดข้างต้น จะไม่มีการสั่งซื้อและไม่มีการเรียกเก็บเงิน รหัสอื่นๆ ทั้งหมดจะเหมือนกับคำสั่งซื้อแบบชำระเงินล่วงหน้า
หมายเหตุ
- ระดับการเข้าถึง: บัญชีที่ผ่านการรับรองสามารถเช่าได้ทุกจำนวนภายในขีดจำกัดของพูล/ขีดจำกัดสูงสุด พร้อมคำสั่งซื้อพร้อมกันหลายรายการ หากไม่มีการรับรอง — 400 หน่วยเป็นเวลา 5 นาที ครั้งละหนึ่งรายการ (คำสั่งซื้อถัดไปจะทำได้หลังจากคำสั่งซื้อก่อนหน้าสิ้นสุดลงเท่านั้น) โปรดติดต่อฝ่ายสนับสนุนของ Netts เพื่อขอรับการรับรอง
- ขั้นต่ำ: 400 หน่วย สูงสุด: 5000 หน่วยต่อคำสั่งซื้อ (การกำหนดค่าปัจจุบัน)
- ระยะเวลา:
5m(300 วินาที) และ1h(3600 วินาที เฉพาะบัญชีที่ผ่านการรับรอง) bandwidth จะถูกเรียกคืนโดยอัตโนมัติเมื่อครบกำหนดระยะเวลา - ไม่มีการกันสำรอง: ทรัพยากรจะได้รับการมอบหมายตรงตามจำนวนที่ร้องขอพอดี
- hash เป็นอาร์เรย์: คำสั่งซื้อเดียวอาจสร้างแฮชการมอบหมายได้สูงสุด 10 รายการ — ทั้งหมดจะถูกส่งกลับมา
- การกำหนดราคา: เรียกเก็บเงินเป็น TRX โดยอิงตามจำนวนและระยะเวลาที่ร้องขอ อัตราอาจแตกต่างกันไปตามช่วงเวลาของวัน ติดต่อฝ่ายสนับสนุนสำหรับราคาปัจจุบัน
- ค่าชดเชยคำสั่งซื้อขนาดเล็ก (การมอบหมาย): สำหรับคำสั่งซื้อที่ ต่ำกว่า 1000 หน่วย จะมีการบวกเพิ่มแบบคงที่ 0.372 TRX ในราคา เพื่อเป็นค่าชดเชยสำหรับการมอบหมายและการเรียกคืนบนบล็อกเชน คำสั่งซื้อตั้งแต่ 1000 หน่วยขึ้นไปจะไม่มีการบวกเพิ่มนี้
- ค่าชดเชยการส่ง TRX: เมื่อคำสั่งซื้อได้รับการดำเนินการโดยการส่ง TRX (
fulfilledBy = trx) จะมีการบวกเพิ่มแบบคงที่ 0.268 TRX แทน (ค่าชดเชยสำหรับการโอน TRX บนบล็อกเชน) - trx_send: สำหรับ
amount = 400เท่านั้น หากไม่มี bandwidth ระบบจะส่ง TRX ไปยังที่อยู่ดังกล่าวแทนเพื่อให้ธุรกรรมยังคงสำเร็จได้ - check: ข้ามการมอบหมาย (และการเรียกเก็บเงิน) เมื่อผู้รับมี bandwidth มากกว่า 400 อยู่แล้ว
- รูปแบบรหัสคำสั่งซื้อ:
B5M…(5 นาที) /B1H…(1 ชั่วโมง) - ระยะเวลาหมดเวลาของการตอบกลับ (Response timeout): สูงสุดประมาณ 12 วินาทีขณะรอการมอบหมาย โดยทั่วไปจะใช้เวลา 1–2 วินาที