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

GET /apiv2/order_check ​

Lấy thông tin chi tiết về một đơn hàng năng lượng 1 giờ cụ thể, bao gồm chi tiết chi phí, thông tin kích hoạt và mức giá chênh lệch của người dùng phụ (subuser markup).

URL Endpoint ​

GET https://netts.io/apiv2/order_check

Header yêu cầu ​

Tiêu đềBắt buộcMô tả
X-API-KEYCóKhóa API của bạn từ bảng điều khiển Netts

Tham số truy vấn ​

Tham sốLoạiBắt buộcMô tả
order_idchuỗiCóID đơn hàng theo định dạng 1H{hash} (ví dụ: 1Ha1b2c3d4e5)

Ví dụ yêu cầu ​

cURL ​

bash
curl -X GET "https://netts.io/apiv2/order_check?order_id=1Ha1b2c3d4e5" \
  -H "X-API-KEY: your_api_key"

Python ​

python
import requests

url = "https://netts.io/apiv2/order_check"
headers = {
    "X-API-KEY": "your_api_key"
}
params = {
    "order_id": "1Ha1b2c3d4e5"
}

response = requests.get(url, headers=headers, params=params)
data = response.json()

if data.get("success"):
    order = data.get("order", {})
    print(f"Order ID: {order.get('id')}")
    print(f"Total Cost: {order.get('cost')} TRX")
    print(f"Energy: {order.get('energy')}")
    print(f"Rate: {order.get('rate_sun')} sun/energy")
    print(f"Target Address: {order.get('target_address')}")

    # Check if activation was performed
    activation = data.get("activation")
    if activation:
        print(f"Activation Cost: {activation.get('cost')} TRX")
        print(f"Activation Hash: {activation.get('tx_hash')}")
else:
    print(f"Error: {data.get('msg')}")

JavaScript (Node.js) ​

javascript
const axios = require('axios');

const url = 'https://netts.io/apiv2/order_check';
const headers = {
    'X-API-KEY': 'your_api_key'
};
const params = {
    order_id: '1Ha1b2c3d4e5'
};

axios.get(url, { headers, params })
    .then(response => {
        const data = response.data;
        if (data.success) {
            console.log('Order:', data.order);
            console.log('Activation:', data.activation);
        } else {
            console.log('Error:', data.msg);
        }
    })
    .catch(error => console.error('Request failed:', error));

Phản hồi ​

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

json
{
    "success": true,
    "code": 10000,
    "order": {
        "id": "1Ha1b2c3d4e5",
        "cost": 2.535,
        "target_address": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
        "energy": 65000,
        "duration": "1 hour",
        "tx_hashes": ["a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345678"],
        "timestamp": "2025-12-03T15:21:34.182127",
        "rate_sun": 39.0,
        "comments": null
    },
    "activation": null,
    "subuser_payout": null
}

Phản hồi thành công kèm kích hoạt (200 OK) ​

Khi địa chỉ đích yêu cầu kích hoạt:

json
{
    "success": true,
    "code": 10000,
    "order": {
        "id": "1Ha1b2c3d4e5",
        "cost": 3.635,
        "target_address": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
        "energy": 65000,
        "duration": "1 hour",
        "tx_hashes": ["a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345678"],
        "timestamp": "2025-12-03T15:21:34.182127",
        "rate_sun": 39.0,
        "comments": "Includes activation: 1.1 TRX"
    },
    "activation": {
        "cost": 1.1,
        "tx_hash": "b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456789a"
    },
    "subuser_payout": null
}

Phản hồi thành công kèm chi trả cho người dùng phụ (200 OK) ​

Dành cho người dùng chính xem đơn hàng của người dùng phụ:

json
{
    "success": true,
    "code": 10000,
    "order": {
        "id": "1Ha1b2c3d4e5",
        "cost": 3.93,
        "target_address": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
        "energy": 65000,
        "duration": "1 hour",
        "tx_hashes": ["c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456789abc"],
        "timestamp": "2025-12-03T16:55:16.525118",
        "rate_sun": 60.5,
        "comments": "Includes activation: 1.1 TRX"
    },
    "activation": {
        "cost": 1.1,
        "tx_hash": "b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456789a"
    },
    "subuser_payout": {
        "parent_id": 12,
        "gross_cost": 3.93,
        "energy_markup": 0.195,
        "activation_markup": 0.1,
        "total_markup": 0.295,
        "net_cost": 3.635,
        "subuser_rate_sun": 43.5,
        "parent_rate_sun": 39.0
    }
}

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

Phản hồi chính ​

TrườngLoạiMô tả
successbooleantrue nếu yêu cầu thành công
codesố nguyên10000 cho các yêu cầu thành công
orderđối tượngChi tiết đơn hàng
activationđối tượng | nullChi tiết kích hoạt (nếu địa chỉ đã được kích hoạt)
subuser_payoutđối tượng | nullChi tiết mức chênh lệch của người dùng phụ (chỉ dành cho người dùng chính)

Đối tượng Order ​

TrườngLoạiMô tả
idchuỗiID đơn hàng theo định dạng 1H{hash}
costsốTổng chi phí người dùng đã trả (TRX)
target_addresschuỗiĐịa chỉ nhận năng lượng
energysố nguyênLượng Energy được ủy quyền
durationchuỗiThời hạn ủy quyền (luôn là "1 hour")
tx_hashesmảngDanh sách các hash giao dịch ủy quyền
timestampchuỗiThời gian tạo đơn hàng (định dạng ISO 8601)
rate_sunsốTỷ giá năng lượng tính bằng sun trên mỗi đơn vị năng lượng
commentschuỗi | nullThông tin bổ sung (ví dụ: thông báo kích hoạt)

