GET /apiv2/order_check
Получение подробной информации о конкретном 1-часовом заказе энергии, включая детализацию стоимости, данные об активации и информацию о наценке субаккаунтов.
URL эндпоинта
GET https://netts.io/apiv2/order_checkЗаголовки запроса
| Заголовок | Обязательный | Описание |
|---|---|---|
| X-API-KEY | Да | Ваш API-ключ из панели управления Netts |
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| order_id | string | Да | ID заказа в формате 1H{hash} (например, 1Ha1b2c3d4e5) |
Примеры запросов
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));Ответ
Успешный ответ (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
}Успешный ответ с активацией (200 OK)
Когда целевой адрес требовал активации:
{
"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
}Успешный ответ с выплатой субаккаунта (200 OK)
Для основных пользователей, просматривающих заказы субаккаунтов:
{
"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
}
}Поля ответа
Основной ответ
| Поле | Тип | Описание |
|---|---|---|
| success | boolean | true, если запрос выполнен успешно |
| code | integer | 10000 для успешных запросов |
| order | object | Детали заказа |
| activation | object | null | Детали активации (если адрес был активирован) |
| subuser_payout | object | null | Детали наценки субаккаунта (только для основных пользователей) |
Объект Order
| Поле | Тип | Описание |
|---|---|---|
| id | string | ID заказа в формате 1H{hash} |
| cost | number | Общая стоимость, оплаченная пользователем (TRX) |
| target_address | string | Адрес, получивший энергию |
| energy | integer | Количество делегированной Energy |
| duration | string | Длительность делегирования (всегда "1 hour") |
| tx_hashes | array | Список хешей транзакций делегирования |
| timestamp | string | Время создания заказа (формат ISO 8601) |
| rate_sun | number | Тариф Energy в sun за единицу энергии |
| comments | string | null | Дополнительная информация (например, уведомление об активации) |
Объект Activation
| Поле | Тип | Описание |
|---|---|---|
| cost | number | Стоимость активации (TRX) |
| tx_hash | string | Хеш транзакции активации |
Объект Subuser Payout
Только для основных пользователей
Поле subuser_payout включается только для основных пользователей при просмотре заказов их субаккаунтов. Субаккаунты (mock-пользователи) не видят это поле.
| Поле | Тип | Описание |
|---|---|---|
| parent_id | integer | ID основного пользователя |
| gross_cost | number | Общая стоимость, оплаченная субаккаунтом (TRX) |
| energy_markup | number | Сумма наценки на Energy (TRX) |
| activation_markup | number | Сумма наценки на активацию (TRX) |
| total_markup | number | Общая наценка (Energy + активация) |
| net_cost | number | Стоимость за вычетом наценки (фактическая стоимость для основного пользователя) |
| subuser_rate_sun | number | Тариф, оплаченный субаккаунтом (sun/energy) |
| parent_rate_sun | number | Фактический тариф без наценки (sun/energy) |
Ответы с ошибками
Отсутствует ID заказа (400)
{
"success": false,
"code": -2,
"msg": "order_id parameter required"
}Ошибка аутентификации (401)
{
"success": false,
"code": -1,
"msg": "API key not provided"
}{
"success": false,
"code": -1,
"msg": "Invalid API key or IP not in whitelist"
}Доступ запрещен (403)
При попытке просмотреть заказ, принадлежащий другому пользователю:
{
"success": false,
"code": -4,
"msg": "Order does not belong to this user"
}Заказ не найден (404)
{
"success": false,
"code": -3,
"msg": "Order not found"
}Внутренняя ошибка сервера (500)
{
"success": false,
"msg": "Internal server error"
}Справочник кодов ошибок
| Код | Описание | HTTP-статус |
|---|---|---|
10000 | Успешно | 200 |
-1 | Ошибка аутентификации | 401 |
-2 | Отсутствует параметр order_id | 400 |
-3 | Заказ не найден | 404 |
-4 | Доступ запрещен (не ваш заказ) | 403 |
Ограничения частоты запросов (Rate Limits)
Для этого эндпоинта действуют следующие ограничения частоты запросов (на один IP-адрес):
| Период | Лимит | Описание |
|---|---|---|
| 1 секунда | 50 запросов | Максимум 50 запросов в секунду |
Заголовки Rate Limit
RateLimit-Limit: 50
RateLimit-Remaining: 49
RateLimit-Reset: 1
X-RateLimit-Limit-Second: 50
X-RateLimit-Remaining-Second: 49Превышение лимита запросов (429)
{
"message": "API rate limit exceeded"
}Управление доступом
Владение заказом
Пользователи могут просматривать только свои собственные заказы. API проверяет владение на основе:
- Пользователи Google: сопоставление
google_user_idиз заказа с Google ID пользователя - Пользователи Telegram: сопоставление
tg_user_idиз заказа с Telegram ID пользователя
Доступ основной пользователь — субаккаунт
Основные пользователи могут просматривать заказы, созданные их субаккаунтами. В этом случае:
- Поле
subuser_payoutвключается в ответ - Основной пользователь видит детализацию наценки и свою фактическую стоимость
Доступ для субаккаунтов (Mock)
Субаккаунты, просматривающие свои собственные заказы, увидят:
- Свою фактическую стоимость (включая наценку) в
order.cost - Свой тариф (включая наценку) в
order.rate_sun - Поле
subuser_payoutне включается
Сценарии использования
1. Проверка выполнения заказа
После размещения заказа через /apiv2/order1h используйте этот эндпоинт, чтобы проверить:
- Успешно ли обработан заказ
- Была ли делегирована Energy на правильный адрес
- Была ли списана корректная сумма
2. Получение хеша транзакции
Получите хеш транзакции делегирования для проверки в блокчейне:
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. Отслеживание расходов субаккаунтов (основные пользователи)
Основные пользователи могут отслеживать заказы своих субаккаунтов и заработок на наценке:
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")Примечания
- Заказы можно запрашивать сразу после создания
- Хеши транзакций могут быть пустыми, если поставщик не возвращает их
- Поле
rate_sunпоказывает эффективный тариф за единицу энергии в sun - Стоимость активации включается в общую
cost, когда это применимо - Поле
commentsпредоставляет дополнительный контекст (например, уведомление об активации) - Этот эндпоинт возвращает только 1-часовые заказы, созданные через
/apiv2/order1h