Перейти к основному содержимому

Как подписать запрос

Все запросы к Zetplat должны быть подписаны. В заголовках запросов необходимо передавать данные для идентификации: идентификатор вашего проекта и подпись запроса.

НазваниеОбязательностьТипОписание
X-Project-Id+stringИдентификатор проекта. Выдается менеджером Zetplat
X-Signature+stringПодпись запроса
X-Submerchant-Id-stringИдентификатор плательщика (юридического лица)

Пример запроса с аутентификацией

curl -X POST \
https://proxy-demo.zetplat.com/api/v1/transaction/initiate \
-H 'Content-Type: application/json' \
-H 'X-Project-Id: your_project_name' \
-H 'X-Signature: signature' \
-d '{
// тело запроса
}'

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

Подпись нужна для проверки подлинности (запрос действительно пришел от отправителя) и целостности (данные не были изменены при передаче).

Принцип двусторонней проверки:

  • Zetplat проверяет, что запросы к нам пришли именно от вас и дошли без изменений.

  • Вы точно так же проверяете уведомления, которые приходят от Zetplat.

Для формирования и проверки подписи используется пара ключей: публичный (открытый) и секретный (приватный).

Генерация ключевой пары

Вы самостоятельно генерируете ключевую пару на своей стороне. Алгоритм подписи — RSA.

Свой публичный ключ вы передаете Zetplat (чтобы мы могли проверять ваши запросы), а секретный ключ храните у себя и никому не передаете.

Формирование подписи тела запроса

Каждый запрос к Zetplat должен сопровождаться подписью.

Что именно подписывать: тело запроса целиком, в том виде, в котором оно отправляется на сервер (после сериализации в JSON).

Алгоритм: SHA-256.

Формат подписи: Base64.

Чем подписывать: вашим секретным ключом.

Проверка входящих запросов от Zetplat

Все запросы, которые Zetplat отправляет вам (например, уведомления), подписываются на нашей стороне с использованием нашего секретного ключа.

Для проверки подлинности запросов от Zetplat используйте наш публичный ключ. Проверяйте подпись каждого входящего запроса с алгоритмом SHA‑256 — подпись передаётся в формате Base64. Любой запрос, не прошедший проверку подписи, должен отвергаться как недостоверный.

Публичные ключи Zetplat

Примеры генерации и проверки подписи

# Генерация приватного ключа
$ openssl genrsa -out private.pem 2048

# Генерация публичного ключа из приватного
$ openssl rsa -in private.pem -pubout > public.pem

# Формирование содержимого файла myfile.txt
$ echo test > myfile.txt

# Генерация подписи
$ openssl dgst -sha256 -sign private.pem -out sha256.sign myfile.txt

# Готовая подпись для передачи
$ base64 sha256.sign

# Проверка подписи
$ openssl dgst -sha256 -verify public.pem -signature sha256.sign myfile.txt
Verified OK