Подпись платёжных поручений¶
Для отправки платёжных поручений партнёру необходимо подписать запрос и передать значение подписи в заголовке QIWI-Payment-Signature
.
Чтобы понять, в каких запросах следует передавать QIWI-Payment-Signature: <значение подписи>
, см. описание HTTP Headers в документации Payments API.
QIWI-Payment-Signature
является дополнительным фактором безопасности: его использование не отменяет необходимости передавать Bearer Token в заголовке запроса Authorization
.
Для передачи платёжных поручений BaaS партнёр должен:
-
Создать пару ключей с помощью алгоритма RSA-2048.
- Одна из доступных утилит — OpenSSL.
- Размер закрытого ключа — 2048 бит, формат — PEM.
-
Передать BaaS закодированный в Base64 публичный ключ, соответствующий секретному ключу.
- Подписывать каждый запрос к Payments API, требующий передачи заголовка
QIWI-Payment-Signature
.
Шаги 1 и 2 выполняются разово, шаг 3 — каждый раз при создании запроса.
Обратите внимание
Пару RSA-ключей необходимо перевыпускать каждый год.
Создание пары ключей¶
Для создания пары ключей с помощью OpenSSL, партнёру необходимо:
-
Сгенерировать закрытый ключ.
В папке выполнения команды будет создан файл с секретным ключом:
private-key.pem
.Обратите внимание
Секретный ключ недопустимо передавать третьим лицам, сохраняйте его конфиденциальность.
-
Получить открытый ключ, соответствующий закрытому.
-
Закодировать полученный ключ
public-key.pem
в Base64.
Передача публичного ключа BaaS¶
Партнёр должен передать BaaS результат, полученный на шаге 3 этапа «Создание пары ключей». Способ передачи public-key.pem
необходимо уточнить у курирующего менеджера.
Подпись платёжного запроса¶
Для подписи платёжных запросов партнёру следует выполнить нижеописанные действия. Примеры в описании приведены на языке Bash.
-
Сформировать тело запроса в виде строки с параметрами запроса.
-
Сформировать цифровую подпись с помощью алгоритма SHA256withRSA и секретного ключа
private-key.pem
, полученного на этапе Создание пары ключей». -
Закодировать полученную цифровую подпись при помощи Base64 в строку.
-
Передать закодированную цифровую подпись в заголовке
QIWI-Payment-Signature
при отправке запроса к Payments API.