Skip to Content
docs
Аутентификация

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

Все запросы к Epoint API используют механизм аутентификации data + signature. Это обеспечивает целостность запроса и аутентификацию мерчанта.

Как это работает

Каждый API-запрос требует два POST-параметра:

  • data — JSON-строка, закодированная в Base64, содержащая параметры API
  • signature — хеш SHA1, закодированный в Base64, для верификации запроса

Генерация параметра data

  1. Создайте JSON-строку с параметрами API:
Request Body
1{
2 "public_key": "i000000001",
3 "amount": "30.75",
4 "currency": "AZN",
5 "description": "test payment",
6 "order_id": "1"
7}
  1. Закодируйте JSON-строку в Base64:
Encode & Sign
1data = base64_encode(json_string)

Результат:

Encode & Sign
1eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwMSIsImFtb3VudCI6IjMwLjc1IiwiY3VycmVuY3kiOiJBWk4iLCJkZXNjcmlwdGlvbiI6InRlc3QgcGF5bWVudCIsIm9yZGVyX2lkIjoiMSJ9

Генерация параметра signature

  1. Объедините: private_key + data + private_key
Encode & Sign
1sgn_string = d3hjsl38sd8kdfhbcea0be04eafde9e8e2bad2fb092d + eyJwdWJsaWN... + d3hjsl38sd8kdfhbcea0be04eafde9e8e2bad2fb092d
  1. Примените хеш SHA1 и закодируйте в Base64:
Encode & Sign
1signature = base64_encode(sha1(sgn_string, 1))

Результат:

Encode & Sign
1a76GNudqblZtV8qF199hctA+cG0=

Отправка запроса

Вариант 1: API-запрос (сервер-сервер)

PHP
1$postfields = http_build_query([
2 'data' => $data,
3 'signature' => $signature,
4]);
5
6$ch = curl_init();
7curl_setopt($ch, CURLOPT_URL, $url);
8curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
9$server_output = curl_exec($ch);

Вариант 2: Перенаправление через форму (checkout)

HTML
1<form method="POST" action="***" accept-charset="utf-8">
2 <input type="hidden" name="data" value="BASE64_ENCODED_DATA"/>
3 <input type="hidden" name="signature" value="SIGNATURE_VALUE"/>
4 <button type="submit">Pay Now</button>
5</form>

Trace ID в ответе

Каждый ответ API содержит поле trace_id — уникальный идентификатор конкретного запроса. При обращении в службу поддержки Epoint по вопросу транзакции предоставление trace_id позволит нашей команде быстро найти и проанализировать полный цикл запроса/ответа в наших логах.

Request Body
1{
2 "status": "success",
3 "transaction": "te_0000000001",
4 "trace_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
5}

trace_id также возвращается в заголовке ответа X-Request-ID.

Пример на PHP

PHP
1$payload = [
2 'public_key' => 'your_public_key',
3 'amount' => 30.75,
4 'currency' => 'AZN',
5 'description' => 'test payment',
6 'order_id' => '1',
7];
8
9$data = base64_encode(json_encode($payload));
10$private_key = 'your_private_key';
11$signature = base64_encode(sha1($private_key . $data . $private_key, 1));