> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# Верификация и идемпотентность подписи Webhook

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

<h2 id="webhook-headers">
  Заголовки Webhook
</h2>

| Заголовок         | Описание                 |
| ----------------- | ------------------------ |
| X-Agent-Timestamp | Тайммет Unix за секунды. |
| X-Agent-Nonce     | Защита от повтора.       |
| X-Агент-Подпись   | HMAC-SHA256 подпись.     |

```text
timestamp + nonce + rawBody
```

При восстановлении знакового значения используйте точное исходное тело запроса, полученное HTTP . Сначала парсинг и повторная сериализация JSON могут изменить пробелы или ордер поля и получить другую подпись.

<h2 id="verification-flow">
  Поток верификации
</h2>

1. Прочитайте временную метку, nonce и заголовки подписи.
2. Захватить немодифицированное исходное тело запроса.
3. Постройте `timestamp + nonce + rawBody`.
4. Вычислите HMAC-SHA256 с партнёром API секрет.
5. Сравните рассчитанные и полученные подписи с помощью сравнения с постоянным временем.
6. Примените утверждённые проверки на актуальность и неповторное использование.
7. Проанализировать и обработать событие только после успешной проверки.

Когда доступен официальный Agent SDK -верификатор, используйте его вместо самостоятельного кода подписи.

<h2 id="order-idempotency">
  Орденная идемпотентность
</h2>

| Случай                           | Управление                                                 |
| -------------------------------- | ---------------------------------------------------------- |
| Первоначальный запрос на перевод | Создайте уникальный agentOrderNoв мире.                    |
| HTTP тайм-аут                    | Запросите исходный agentOrderNo перед созданием нового.    |
| PROCESSING ответ                 | Ждите статуса вебхука или заказа запроса.                  |
| Повторяющийся вебхук             | Дедупликация по ключу идемпотентности и конечному статусу. |

<h2 id="recommended-idempotency-record">
  Рекомендуемая запись идемпотентности
</h2>

Сохраняйте достаточно информации, чтобы распознать повторную доставку и безопасно восстановить:

| Поле                         | Назначение                                                        |
| ---------------------------- | ----------------------------------------------------------------- |
| Ключ для события или бизнеса | Уникально идентифицирует уведомление или операцию.                |
| Номер заказа партнёра        | Связывает событие с исходным запросом.                            |
| Хэш полезной нагрузки        | Помогает выявлять противоречивые повторяющиеся полезные нагрузки. |
| Текущее состояние обработки  | Различает полученные, обработанные, успешные и неудачные работы.  |
| Окончательный статус бизнеса | Предотвращает дваждное применение клемного действия.              |
| Обработанная метка времени   | Поддерживает политику расследования и удержания.                  |

Фиксируйте запись бизнес-изменения и идемпотентности в одной и той же транзакции, где это возможно. Повторяющееся событие должно возвращать уже известный результат вместо повторного применения баланса, ордера или пользовательского изменения.

<h2 id="timeout-and-retry-rule">
  Правило тайм-аута и повторных попыток
</h2>

Тайм-аут HTTP не доказывает, что первоначальный запрос не был выполнен. Запросите операцию с помощью исходного `agentOrderNo`или дождитесь его вебхука, прежде чем решать, требуется ли другое действие. Создание нового номера бизнес-заказа после каждого тайм-аута может привести к дублирующимся перемещениям средств.

<h2 id="production-checklist">
  Чек-лист производства
</h2>

* Проверять подпись перед JSON парсингом или бизнес-обработкой.
* Сохранять исходное тело независимо от парсированной полезной нагрузки.
* Отклонять устаревшие или повторные запросы в соответствии с утверждённой политикой интеграции.
* Сделать обработку событий безопасной для повторной и вне ордера доставки.
* Идентификаторы событий журнала, номера заказов партнёров, результаты обработки и время запроса.
* Скрыть секреты и значения подписей из логов и поддерживающих вложений.

<h2 id="related-docs">
  Связанные документы
</h2>

#### [Секреты и HMAC подписания](/ru/sdk/security/secrets-signing)

Защитите API секрет, используемый для запросов и проверки вебхуков.

#### [Agent SDK Обзор](/ru/sdk/agent-sdk/overview)

Ознакомьтесь с полным рабочим процессом интеграции бэкенда.

#### [SDK Устранение неисправностей](/ru/sdk/security/troubleshooting)

Расследовать отклонённые подписи, повторяющиеся события и ожидающие операции.