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

POST /apiv2/order1h ​

Tạo đơn thuê Energy trong 1 giờ thông qua nhiều nhà cung cấp Energy với cơ chế tự động chuyển đổi dự phòng (failover).

URL của Endpoint ​

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

Headers của yêu cầu ​

HeaderBắt buộcMô tả
Content-TypeCóapplication/json
X-API-KEYCóKhóa API của bạn từ bảng điều khiển Netts
X-Real-IPCóĐịa chỉ IP từ danh sách trắng (whitelist) của bạn

Body của yêu cầu ​

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

Các tham số ​

Tham sốLoạiBắt buộcMô tả
amountsố nguyênCóLượng Energy cần thuê (tối thiểu: 61000, tối đa: 3000000)
receiveAddresschuỗiCóĐịa chỉ TRON sẽ nhận Energy (định dạng TRC-20)

Lựa chọn nhà cung cấp ​

API sẽ tự động chọn nhà cung cấp Energy tối ưu dựa trên:

  • Hiệu quả chi phí - Luôn tìm mức giá thấp nhất hiện có
  • Khả dụng - Đảm bảo nguồn dự trữ Energy đầy đủ
  • Độ tin cậy - Sử dụng các nhà cung cấp có tỷ lệ thành công cao
  • Tốc độ - Ưu tiên thời gian phân phối nhanh nhất

Ví dụ yêu cầu ​

cURL ​

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

Python ​

python
import requests

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

payload = {
    "amount": 131000,
    "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')}")
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)}")

Phản hồi ​

Phản hồi thành công (200 OK) ​

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 2.23 TRX deducted",
        "data": {
            "orderId": "1H123456",
            "paidTRX": 2.23,
            "hash": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456",
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
            "energy": 131050
        }
    }
}

Các trường phản hồi ​

TrườngLoạiMô tả
detail.codesố nguyênLuôn là 10000 đối với các đơn hàng thành công
detail.msgchuỗiThông báo thành công kèm theo số tiền đã trừ
detail.data.orderIdchuỗiID đơn hàng hợp nhất (định dạng: 1H{request_id})
detail.data.paidTRXsốTổng chi phí bằng TRX (bao gồm phí kích hoạt nếu địa chỉ chưa được kích hoạt)
detail.data.hashchuỗi | nullMã băm giao dịch (hash). Trường này luôn xuất hiện nhưng có thể để trống - một số nhà cung cấp không trả về hash ngay lập tức. Hãy sử dụng /apiv2/order_check sau 1 phút để lấy hash
detail.data.delegateAddresschuỗiĐịa chỉ pool đã ủy quyền Energy
detail.data.energysố nguyênLượng Energy + phần dư bù (thường là +50)

Phản hồi lỗi ​

Lỗi xác thực (401) ​

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

Số dư không đủ (403) ​

json
{
    "code": 1004,
    "msg": "Insufficient funds. Required: 2.23 TRX, Available: 1.50 TRX"
}

Dịch vụ không khả dụng (503) ​

json
{
    "code": 5003,
    "msg": "Service temporarily unavailable. All energy providers are currently unavailable."
}

Lỗi nhà cung cấp (503) ​

json
{
    "code": 5001,
    "msg": "Energy provider temporarily unavailable"
}
json
{
    "code": 5002,
    "msg": "Energy provider temporarily unavailable"
}
json
{
    "code": 5004,
    "msg": "Energy provider requires higher minimum amount"
}

Lỗi máy chủ nội bộ (500) ​

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

Bảng tra cứu mã lỗi ​

MãMô tảTrạng thái HTTP
10000Thành công200
10000Thành công (phản hồi được lưu trong bộ nhớ tạm)208
-Yêu cầu trùng lặp vẫn đang được xử lý409
1004Số dư không đủ403
5000Lỗi máy chủ nội bộ500
5001Nhà cung cấp Energy không khả dụng503
5002Nhà cung cấp Energy không khả dụng503
5003Dịch vụ Energy không khả dụng503
5004Không đạt mức tối thiểu của nhà cung cấp Energy503

Giới hạn tốc độ ​

Các giới hạn tốc độ sau đây áp dụng cho endpoint này (trên mỗi địa chỉ IP):

Khoảng thời gianGiới hạnMô tả
1 giây50 yêu cầuTối đa 50 yêu cầu mỗi giây

Các header giới hạn tốc độ ​

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

Vượt quá giới hạn tốc độ (429) ​

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

Tính bất biến (Idempotency) ​

API hỗ trợ tính bất biến để ngăn chặn việc xử lý đơn hàng trùng lặp. Khi bạn gửi nhiều yêu cầu giống hệt nhau, hệ thống đảm bảo đơn hàng chỉ được xử lý một lần duy nhất.

Cách thức hoạt động của tính bất biến ​

Tính duy nhất của yêu cầu được xác định bởi sự kết hợp của:

  • Dấu thời gian yêu cầu (khoảng thời gian 1 giây)
  • Lượng Energy
  • Địa chỉ nhận
  • Khóa API

Mỗi yêu cầu được cấp một khoảng thời gian duy nhất là 1 giây. Để bảo vệ hệ thống khỏi hành vi lạm dụng và đảm bảo việc xử lý chính xác, các yêu cầu có tham số giống hệt nhau không thể gửi thường xuyên hơn một lần mỗi giây.

Hành vi hiện tại: Hệ thống tự động bảo vệ khách hàng khỏi các lần thử lại do nhầm lẫn đối với lượng Energy đã đặt. Nếu bạn vô tình gửi cùng một yêu cầu hai lần, bạn sẽ không bị tính phí hai lần.

Cung cấp khóa của riêng bạn ​

Bạn có thể chủ động kiểm soát tính bất biến bằng cách gửi header X-Idempotency-Key. Khi xuất hiện header này, chỉ riêng giá trị đó sẽ quyết định xem yêu cầu có phải là gửi lặp lại hay không, và cách kết hợp tự động ở trên sẽ không được sử dụng. Khi vắng mặt header này, mọi thứ giữ nguyên — máy chủ sẽ tự tạo khóa cho bạn.

HeaderX-Idempotency-Key
Định dạngChính xác 64 ký tự thập lục phân viết thường — mã băm SHA-256
Vòng đời24 giờ kể từ yêu cầu đầu tiên mang khóa đó
Phạm viTài khoản của bạn. Cùng một giá trị do một tài khoản khác gửi sẽ không bao giờ trả về kết quả của bạn

Một khóa có bất kỳ định dạng nào khác — UUID có dấu gạch ngang, base64, chữ thập lục phân viết hoa — đều bị từ chối với mã 400 trước khi đơn hàng được tạo và trước khi bị trừ bất kỳ chi phí nào:

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

Định dạng khác với các endpoint khác. /apiv2/withdraw, /apiv2/bandwidth và bộ điều phối chấp nhận khóa base64 dài từ 16–64 ký tự. Endpoint này chỉ chấp nhận chuỗi băm hex dài 64 ký tự, do đó đoạn mã tạo khóa sao chép từ các endpoint đó sẽ trả về lỗi 400 tại đây.

Cách tạo khóa ​

Hãy dẫn xuất khóa từ API key của bạn. Điều đó giúp giá trị này trở nên duy nhất cho tài khoản của bạn, có thể tái lập khi thử lại và không ai khác có thể đoán được:

python
import hashlib
import hmac

def make_idempotency_key(api_key: str, address: str, amount: int, nonce: str) -> str:
    message = f"{address}:{amount}:{nonce}"
    return hmac.new(api_key.encode(), message.encode(), hashlib.sha256).hexdigest()

nonce gắn liền với đơn hàng, không phải với yêu cầu. Hãy chọn nó một lần khi đơn hàng được tạo ở phía bạn, và truyền cùng giá trị đó trong mỗi lần gửi đơn hàng — từ lần thử đầu tiên cũng như mọi lần thử lại. Việc tạo một giá trị mới bên trong hàm gửi (str(uuid.uuid4()) trên mỗi lệnh gọi) sẽ cấp cho mỗi lần thử một khóa khác nhau, vì vậy việc thử lại sau khi hết thời gian chờ (timeout) sẽ bị coi là đơn hàng thứ hai và bị trừ tiền lần nữa. Cách chọn đơn giản và chính xác nhất là dùng luôn mã id đơn hàng bạn đã có: nó tồn tại trước lần thử đầu tiên và vẫn giữ nguyên sau khi khởi động lại tiến trình của bạn.

python
# một lần, khi đơn hàng xuất hiện trong hệ thống của bạn
order = create_order(address="TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE", amount=131000)

# ở lần thử đầu tiên và ở mọi lần thử lại — cùng ba giá trị đầu vào, cùng một khóa
key = make_idempotency_key(API_KEY, order.address, order.amount, order.id)

headers = {
    "Content-Type": "application/json",
    "X-API-KEY": API_KEY,
    "X-Idempotency-Key": key,
}

Khóa tồn tại trong 24 giờ. Sau khoảng thời gian đó, cùng một nonce sẽ tự do trở lại và bắt đầu một đơn hàng mới.

Không sử dụng giá trị mà bất kỳ ai khác cũng có thể dùng — 64 số không, chuỗi băm của một từ cố định. Các khóa dùng chung một không gian giữa các tài khoản. Sự xung đột như vậy không bao giờ làm lộ đơn hàng của tài khoản khác, nhưng yêu cầu của bạn sẽ bị từ chối với mã 409 cho đến khi khóa của họ hết hạn, đây không phải là câu trả lời bạn mong muốn giữa lúc đang thử lại.

Đặt hai đơn hàng giống hệt nhau ​

Đôi khi bạn thực sự muốn đặt hai đơn hàng giống nhau — cùng một lượng Energy đến cùng một địa chỉ, đơn này nối tiếp đơn kia. Khóa tự động không thể phân biệt trường hợp này với việc thử lại: hai yêu cầu giống hệt nhau từng byte, và điều duy nhất phân tách chúng là thời điểm chúng đến hệ thống.

Nếu không có khóa của riêng bạn, kết quả phụ thuộc vào khoảng cách giữa chúng:

Khoảng cách giữa hai yêu cầuĐiều gì sẽ xảy ra
Trong cùng khoảng thời gian 1 giâyYêu cầu thứ hai bị coi là lặp lại. Nó không được thực thi: bạn nhận được 208 và phản hồi của đơn hàng đầu tiên, bao gồm cả orderId. Bạn không bị tính phí cho yêu cầu này
Cách nhau hơn một giâyHai khóa khác nhau — cả hai đơn hàng đều được đặt và cả hai đều bị tính phí

Vì vậy, nếu bạn dựa vào khóa tự động, hãy để khoảng cách hơn một giây giữa hai đơn hàng giống hệt nhau, và đọc mã trạng thái: 208 có nghĩa là đơn hàng bạn vừa gửi chưa được đặt.

Việc tạm dừng chỉ là giải pháp tạm thời, không phải là cách xử lý tận gốc. Nó phân tách mọi yêu cầu, bao gồm cả những yêu cầu bạn không hề có ý định lặp lại — thử lại sau khi hết thời gian chờ, nhấp đúp chuột, tin nhắn được gửi lại từ hàng đợi của bạn. Những yêu cầu đó cũng đến muộn hơn khoảng thời gian 1 giây, vì vậy chúng được đặt thành các đơn hàng riêng biệt và bị tính phí riêng biệt. Thời gian chờ phản hồi của endpoint này là 10 giây, vốn đã nằm ngoài khoảng thời gian đó rất nhiều: khóa tự động không bảo vệ lần thử lại diễn ra sau một lần hết thời gian chờ.

Khóa của riêng bạn sẽ loại bỏ sự phỏng đoán, vì quyết định được chuyển về phía duy nhất nắm rõ câu trả lời:

Việc bạn đang làmThứ bạn gửiKết quả
Đơn hàng thứ hai, thực sự mớiMột nonce mớiMột khóa mới — đơn hàng được đặt
Thử lại một đơn hàng mà bạn chưa biết kết quảGiá trị nonce của lần thử đầu tiênCùng một khóa — 208, phản hồi gốc, không bị tính phí lần hai

