Skip to Content
Подпись

Создание подписи

Подпись создается с помощью HMAC SHA256. Для создания подписи необходимо использовать следующие поля в заданном порядке:

  • amount
  • currency_code
  • external_client_id
  • external_data
  • external_order_id

Сначала нужно сформировать строку из этих полей в следующем формате:

{amount};{currency_code};{external_client_id};{external_data};{external_order_id}; 100.50;KZT;123456;{"key": "value"};123456;

Если какое-то из полей не передано, то оно должно быть заменено на пустую строку. Например, если external_client_id и external_data не переданы, то строка будет выглядеть так:

{amount};{currency_code};;;{external_order_id}; 100.50;KZT;;;123456;

Затем нужно взять секретный ключ (Api key) и сформировать подпись с помощью HMAC SHA256. Для получения секретного ключа зайдите в личный кабинет, в настройках кассы выберите Api keys, затем создайте новый ключ.

Важно! Секретный ключ API key показывается только один раз при создании.

Пример генерации подписи на PHP:

function hmacSignature(array $fields, array $fieldsOrder, string $apiKey): string { $signatureDataStr = ""; foreach ($fieldsOrder as $key) { $signatureDataStr .= ($fields[$key] ?? "") . ";"; } return hash_hmac('sha256', $signatureDataStr, $apiKey); } $signature = hmacSignature([ "amount" => 100.50, "currency_code" => "KZT", "external_client_id" => 123456, "external_data" => json_encode(["key" => "value"]), "external_order_id" => 123456, ], ["amount", "currency_code", "external_client_id", "external_data", "external_order_id"], "key_secret");

Пример генерации подписи на Python:

import hmac import hashlib import json def hmac_signature(fields, fields_order, api_key): signature_data_str = "" for key in fields_order: value = fields.get(key, "") signature_data_str += str(value) + ";" return hmac.new(api_key.encode('utf-8'), signature_data_str.encode('utf-8'), hashlib.sha256).hexdigest() fields = { "amount": 100.50, "currency_code": "KZT", "external_client_id": "123456", "external_data": json.dumps({"key": "value"}, separators=(',', ':')), # Убедитесь, что JSON без пробелов "external_order_id": 123456, } fields_order = ["amount", "currency_code", "external_client_id", "external_data", "external_order_id"] api_key = "key_secret" signature = hmac_signature(fields, fields_order, api_key)

Пример на node.js:

const crypto = require('crypto'); function hmacSignature(fields, fieldsOrder, apiKey) { let signatureDataStr = ""; fieldsOrder.forEach(key => { signatureDataStr += (fields[key] || "") + ";"; }); return crypto.createHmac('sha256', apiKey).update(signatureDataStr).digest('hex'); } const signature = hmacSignature({ amount: 100.50, currency_code: "KZT", external_client_id: 123456, external_data: JSON.stringify({ key: "value" }), external_order_id: 123456, }, ["amount", "currency_code", "external_client_id", "external_data", "external_order_id"], "key_secret");