Подпись запросов
Для авторизации запроса в 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 с помощью секретного кода
- Сортируем по алфавитному порядку ключей:
[
["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"]
]
- Конкатенируем значения
https://api.merchant_sitem.com/callbacck_url::10000::RUB::customer_email@example.com::3fa85f64-5717-4562-b3fc-2c963f66afa6::Order999::sber
- Генерируем подпись c помощью кода
passи алгоритмаsha-256
8a9b8b9586d93bce2aa64cc033007589714fbba14c4c947ab0173b6e1f02d7e9
Сервисы для онлайн генерации подписи: