Аутентификация
Все запросы к Epoint API используют механизм аутентификации data + signature. Это обеспечивает целостность запроса и аутентификацию мерчанта.
Как это работает
Каждый API-запрос требует два POST-параметра:
data— JSON-строка, закодированная в Base64, содержащая параметры APIsignature— хеш SHA1, закодированный в Base64, для верификации запроса
Генерация параметра data
- Создайте 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}- Закодируйте JSON-строку в Base64:
Encode & Sign
1data = base64_encode(json_string)Результат:
Encode & Sign
1eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwMSIsImFtb3VudCI6IjMwLjc1IiwiY3VycmVuY3kiOiJBWk4iLCJkZXNjcmlwdGlvbiI6InRlc3QgcGF5bWVudCIsIm9yZGVyX2lkIjoiMSJ9Генерация параметра signature
- Объедините:
private_key + data + private_key
Encode & Sign
1sgn_string = d3hjsl38sd8kdfhbcea0be04eafde9e8e2bad2fb092d + eyJwdWJsaWN... + d3hjsl38sd8kdfhbcea0be04eafde9e8e2bad2fb092d- Примените хеш 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));