Hàng thứ hai là lý do header này tồn tại, và đây cũng là nơi các cách triển khai thường mắc lỗi: xem ghi chú trong phần Cách tạo khóa.

Các mã trạng thái HTTP cho các yêu cầu trùng lặp ​

Mã trạng tháiTênMô tả
200OKĐơn hàng được xử lý thành công (yêu cầu đầu tiên)
208Already ReportedĐơn hàng đã được xử lý, trả về phản hồi từ bộ nhớ tạm
409ConflictYêu cầu hiện đang được xử lý, không thử lại

Yêu cầu trùng lặp - Đã được xử lý (208) ​

Khi nhận được một yêu cầu trùng lặp cho một đơn hàng đã hoàn thành:

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 2.54 TRX deducted",
        "data": {
            "hash": "9e4c20e21e01e4c39b21b670d1ea1fc1e4b0de94d8fbd4c190d5378ba911dfae",
            "energy": 65050,
            "orderId": "1H70bcc7962a",
            "paidTRX": 2.535,
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq"
        }
    },
    "idempotency": {
        "status": "completed",
        "cached": true,
        "original_created_at": "2025-12-03T10:34:49.104896"
    }
}

Thân phản hồi giống hệt với phản hồi thành công ban đầu, bổ sung thêm một đối tượng idempotency cho biết đây là phản hồi được lưu trong bộ nhớ tạm.

Yêu cầu trùng lặp - Vẫn đang xử lý (409) ​

Khi một yêu cầu trùng lặp đến trong khi yêu cầu ban đầu vẫn đang được xử lý:

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

Khuyến nghị: Đợi trong khoảng thời gian retry_after_seconds được chỉ định trước khi kiểm tra trạng thái đơn hàng.

Các thực hành tốt nhất ​

  • Không gửi các yêu cầu song song có cùng tham số - hãy đợi từng phản hồi
  • Sử dụng một nonce mới cho mỗi đơn hàng mới, và dùng lại nonce của lần thử đầu tiên cho mọi lần thử lại của đơn hàng đó
  • Không bao giờ tạo lại nonce tại thời điểm gửi — một lần thử lại phải tái tạo lại khóa của lần thử đầu tiên, không phải là một khóa mới
  • Xử lý phản hồi 409 bằng cách chờ đợi, không thử lại ngay lập tức
  • Kiểm tra trường idempotency.cached để nhận diện các phản hồi được lưu tạm — mã 208 có nghĩa là đơn hàng bạn vừa gửi chưa được đặt

Tài khoản trả sau (Postpaid) ​

Các tài khoản dùng phương thức thanh toán trả sau sử dụng cùng endpoint, URL, các header và body yêu cầu như những tài khoản khác. Điểm khác biệt là cách thức thanh toán đơn hàng:

  • Không có khoản tiền nào bị trừ khỏi tiền ký quỹ của bạn. Mỗi đơn hàng thành công được cộng dồn vào số dư nợ của tài khoản theo đồng tiền thanh toán đã thỏa thuận trong hợp đồng của bạn. Bạn thanh toán số tiền này theo hóa đơn, căn cứ vào thỏa thuận.
  • Tài khoản của bạn có một hạn mức tín dụng. Chừng nào số tiền nợ còn nằm trong hạn mức, các đơn hàng vẫn được chấp nhận ngay cả khi số dư ký quỹ bằng 0.
  • Chỉ những dịch vụ đã được phân phối mới được tính phí. Đơn hàng bị từ chối hoặc không được thực thi sẽ không tốn chi phí.
  • Nếu địa chỉ nhận cần phải được kích hoạt, việc kích hoạt là một phần của cùng đơn hàng đó và được lập hóa đơn dưới dạng một khoản phí riêng biệt.

Thanh toán trả sau được Netts kích hoạt cho tài khoản theo yêu cầu. Mọi phản hồi đều cho bạn biết đơn hàng được thanh toán như thế nào: paymentMode là postpaid hoặc prepaid.

Các trường yêu cầu bổ sung ​

