TRONow
Язык · RU
Кабинет продавца →
TRONow · Разработчикам

Надёжные заказы энергии: идемпотентность и сверка

Практический подход к API TRONow: точные SUN, стабильный идентификатор заказа, проверка после тайм-аута и защита от повторной обработки уведомлений.

Проверено TRONow

Ресурсы для разработчиков

Открытая спецификация и серверный пример клиента. Читать можно без входа; для API нужен активированный аккаунт продавца.

Skill для ИИ-интеграции ↓

Спецификация OpenAPI · HTTP API

https://api.tronow.io/openapi/v1

HTTPAPI
GET/prices/quote
POST/orders
GET/orders
GET/orders/{order_id}
POST/address-activations
GET/address-activations
GET/address-activations/{activation_id}
GET/account/balance

Создайте локальный заказ

До запроса сохраните уникальный client_order_id, количество, срок и получателя. Ограничение уникальности в базе защитит от параллельного создания одной операции. Это технический пример, а не клиентский кейс.

Получите точную котировку

GET /prices/quote должен использовать точные количество и срок. Ответ содержит price_sun, currency и priced_at; price_sun хранится как целая строка SUN и служит текущей справочной ценой. POST /orders повторно рассчитывает и фиксирует цену при принятии, поэтому идентификатор котировки не передаётся.

Подпишите отправляемые байты

Храните ключи на сервере. Сериализуйте JSON один раз и подпишите именно отправляемое тело по спецификации. Исключите секреты и заголовки авторизации из журналов.

Сохраните ключ идемпотентности

Кроме client_order_id, POST /orders требует Idempotency-Key из 8–128 видимых ASCII-символов. Сохраните ключ и точное тело до отправки. При повторе неопределённого запроса оставьте их прежними, но обновите timestamp, nonce и подпись. Merchant API не возвращает QUOTE_EXPIRED. Правила Webhook приведены в публичном Skill; активация адреса отслеживается опросом.

Проверяйте неопределённый результат

После тайм-аута POST /orders вызовите GET /orders?client_order_id={client_order_id}. Отслеживайте существующий заказ. При допустимом повторе сохраняйте идентификатор и параметры; конфликт идемпотентности требует проверки.

Не путайте принятие с доставкой

Сохраняйте платформенный номер и переходы статуса. Обновляйте исполнение по конечному результату и свидетельству доставки, а не только HTTP-успеху. Сохраняйте ошибки и состояния проверки для операторов.

Проверяйте уведомления

Верифицируйте подпись Webhook по контракту и исключайте повторы по ID события. Подтверждайте приём после надёжного сохранения или обработки. При расхождении состояний выполняйте сверку через запрос заказа.

Ограничивайте повторы

Используйте тайм-ауты, ограниченную задержку и бюджет повторов. Записывайте номера и безопасные коды. До запуска проверьте недостаток баланса, несовпадение котировки, дубликаты, тайм-аут после принятия и неверную подпись. Формат задаёт публичный контракт.