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_checkHeader yêu cầu
| Tiêu đề | Bắt buộc | Mô tả |
|---|---|---|
| X-API-KEY | Có | Khóa API của bạn từ bảng điều khiển Netts |
Tham số truy vấn
| Tham số | Loại | Bắt buộc | Mô tả |
|---|---|---|---|
| order_id | chuỗi | Có | ID đơn hàng theo định dạng 1H{hash} (ví dụ: 1Ha1b2c3d4e5) |
Ví dụ yêu cầu
cURL
curl -X GET "https://netts.io/apiv2/order_check?order_id=1Ha1b2c3d4e5" \
-H "X-API-KEY: your_api_key"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)
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)
{
"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:
{
"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ụ:
{
"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ường | Loại | Mô tả |
|---|---|---|
| success | boolean | true nếu yêu cầu thành công |
| code | số nguyên | 10000 cho các yêu cầu thành công |
| order | đối tượng | Chi tiết đơn hàng |
| activation | đối tượng | null | Chi tiết kích hoạt (nếu địa chỉ đã được kích hoạt) |
| subuser_payout | đối tượng | null | Chi 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ường | Loại | Mô tả |
|---|---|---|
| id | chuỗi | ID đơn hàng theo định dạng 1H{hash} |
| cost | số | Tổng chi phí người dùng đã trả (TRX) |
| target_address | chuỗi | Địa chỉ nhận năng lượng |
| energy | số nguyên | Lượng Energy được ủy quyền |
| duration | chuỗi | Thời hạn ủy quyền (luôn là "1 hour") |
| tx_hashes | mảng | Danh sách các hash giao dịch ủy quyền |
| timestamp | chuỗi | Thời gian tạo đơn hàng (định dạng ISO 8601) |
| rate_sun | số | Tỷ giá năng lượng tính bằng sun trên mỗi đơn vị năng lượng |
| comments | chuỗi | null | Thông tin bổ sung (ví dụ: thông báo kích hoạt) |
Đối tượng Activation
| Trường | Loại | Mô tả |
|---|---|---|
| cost | số | Chi phí kích hoạt (TRX) |
| tx_hash | chuỗi | Hash 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ường | Loại | Mô tả |
|---|---|---|
| parent_id | số nguyên | ID người dùng chính |
| gross_cost | số | Tổng chi phí do người dùng phụ thanh toán (TRX) |
| energy_markup | số | Lượng giá chênh lệch Energy (TRX) |
| activation_markup | số | Lượng giá chênh lệch kích hoạt (TRX) |
| total_markup | số | Tổng mức chênh lệch (năng lượng + kích hoạt) |
| net_cost | số | 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_sun | số | Tỷ giá do người dùng phụ thanh toán (sun/energy) |
| parent_rate_sun | số | 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)
{
"success": false,
"code": -2,
"msg": "order_id parameter required"
}Lỗi xác thực (401)
{
"success": false,
"code": -1,
"msg": "API key not provided"
}{
"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:
{
"success": false,
"code": -4,
"msg": "Order does not belong to this user"
}Không tìm thấy đơn hàng (404)
{
"success": false,
"code": -3,
"msg": "Order not found"
}Lỗi máy chủ nội bộ (500)
{
"success": false,
"msg": "Internal server error"
}Bảng tra cứu mã lỗi
| Mã | Mô tả | Trạng thái HTTP |
|---|---|---|
10000 | Thành công | 200 |
-1 | Xác thực thất bại | 401 |
-2 | Thiếu tham số order_id | 400 |
-3 | Không tìm thấy đơn hàng | 404 |
-4 | Quyề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ạn | Giới hạn | Mô tả |
|---|---|---|
| 1 giây | 50 yêu cầu | Tối đa 50 yêu cầu mỗi giây |
Tiêu đề giới hạn tốc độ
RateLimit-Limit: 50
RateLimit-Remaining: 49
RateLimit-Reset: 1
X-RateLimit-Limit-Second: 50
X-RateLimit-Remaining-Second: 49Vượt quá giới hạn tốc độ (429)
{
"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_idtừ đơn hàng với ID Google của người dùng - Người dùng Telegram: Khớp
tg_user_idtừ đơ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_payoutkhô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:
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ụ:
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_sunhiể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
costkhi áp dụng - Trường
commentscung 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