Tham sốLoạiBắt buộcMô tả
testbooleanKhôngtrue — chỉ tính toán giá. Không có gì được đặt hàng, phân phối hay tính phí
freezePricebooleanKhôngtrue — cố định giá theo hợp đồng của bạn trong 60 giây. Không có gì được đặt hàng hay tính phí
quoteIdchuỗiKhôngĐặt đơn hàng theo mức giá của báo giá được tạo bởi freezePrice
priceCurrencychuỗiKhôngTRX (mặc định) hoặc loại tiền tệ trong hợp đồng của bạn, như trong settlement.asset. Đối với tài khoản trả sau, số tiền theo loại tiền tệ trong hợp đồng của bạn luôn được bao gồm

quoteId không thể kết hợp cùng với test hoặc freezePrice. Bất kỳ trường nào khác trong phần thân yêu cầu đều sẽ bị từ chối.

Kiểm tra giá (test: true) ​

json
{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
    "test": true
}
json
{
    "detail": {
        "code": 10010,
        "msg": "Test calculation",
        "data": {
            "amount": 65000,
            "unitPriceSun": "20",
            "discount": null,
            "energyTRX": "1.300000",
            "activationTRX": "1.100000",
            "wouldCostTRX": "2.400000",
            "paidTRX": 0,
            "paymentMode": "postpaid",
            "activationCheck": "inactive",
            "alt": {"USDC": {"energy": "0.430541", "activation": "0.364304", "total": "0.794845"}},
            "fxAt": "2026-10-19T07:15:18.469870+00:00"
        }
    }
}
TrườngMô tả
unitPriceSunGiá cho mỗi đơn vị Energy tính bằng SUN, bao gồm chiết khấu cá nhân nếu bạn có
discountChiết khấu cá nhân của bạn (type, value) hoặc null
energyTRX / activationTRX / wouldCostTRXEnergy, kích hoạt (nếu địa chỉ cần kích hoạt) và tổng số, tính bằng TRX
activationCheckinactive — địa chỉ sẽ được kích hoạt và tính phí; active — không cần kích hoạt; unknown — hiện tại không thể kiểm tra
alt.<currency>Cùng các khoản tiền đó theo đơn vị tiền tệ trong hợp đồng của bạn
fxAtThời điểm của tỷ giá hối đoái được áp dụng cho các số tiền theo tiền tệ trong hợp đồng của bạn

Báo giá cố định giá (freezePrice: true) ​

Sử dụng báo giá để cố định mức giá theo hợp đồng trước khi bạn đặt hàng.

  1. Gửi đơn hàng với "freezePrice": true. Phản hồi có mã 10011 (Quote issued), các trường tương tự như kiểm tra giá, kèm theo quoteId và expiresAt.
  2. Trong vòng 60 giây, gửi đơn hàng với "quoteId": "<quoteId>" cùng chính xác amount và receiveAddress đó.
  3. Đơn hàng được tính phí theo mức giá đã báo — mức giá theo hợp đồng của bạn tại thời điểm báo giá — ngay cả khi mức giá có thay đổi trong khoảng thời gian đó.

Một báo giá có thể được sử dụng một lần và chỉ cho cùng một sản phẩm: báo giá cho 1 giờ không thể thanh toán cho đơn hàng 5 phút. Báo giá đã hết hạn hoặc đã sử dụng sẽ bị từ chối và không có đơn hàng nào được tạo.

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

