protopaysAPI

аутентификация

Запросы подписываются HMAC-SHA256. Нужны ключ из кабинета и заголовок Signature. Только HTTPS. Пример для POST — в создании платежа.

заголовки

  • X-Merchant-Key-Id — id ключа
  • X-Merchant-Secret — секрет (им же считают HMAC)
  • Signature — HMAC-SHA256 от тела (для GET — от пустой строки), hex в нижнем регистре
  • Idempotency-Key — по желанию; не влияет на дедупликацию на сервере (см. идемпотентность).

расчёт подписи (JSON POST)

  1. Возьмите те же байты JSON, что уйдут в тело запроса.
  2. HMAC-SHA256 (ключ = секрет, сообщение = тело).
  3. Результат — hex в нижнем регистре → заголовок Signature.

типичные ошибки подписи и заголовков

Если подпись не совпадает с телом или секретом, сервер обычно отвечает 401 Unauthorized или 403 Forbidden. Тело ответа часто содержит поле с причиной; точный формат может обновляться — ориентируйтесь на код HTTP и текст сообщения.

Иллюстративный ответ (структура не является гарантией дословного совпадения в каждой версии API):

http
HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "message": "Неверная подпись запроса.",
  "code": "signature_invalid"
}

Проверьте: тело для HMAC = то же, что ушло в запрос; UTF-8; секрет и key id верные; Signature в нижнем hex. См. ошибки.

где взять ключи

Ключи выдаются в личном кабинете мерчанта: раздел «шлюзы», карточка шлюзы, блок credentials для API. Перейти в кабинет