Правильный порядок запросов
Сначала получите оценку для адреса и определите подходящий объём. Затем запросите quote и покажите пользователю итоговую цену. При подтверждении создайте заказ с уникальным idempotency key, сохраните его ID и проверяйте статус по нему.
- Estimate — состояние адреса и ориентир ресурса.
- Quote — актуальная цена без списания.
- Create order — атомарное списание и запуск доставки.
- Order status — финальный результат и фактически списанная сумма.
Защита от повторного списания
Сетевой таймаут не означает, что сервер не принял заказ. Поэтому повтор с новым ключом опасен: можно создать дубль. Повторяйте запрос с тем же idempotency key и храните связь между своим заказом и ID платформы. Ограничивайте число повторов и используйте разумный backoff.
Безопасность ключа и ошибок
API-ключ должен храниться только на сервере клиента, а не в браузере, мобильном приложении или публичном репозитории. Проверяйте HTTP-код и машинный код ошибки, не показывайте пользователю внутренние сведения и не логируйте полный токен. При price_changed получите новый quote; при inactive_address попросите активировать адрес.
FAQ
Нужно ли передавать expectedTotalPriceTrx?
Нет, это необязательный строгий лимит. Используйте его, если заказ должен отменяться при изменении цены после quote.
Что делать после таймаута создания заказа?
Повторите запрос с тем же idempotency key или запросите статус сохранённого заказа. Не создавайте новый ключ вслепую.
Можно ли хранить API-ключ во фронтенде?
Нет. Любой пользователь сможет извлечь его из браузера или приложения. Запросы должны идти через ваш защищённый сервер.
Источники
Технические факты сверены с официальной документацией TRON. Значения расхода могут меняться вместе с состоянием сети и контракта.
EZ Energy API ↗HTTP idempotency ↗