Идея за 20 секунд
Каждый запрос несёт три заголовка:X-Public-Id— кто вы (несекретный идентификатор ключа);X-Timestamp— когда (unix‑секунды, окно ±5 минут);X-Signature— доказательство, что запрос собрали именно вы, и он не изменён.
secret.
Каноническая строка
Соберите строку из четырёх частей, разделённых\n (перевод строки):
Затем:
Золотое правило
Сериализуйте тело ОДИН раз в переменную и используйте её и для подписи, и для отправки.
401.
Примеры на четырёх языках
Частые ошибки и как их поймать
Помните про идемпотентность
Окно подписи ±5 минут не защищает от повторной обработки внутри этого окна. Реальную защиту от дублей дают два механизма:- HTTP‑заголовок
Idempotency-Key(рекомендуемый) — любое уникальное значение до 255 символов, одинаковое во всех попытках одного действия. Повтор вернёт тот же ответ и заголовокIdempotent-Replayed: true. order_id/reference— ваш бизнес‑ключ, который тоже дедуплицирует (для выплат обязателен).
Заголовок
Idempotency-Key в подпись НЕ входит. Подписывается только каноническая строка
{timestamp}\n{METHOD}\n{path}\n{body} — добавление заголовка её не меняет и подпись не ломает.Связанные страницы
Аутентификация
справочная версия.
Идемпотентность
IP‑allowlist
Объект вебхука
другой алгоритм подписи.