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

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/bandwidth

Headers ของคำขอ ​

HeaderRequiredDescription
Content-TypeYesapplication/json
X-API-KEYYesคีย์ API ของคุณจากแดชบอร์ด Netts
X-Real-IPYesที่อยู่ IP จากไวท์ลิสต์ของคุณ
X-Idempotency-KeyNoคีย์เสริมที่ไคลเอนต์สร้างขึ้น (base64) เพื่อลองส่งคำขอใหม่ได้อย่างปลอดภัยโดยไม่เกิดคำสั่งซื้อซ้ำซ้อน หากละเว้นไว้ เซิร์ฟเวอร์จะสร้างขึ้นโดยอัตโนมัติ

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

json
{
    "amount": 1500,
    "receiveAddress": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "period": "5m"
}

พารามิเตอร์ของคำขอ ​

ParameterTypeRequiredDescription
amountintegerYesจำนวนหน่วย Bandwidth ที่ต้องการเช่า (ขั้นต่ำ: 400, สูงสุด: 5000)
receiveAddressstringYesที่อยู่ TRON ที่จะรับ bandwidth (T…, ความยาว 34 ตัวอักษร, base58)
periodstringYesระยะเวลาการเช่า: "5m" (5 นาที) หรือ "1h" (1 ชั่วโมง เฉพาะบัญชีที่ผ่านการรับรอง)
trx_sendbooleanNoการทำธุรกรรมที่รับประกัน: หากไม่มี bandwidth ให้บริการ จะส่ง TRX ไปยังที่อยู่ดังกล่าวแทนเพื่อให้ธุรกรรมยังคงดำเนินการได้ ใช้งานได้เฉพาะเมื่อ amount = 400 เท่านั้น (กรณีอื่นจะถูกละเว้น) ค่าเริ่มต้นคือ false
checkbooleanNoหากเป็น true และผู้รับมี bandwidth มากกว่า 400 อยู่แล้ว คำสั่งซื้อจะ ไม่ ถูกมอบหมายและ ไม่มีการเรียกเก็บเงิน (สถานะ enough) ค่าเริ่มต้นคือ false
testbooleanNoการจำลองการทำงาน (Dry run) หากเป็น true ขั้นตอนการสั่งซื้อทั้งหมดจะถูกจำลองขึ้น — การตอบกลับจะแจ้งให้คุณทราบถึง ผลลัพธ์ ที่จะเกิดขึ้นและ ราคา ที่จะถูกเรียกเก็บ — โดยไม่มีการดำเนินการใดๆ บนเครือข่ายบล็อกเชนและไม่มีการเรียกเก็บเงิน ค่าเริ่มต้นคือ false

ตัวอย่าง ​

ตัวอย่างด้านล่างนี้ยังรวมถึงการ สร้างและส่ง X-Idempotency-Key เพื่อไม่ให้การส่งซ้ำโดยไม่ได้ตั้งใจสร้างคำสั่งซื้อที่สองขึ้นมา ดูรายละเอียดกฎทั้งหมดได้ที่ ความสามารถในการทำงานซ้ำได้ (Idempotency)

cURL ​

bash
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 ​

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) ​

json
{
    "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 ไปยังที่อยู่ดังกล่าวแทนเพื่อให้ธุรกรรมยังคงสำเร็จได้ ในกรณีนี้จะมีค่าบริการแบบคงที่ โดยไม่คำนึงถึงระยะเวลาที่ร้องขอ

json
{
    "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) ​

json
{
    "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 จนกว่าคำสั่งซื้อจะเสร็จสมบูรณ์

json
{
    "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)

json
{
    "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)

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

ParameterTypeDescription
detail.codeinteger10000 มอบหมายแล้ว/ส่ง TRX แล้ว, 10002 มีเพียงพอแล้ว, 10001 กำลังประมวลผล
detail.statusstringcompleted / enough / processing / failed
detail.data.orderIdstringรหัสคำสั่งซื้อ รูปแบบ B5M… (5 นาที) / B1H… (1 ชั่วโมง) — ใช้สำหรับ Status Endpoint
detail.data.paidTRXnumberจำนวนเงินที่เรียกเก็บในหน่วย TRX (0 เมื่อเป็น enough)
detail.data.fulfilledBystringbandwidth (มอบหมายแล้ว) / trx (ส่ง TRX แล้ว)
detail.data.hasharrayแฮชธุรกรรมการมอบหมาย (สูงสุด 10 รายการ) จะเป็นอาร์เรย์เสมอ (ว่างเปล่าสำหรับกรณี TRX)
detail.data.trxSendHasharrayแฮชการโอน TRX จะปรากฏเฉพาะเมื่อ fulfilledBy = trx
detail.data.bandwidthintegerหน่วย Bandwidth ที่ได้รับการมอบหมาย
detail.data.periodstringระยะเวลาการเช่า (5m / 1h)

Endpoint สถานะ ​

GET https://netts.io/apiv2/bandwidth/status/{orderId}

Headers: X-API-KEY + X-Real-IP (คำสั่งซื้อจะต้องเป็นของผู้ใช้ที่ได้รับการยืนยันตัวตนแล้ว)

สถานะคำสั่งซื้อHTTPcodestatus
สำเร็จแล้ว20010000completed (พร้อม hash / trxSendHash)
กำลังดำเนินการ20010001processing
มีเพียงพออยู่แล้ว20010002enough
ล้มเหลว2005003failed
ไม่พบ / ไม่ใช่ของคุณ404-1—

เอนด์พอยต์การเรียกคืน (Reclaim Endpoint) ​

เรียกคืน (ยกเลิกการมอบหมาย) bandwidth ของหนึ่งในคำสั่งซื้อที่ มอบหมายแล้ว ของคุณโดยสมัครใจก่อนที่ระยะเวลาจะหมดลง bandwidth จะถูกยกเลิกการมอบหมายโดยอัตโนมัติและส่งคืนแฮชของธุรกรรม

POST https://netts.io/apiv2/bandwidth/reclaim/{orderId}

Headers: X-API-KEY + X-Real-IP (คำสั่งซื้อจะต้องเป็นของผู้ใช้ที่ได้รับการยืนยันตัวตนแล้ว)

สถานะคำสั่งซื้อHTTPcodestatusผลลัพธ์
มอบหมายแล้ว → เรียกคืนสำเร็จตอนนี้20010004reclaimedreclaimHash (แฮชธุรกรรมการยกเลิกการมอบหมาย)
ถูกเรียกคืนไปแล้ว20010004reclaimedreclaimHash + ข้อความ "already reclaimed"
ไม่ได้อยู่ในสถานะมอบหมาย (ไม่มีสิ่งใดให้เรียกคืน)4005005failed—
การเรียกคืนยังไม่เสร็จสมบูรณ์5035003failedลองใหม่อีกครั้งในไม่ช้า
ไม่พบ / ไม่ใช่ของคุณ404-1——
bash
curl -X POST https://netts.io/apiv2/bandwidth/reclaim/B5M<...> \
  -H "X-API-KEY: your_api_key" -H "X-Real-IP: your_whitelisted_ip"
json
{
    "detail": {
        "code": 10004,
        "status": "reclaimed",
        "msg": "Bandwidth reclaimed",
        "data": { "orderId": "B5M<...>", "reclaimHash": ["<txid>"] }
    }
}
python
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) ​

json
{ "detail": { "code": -1, "msg": "Invalid API key or IP not in whitelist" } }

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

json
{ "detail": { "code": 1004, "status": "failed", "msg": "Insufficient funds" } }

ข้อผิดพลาดในการตรวจสอบความถูกต้อง (400) ​

json
{ "detail": { "code": 5004, "status": "failed", "msg": "Bandwidth amount out of range (400..5000)" } }

การมอบหมายล้มเหลว / บริการไม่พร้อมใช้งาน (503) ​

json
{ "detail": { "code": 5003, "status": "failed", "msg": "Bandwidth delegation failed" } }

การอ้างอิงรหัสข้อผิดพลาด ​

CodeDescriptionสถานะ HTTP
10000สำเร็จ (มอบหมายแล้ว หรือส่ง TRX แล้ว)200
10000สำเร็จ (การตอบกลับที่แคชไว้)208
10001ได้รับคำขอแล้ว กำลังประมวลผลโดยผู้ให้บริการภายนอก202
10002ผู้รับมี bandwidth เพียงพออยู่แล้ว (ไม่มีการเรียกเก็บเงิน)200
10003การทดสอบจำลอง — แสดงผลลัพธ์ล่วงหน้า + ราคา โดยไม่มีการเรียกเก็บเงิน (test=true)200
10004เรียกคืน bandwidth แล้ว (ยกเลิกการมอบหมายโดยสมัครใจ) — ส่งคืน reclaimHash200
-คำขอซ้ำซ้อนที่ยังคงอยู่ระหว่างการประมวลผล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

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

PeriodLimitDescription
1 วินาที50 คำขอสูงสุด 50 คำขอต่อวินาทีต่อ IP

เกินขีดจำกัดอัตราการส่งคำขอ (429) ​

json
{ "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 ที่คุณเก็บไว้สำหรับคำสั่งซื้อนั้น หรือช่วงเวลาแบบคร่าวๆ สร้างคีย์เพียงครั้งเดียวต่อหนึ่งคำสั่งซื้อ และส่งค่าเดิมทุกประการซ้ำในการลองใหม่ทุกครั้ง

python
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
bash
# 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) ​

json
{
    "amount": 1000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
    "period": "5m",
    "test": true
}
json
{
    "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 โดยไม่มีสิ่งใดถูกมอบหมายหรือเรียกเก็บเงิน

คำสั่งซื้อสำเร็จ ​

json
{
    "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"
        }
    }
}
ParameterDescription
paidTRXค่าบริการในหน่วย TRX สำหรับบัญชีแบบชำระเงินทีหลัง จะ ไม่ ถูกหักออกจากเงินฝาก
paymentModepostpaid
totalTRXจำนวนเงินที่แน่นอน ทศนิยม 6 ตำแหน่ง

ฟิลด์อื่นๆ ทั้งหมด รวมถึงกรณีของ TRX (fulfilledBy = trx, trxSendHash) จะเหมือนกับคำสั่งซื้อแบบชำระเงินล่วงหน้า

ถึงวงเงินสินเชื่อแล้ว (402) ​

json
{
    "detail": {
        "code": 1004,
        "msg": "Postpaid credit limit reached.",
        "paymentMode": "postpaid",
        "reason": "limit_reached"
    }
}

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

รหัสข้อผิดพลาดของระบบชำระเงินทีหลัง (Postpaid) ​

CodeHTTPDescription
1004402ถึงวงเงินสินเชื่อของระบบชำระเงินทีหลังแล้ว
5032503ราคาไม่พร้อมใช้งานชั่วคราว
5034503ระบบเรียกเก็บเงินไม่พร้อมใช้งานชั่วคราว — คำสั่งซื้อไม่ได้รับการยอมรับ
5036503การตรวจสอบสินเชื่อไม่พร้อมใช้งานชั่วคราว — ให้ลองใหม่ภายหลัง

สำหรับการตอบกลับทั้งหมดข้างต้น จะไม่มีการสั่งซื้อและไม่มีการเรียกเก็บเงิน รหัสอื่นๆ ทั้งหมดจะเหมือนกับคำสั่งซื้อแบบชำระเงินล่วงหน้า

หมายเหตุ ​

  • ระดับการเข้าถึง: บัญชีที่ผ่านการรับรองสามารถเช่าได้ทุกจำนวนภายในขีดจำกัดของพูล/ขีดจำกัดสูงสุด พร้อมคำสั่งซื้อพร้อมกันหลายรายการ หากไม่มีการรับรอง — 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 วินาที