Перейти к содержанию

Авторизация

Описание

Для всех запросов по 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);