Создайте локальный заказ
До запроса сохраните уникальный 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 события. Подтверждайте приём после надёжного сохранения или обработки. При расхождении состояний выполняйте сверку через запрос заказа.
Ограничивайте повторы
Используйте тайм-ауты, ограниченную задержку и бюджет повторов. Записывайте номера и безопасные коды. До запуска проверьте недостаток баланса, несовпадение котировки, дубликаты, тайм-аут после принятия и неверную подпись. Формат задаёт публичный контракт.