Đối tượng Activation ​

TrườngLoạiMô tả
costsốChi phí kích hoạt (TRX)
tx_hashchuỗiHash giao dịch kích hoạt

Đối tượng Subuser Payout ​

Chỉ dành cho người dùng chính

Trường subuser_payout chỉ được bao gồm đối với người dùng chính khi xem đơn hàng của người dùng phụ của họ. Người dùng phụ (người dùng thử nghiệm/mock users) sẽ không thấy trường này.

TrườngLoạiMô tả
parent_idsố nguyênID người dùng chính
gross_costsốTổng chi phí do người dùng phụ thanh toán (TRX)
energy_markupsốLượng giá chênh lệch Energy (TRX)
activation_markupsốLượng giá chênh lệch kích hoạt (TRX)
total_markupsốTổng mức chênh lệch (năng lượng + kích hoạt)
net_costsốChi phí trừ đi mức chênh lệch (chi phí thực tế của người dùng chính)
subuser_rate_sunsốTỷ giá do người dùng phụ thanh toán (sun/energy)
parent_rate_sunsốTỷ giá thực tế không có mức chênh lệch (sun/energy)

Các phản hồi lỗi ​

Thiếu ID đơn hàng (400) ​

json
{
    "success": false,
    "code": -2,
    "msg": "order_id parameter required"
}

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

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

Quyền truy cập bị từ chối (403) ​

Khi cố gắng xem đơn hàng thuộc về người dùng khác:

json
{
    "success": false,
    "code": -4,
    "msg": "Order does not belong to this user"
}

Không tìm thấy đơn hàng (404) ​

json
{
    "success": false,
    "code": -3,
    "msg": "Order not found"
}

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

json
{
    "success": false,
    "msg": "Internal server error"
}

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

MãMô tảTrạng thái HTTP
10000Thành công200
-1Xác thực thất bại401
-2Thiếu tham số order_id400
-3Không tìm thấy đơn hàng404
-4Quyền truy cập bị từ chối (không phải đơn hàng của bạn)403

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

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

Giai đoạnGiới hạnMô tả
1 giây50 yêu cầuTối đa 50 yêu cầu mỗi giây

Tiêu đề 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"
}

Kiểm soát quyền truy cập ​

Quyền sở hữu đơn hàng ​

Người dùng chỉ có thể xem đơn hàng của chính mình. API kiểm tra quyền sở hữu dựa trên:

  • Người dùng Google: Khớp google_user_id từ đơn hàng với ID Google của người dùng
  • Người dùng Telegram: Khớp tg_user_id từ đơn hàng với ID Telegram của người dùng

Quyền truy cập Người dùng chính - Người dùng phụ ​

Người dùng chính có thể xem các đơn hàng được tạo bởi người dùng phụ của họ. Trong trường hợp này:

  • Trường subuser_payout được bao gồm trong phản hồi
  • Người dùng chính có thể xem chi tiết mức chênh lệch và chi phí thực tế của họ

Quyền truy cập của người dùng phụ (Mock) ​

Người dùng phụ khi xem đơn hàng của chính họ sẽ thấy:

  • Chi phí thực tế của họ (bao gồm mức chênh lệch) trong order.cost
  • Tỷ giá của họ (bao gồm mức chênh lệch) trong order.rate_sun
  • Trường subuser_payout không được bao gồm

Trường hợp sử dụng ​

1. Xác minh hoàn tất đơn hàng ​

Sau khi đặt đơn hàng bằng /apiv2/order1h, hãy sử dụng endpoint này để xác minh:

  • Đơn hàng đã được xử lý thành công
  • Năng lượng đã được ủy quyền cho đúng địa chỉ
  • Số tiền chính xác đã được tính phí

2. Lấy hash giao dịch ​

Lấy hash giao dịch ủy quyền để xác minh trên blockchain:

python
response = requests.get(
    "https://netts.io/apiv2/order_check",
    headers={"X-API-KEY": "your_api_key"},
    params={"order_id": "1Ha1b2c3d4e5"}
)

data = response.json()
if data["success"]:
    tx_hashes = data["order"]["tx_hashes"]
    if tx_hashes:
        print(f"Verify on Tronscan: https://tronscan.org/#/transaction/{tx_hashes[0]}")

3. Theo dõi chi phí của người dùng phụ (Người dùng chính) ​

Người dùng chính có thể theo dõi đơn hàng và thu nhập từ mức chênh lệch của người dùng phụ:

python
response = requests.get(
    "https://netts.io/apiv2/order_check",
    headers={"X-API-KEY": "parent_api_key"},
    params={"order_id": "1Ha1b2c3d4e5"}
)

data = response.json()
if data["success"] and data.get("subuser_payout"):
    payout = data["subuser_payout"]
    print(f"Subuser paid: {payout['gross_cost']} TRX")
    print(f"Your markup: {payout['total_markup']} TRX")
    print(f"Your actual cost: {payout['net_cost']} TRX")

Ghi chú ​

  • Các đơn hàng có thể được truy vấn ngay sau khi tạo
  • Hash giao dịch có thể để trống nếu nhà cung cấp không trả về
  • Trường rate_sun hiển thị tỷ giá hiệu dụng trên mỗi đơn vị năng lượng tính bằng sun
  • Chi phí kích hoạt được tính vào tổng cost khi áp dụng
  • Trường comments cung cấp ngữ cảnh bổ sung (ví dụ: thông báo kích hoạt)
  • Endpoint này chỉ trả về các đơn hàng 1 giờ được tạo qua /apiv2/order1h