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-KEYKhó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ỗiID đơ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ô 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