Авторизация и подпись запросов
Авторизация запросов
Для авторизации запросов используется JWT-токен — его нужно передавать в заголовке Authorization.
Токен вы сможете получить в процессе бординга или у менеджера сопровождения.
Электронная подпись запросов
Для безопасности проведения финансовых операций через открытое API, нужно формировать и передавать цифровую подпись запросов в заголовке Signature для следующих типов запросов:
- Платёж через форму мерчанта -> Создание платежа
- Подтверждение -> Подтверждение платежа
- Возвраты -> Создание операции возврата
Формирование ключей
Требования к ключам:
- Алгоритм — RSA
- Размер ключа — 2048-bit
- Форма передаваемого ключа — PEM формат, закодированный в Base64 одной строкой (без переносов)
Пример на Bash:
- Сгенерировать закрытый ключ
openssl genrsa -out private_key.pem 2048
- Получить открытый ключ на основе закрытого
openssl rsa -in private_key.pem -pubout -out public_key.pem
- Закодировать открытый ключ в Base64
openssl base64 -A -in public_key.pem -out public_key_base64.pem
- В рамках подключения к API Точка Банка передать полученный на предыдущем шаге
public_key_base64.pem
Подпись запроса
Требования к подписи:
- Хэш-функция — sha256
- Заголовок для передачи подписи -
Signature - Форма передачи подписи — «сырая» подпись, закодированная в Base64 одной строкой (без переносов)
Пример на Bash:
- Подготовить тело запроса (в данном случае - предположим что оно в файле request.txt)
hello, world
- Подписать тело запроса с помощью приватного ключа и с hash-функцией sha256
openssl dgst -sha256 -sign private_key.pem request.txt > sign_raw.txt
- Закодировать «сырую» подпись в Base64
openssl base64 -A -in sign_raw.txt -out sign_base64.txt
- Передавать содержимое
sign_base64.txtв заголовкеSignatureзапросов