Данная документация описывает шаги для генерации подписи, используемой для обеспечения целостности данных при отправке POST и GET запросов.
Каждое приложения получает персональный секретный ключ для тестового и промышленного окружения индивидуальный. Секретные ключи используются для подписи запроса.
Каждый запрос должен быть подписан на основе отправляемых данных в теле запроса.
Алгоритм формирования подписи запроса:
1. Из данных тела запроса необходимо получить json-строку, выполнив кодирование строки в json (см пример ниже). Все строковые данные должны быть в кодировке UTF-8 без пробельных символов. Кодируются и декодируются скалярные типы и NULL по RFC 4627, который поддерживает эти значения только в случае, если они находятся внутри массива или объекта.
Пример:
Ваше тело запроса:
{
"paymentMethodName": "P2P",
"communicationType": "h2h",
"payment": {
"amount": 2004,
"currency": "RUB"
},
"merchantOrder": {
"id": "test_order",
"description": "Operation test_order"
},
}
необходимо преобразовать в строку:
‘{"paymentMethodName":"P2P","communicationType":"h2h","payment":{"amount":2004,"currency":"RUB"},"merchantOrder":{"id":"test_order","description":"Operation test_order"}}’
2. При помощи секретного ключа приложения для окружения, на котором будет выполнен запрос, сформировать подпись на основе алгоритма HMAC sha512.
Пример на php:
$data = json_encode(json_decode('{"paymentMethodName":"P2P","communicationType":"h2h","payment":{"amount":2004,"currency":"RUB"},"merchantOrder":{"id":"test_order","description":"Operation test_order"}}'));
$key = 'app_secret_key';
echo hash_hmac('SHA512', $data, $key);
3. Добавить в запрос заголовок запроса X-Authorization-Sign со значением сформированной строки подписи в п. 2.
Каждый запрос должен быть подписан на основе query-параметров запроса. Параметры, включенные в url-пути не участвуют в процедуре формирования подписи.
Алгоритм формирования подписи запроса:
1. Все параметры запроса необходимо собрать и преобразовать в json-строку в том порядке, в котором они будут передаваться в запросе. Порядок важен для получения корректной подписи, т.к. этот же алгоритм будет применяться при проверке подписи.
Пример:
Get-запрос, который необходимо подписать:
https://some-service.idynsys.org/api/billing/payment-methods?hash=RSqcR7BWsqufcbA0rK6wxktGmwqGJ7-1739803715187429&amount=20&paymentType=deposit
Все query-параметры нужно преобразовать в json-строку:
'{"hash":"RSqcR7BWsqufcbA0rK6wxktGmwqGJ7-1739803715187429","amount":"20","paymentType":"deposit"}'
2. При помощи секретного ключа приложения для окружения, на котором будет выполнен запрос, сформировать подпись на основе алгоритма HMAC sha512.
Пример на php:
$data = json_encode(json_decode('{"hash":"RSqcR7BWsqufcbA0rK6wxktGmwqGJ7-1739803715187429","amount":"20","paymentType":"deposit"}'));
$key = 'app_secret_key';
echo hash_hmac('SHA512', $data, $key);
3. Добавить в запрос заголовок запроса X-Authorization-Sign со значением сформированной строки подписи в п. 2.