Đơn hàng thành công ​

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.30 TRX for energy + 1.10 TRX for address activation, postpaid",
        "data": {
            "orderId": "1Hf9544a1508",
            "paidTRX": 2.4,
            "hash": "032bda8fa6911b42c15a6d8d30520dc22bcc4077972a1503b6a3fae491967eb4",
            "delegateAddress": "TVnkj2jHKgmea8DVJFo2teD7rRSpH51bne",
            "energy": 65000,
            "activationHash": "259e1ab276114ae717a6f62d7d25eb1f89a2dccb637cbe41be626df3c2a78519",
            "paymentMode": "postpaid",
            "energyTRX": "1.300000",
            "activationTRX": "1.100000",
            "totalTRX": "2.400000"
        }
    }
}
TrườngMô tả
paidTRXChi phí của dịch vụ tính bằng TRX. Đối với tài khoản trả sau, khoản này không bị trừ khỏi số tiền ký quỹ
paymentModepostpaid
energyTRX / activationTRX / totalTRXCác số tiền chính xác, 6 chữ số thập phân
quoteId, altXuất hiện khi đơn hàng được đặt kèm báo giá: ID báo giá và các số tiền được báo
activationFinalXuất hiện và mang giá trị false chỉ khi số tiền kích hoạt là mức tạm tính; số tiền cuối cùng sẽ hiển thị trên hóa đơn của bạn

Tất cả các trường khác đều giống như các đơn hàng trả trước.

Đã đạt hạn mức tín dụng (402) ​

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

Đơn hàng không được thực thi và không có khoản nào bị tính phí. Các đơn hàng mới sẽ được chấp nhận trở lại khi thanh toán của bạn được ghi nhận hoặc hạn mức của bạn được nâng lên.

Mã lỗi trả sau ​

MãHTTPMô tả
10010200Kết quả kiểm tra giá (test)
10011200Báo giá đã được cấp (freezePrice)
1004402Đã đạt hạn mức tín dụng trả sau
4100400Yêu cầu không hợp lệ
4101400priceCurrency không được hỗ trợ
4102400quoteId kết hợp với test hoặc freezePrice
4103409Báo giá đã được sử dụng
4104409Báo giá đã hết hạn
4105409Khóa bất biến đã được sử dụng cho một yêu cầu khác
4106404Không tìm thấy báo giá
4107409Các tham số đơn hàng khác với báo giá
4108400Định dạng quoteId không hợp lệ
4109422Không khả dụng cho các tài khoản phụ
5032503Mức giá tạm thời không khả dụng
5033503Tỷ giá hối đoái tạm thời không khả dụng
5034503Hệ thống thanh toán tạm thời không khả dụng — đơn hàng chưa được chấp nhận
5036503Kiểm tra tín dụng tạm thời không khả dụng — hãy thử lại sau

Đối với tất cả các phản hồi 4xx và 503 ở trên, không có đơn hàng nào được tạo và không có khoản nào bị tính phí.

Ghi chú ​

  • Energy được phân phối ngay lập tức sau khi đặt hàng thành công (thường trong vòng 0,5-10 giây)
  • Thời gian chờ phản hồi của API: Tối đa 10 giây, thường phản hồi trong vòng tối đa 2 giây
  • Kích hoạt địa chỉ: Nếu địa chỉ nhận chưa được kích hoạt, Netts sẽ kích hoạt địa chỉ đó theo giá gốc
  • Độ trễ kích hoạt: Đối với các địa chỉ chưa được kích hoạt, phản hồi của API có thể mất tối đa 6 giây do quá trình kích hoạt
  • Đơn hàng được xử lý 24/7 với cơ chế tự động chuyển đổi dự phòng nhà cung cấp
  • Lượng Energy tối thiểu: 61.000 đơn vị
  • Lượng Energy tối đa: 3.000.000 đơn vị cho mỗi đơn hàng
  • Lượng Energy bù dự phòng: Tự động cộng thêm +50 đơn vị để bù đắp từ nhà cung cấp (miễn phí)
  • Mã băm giao dịch (hash): Trường này luôn xuất hiện nhưng có thể để trống nếu nhà cung cấp không trả về ngay lập tức. Để lấy hash, hãy gọi /apiv2/order_check không sớm hơn 1 phút sau khi đặt hàng
  • Lựa chọn nhà cung cấp: Tự động dựa trên chi phí và tính khả dụng
  • Định dạng ID đơn hàng: 1H{request_id} để theo dõi hợp nhất
  • Định giá: Linh hoạt dựa trên thời gian trong ngày và lượng Energy
  • Thời hạn: Cố định 1 giờ (3600 giây)
  • Giới hạn tốc độ: 50 yêu cầu mỗi giây trên mỗi địa chỉ IP