Skip to content

Подпись запросов

Для авторизации запроса в API необходимо доказать его валидность. Для этого сервер проверяет подпись запроса. Мерчант должен добавить подпись к каждому запросу, где это требуется.

Подпись - это с строка в заголовке X-Payload-Digest в которой мерчант зашифровал свои данные с помощью приватного токена.

Рассмотрим создание подписи на примере запроса POST /api/v1/trades/pay_in:

{
    merchant: "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    order_id: "Order999",
    cents: 10000,
    currency: "RUB",
    payment_type: "sber",
    customer: "customer_email@example.com",
    callback_url: "https://api.merchant_sitem.com/callback_url",
}

Чтобы зашифровать данные запроса Мерчант должен сформировать строку из аттрибутов на основе алфавитного порядка ключей, конкатенировать их с разделителем :: и вычислить HMAC с помощью секретного кода

  1. Сортируем по алфавитному порядку ключей:
[
    ["callback_url", "https://api.merchant_sitem.com/callback_url"],
    ["cents", 10000],
    ["currency", "RUB"],
    ["customer", "customer_email@example.com"],
    ["merchant", "3fa85f64-5717-4562-b3fc-2c963f66afa6"],
    ["order_id", "Order999"],
    ["payment_type", "sber"]
]
  1. Конкатенируем значения
https://api.merchant_sitem.com/callbacck_url::10000::RUB::customer_email@example.com::3fa85f64-5717-4562-b3fc-2c963f66afa6::Order999::sber
  1. Генерируем подпись c помощью кода pass и алгоритма sha-256
8a9b8b9586d93bce2aa64cc033007589714fbba14c4c947ab0173b6e1f02d7e9

Сервисы для онлайн генерации подписи: