> 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.

# Верифікація та ідемпотентність підпису вебхука

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

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

| Заголовок            | Опис                       |
| -------------------- | -------------------------- |
| X-Агент-Часова Мітка | Тайммарк Unix за секунди.  |
| X-Agent-Nonce        | Захист від повтору не так. |
| X-Агент-підпис       | HMAC-SHA256 підпис.        |

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

Використовуйте точне сире тіло запиту, отримане протягом HTTP , при відновленні підписаного значення. Спочатку парсинг і повторна серіалізація JSON можуть змінити пробіл або ордер полів і отримати інший підпис.

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

1. Прочитайте часову мітку, нонс і підписні заголовки.
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 підписання](/uk/sdk/security/secrets-signing)

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

#### [Agent SDK Огляд](/uk/sdk/agent-sdk/overview)

Перегляньте повний робочий процес інтеграції бекенду.

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

Розслідуйте відхилені підписи, повторювані події та поточні операції.