TRONowКабинет продавца →
TRONow · Библиотека

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

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

Проверено TRONow

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

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

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

GET /prices/quote должен соответствовать фактическому заказу. Сохраните quote_id, сумму и expires_at. Используйте целые SUN или точный десятичный тип. При изменении параметров запросите новую котировку.

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

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

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

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

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

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

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

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

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

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

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

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

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

Открытая спецификация и серверный пример клиента. Читать можно без входа; для 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