Авторизация
Описание
Для всех запросов по API требуется передача контрольной подписи в параметре API-Sign в заголовках запроса.
Подпись X-Sign представляет собой хеш (SHA256) в формате: crypto_key+request_body.
Где:
- crypto_key - секретный ключ, формируемый индивидуально для каждого магазина;
- request_body - тело запроса в исходном виде. В случае GET запроса - представляет из себя JSON строку из параметров запроса.
Примеры генерации подписи
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 | import hashlib
import json
def create_sign(crypto_key: str, data: dict) -> str:
data_str = json.dumps(data)
# 'pointcryptokey{"api_key": "af7412f2-8439-444c-b2c6-e61d6b98e861", "amount": 10000, "client_id": "test20", "currency": 643, "description": "test", "buyer": {"client_id": "test2"}, "callback_url": "https://mock.httpstatus.io/200"}'
pre_sign_str = ''.join([crypto_key, data_str])
sign = hashlib.sha256(pre_sign_str.encode()).hexdigest()
return str(sign).lower() # 'db9f552549c8e8cd8cebeaf153a39098029184df5f68fb13cb987316279c52a5'
crypto_key = 'pointcryptokey'
request_data = {
"api_key": "af7412f2-8439-444c-b2c6-e61d6b98e861",
"amount": 10000,
"client_id": "test20",
"currency": 643,
"description":
"test",
"buyer": {"client_id": "test2"},
"callback_url": "https://mock.httpstatus.io/200"
}
sign = create_sign(crypto_key, request_data) # 'db9f552549c8e8cd8cebeaf153a39098029184df5f68fb13cb987316279c52a5'
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | var CryptoJS = require("crypto-js");
var key = "almpJYGZq3a8Biof";
var request_body = pm.request.body.raw;
var sign_str = key + request_body;
console.log(sign_str)
var hashDigest = CryptoJS.SHA256(sign_str).toString(CryptoJS.enc.Hex);
var header = "API-Sign: " + hashDigest
console.log(header);
pm.request.addHeader(header);
|