6. Безопасность и авторизация

Источник: https://docs.paykeeper.ru/dokumentatsiya-json-api/token-bezopasnosti/

6.1 Получение токена безопасности /info/settings/token/

Тип: GET
Формат: /info/settings/token/

Пример ответа:

{
    "token": "fd50e47596cff6c63c7ea0a633c0d2a8"
}

Токен передаётся в каждом POST-запросе как параметр token. Обновляется раз в 24 часа.

Пример на PHP

<?php
$user="user";
$password="pass";
$base64=base64_encode("$user:$password");
$headers=Array();
array_push($headers,'Content-Type: application/x-www-form-urlencoded');
array_push($headers,'Authorization: Basic '.$base64);
$server_paykeeper="your.server.paykeeper.ru";
$uri="/info/settings/token/";
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_URL,$server_paykeeper.$uri);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt($curl,CURLOPT_HTTPHEADER,$headers);
curl_setopt($curl,CURLOPT_HEADER,false);
$out=curl_exec($curl);
$php_array=json_decode($out,true);
if (isset($php_array['token'])) $token=$php_array['token']; else die();
$email="example@paykeeper.ru";
$uri="/change/organization/addreportemail/";
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_URL,$server_paykeeper.$uri);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_HTTPHEADER,$headers);
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_POSTFIELDS,"token=$token&email=$email");
$out=curl_exec($curl);
print_r(json_decode($out));
?>

Успех:

{"result": "success"}

Ошибка:

{
    "result": "fail",
    "msg": "This email address already exists."
}

6.2 Basic HTTP-авторизация

Каждый запрос должен содержать заголовок Authorization: Basic <base64>.

Учётные данные — логин/пароль ЛК PayKeeper. Рекомендуется заводить отдельного пользователя под API.

Пример на PHP

<?php
$server_paykeeper="demo.paykeeper.ru";
$uri="/info/systems/list/";
$user="json";
$password="json";
$base64=base64_encode("$user:$password");
$curl=curl_init();
$headers=Array();
array_push($headers,'Authorization: Basic '.$base64);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_URL,$server_paykeeper.$uri);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt($curl,CURLOPT_HTTPHEADER,$headers);
curl_setopt($curl,CURLOPT_HEADER,false);
$out=curl_exec($curl);
print_r(json_decode($out));
?>

Пример ответа:

[
    {"id": "6", "system_description": "RS", "site_description": "Russian Standard"},
    {"id": "127", "system_description": "TestPayments", "site_description": "Test Payment"}
]

6.3 JWT-токен для сервисов /info/settings/service-token/

Тип: GET
Формат: /info/settings/service-token/

Параметры:

ПараметрНазначение
serviceID сервиса, для доступа к которому нужен JWT

Пример ответа:

{
    "result": "success",
    "token": "eyJ0eXAiOiJKV1QiLCJ...lUhd0oCiYYkvgZRQi1Il6_sOIU"
}