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

Формат работы с API

Адрес для отправки запросов

Как сформировать

<адрес сервера> + /api/v1 + <адрес для отправки запросов нужного метода>

Адрес сервера

Аутентификация

В заголовках запросов необходимо передавать подпись запроса.

НазваниеТипОписание
X-CLIENT-SIGNATUREstringПодпись запроса (см. ниже)

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

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

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

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

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

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

Вместе с запросом в сервис необходимо передавать подпись. Подписывать необходимо тело запроса целиком, также токен (ключ в массиве token) и параметры пути (ключи в массиве такие же, как в open-api, если они есть). Собранные данные для подписи необходимо отсортировать по ключу массива, сериализовать в JSON и дальше подписать.

Используйте для подписи ваш секретный ключ. Сформируйте подпись с алгоритмом SHA-256. Полученную подпись необходимо передавать в формате Base64.

Примеры формирования данных для подписи

Операция "Одобрить площадку"

  • В данной операции тело запроса пустое, есть параметр пути marketplace_id. Соответственно данные для подписи в отсортированном порядке будут такие:
{
"marketplace_id": "my-id",
"token": "my-bearer-token"
}

Операция "Создать площадку"

  • В данной операции есть тело запроса, но нет параметров пути. Соответственно данные для подписи в отсортированном порядке будут такие:
{
"external_id": "1111",
"mcc_code": "5511",
"name": "merchant name",
"priority": "1",
"tags": ["tag1", "tag2"],
"tin": "772539671511",
"token": "my-bearer-token",
"url": "https://example.ru/"
}

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

Все исходящие запросы сервис подписывает с помощью своего секретного ключа. Подписывается только тело запроса.

С помощью публичного ключа сервиса вам необходимо проверять подписи запросов от сервиса на своей стороне. Используется алгоритм SHA-256. Подпись передается в формате Base64.

Публичные ключи сервиса:

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

# Генерация приватного ключа
$ 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