Информация по использованию API

Введение

REST API предоставляет удобный интерфейс для взаимодействия вашего приложения с L-Shop. Вы можете работать с L-Shop по средствам отправки http - запросов, следуя определенным правилам. Например, возможно автоматически авторизовать пользователя в магазине, если он уже вошёл в свой аккаунт на вашем ресурсе.

Основы

Для взаимодействия с API вам необходимо отправить HTTP - запрос по определенному адресу. Каждый адрес соответствует какой-либо функции, которая выполняется после успешной проверки подлинности данных. В запросе необходимо передать какие-либо параметры, а также электронную подпись.

Пример запроса на авторизацию пользователя: http://example.com/api/auth/login?username=admin&remember=1&without_checkpoints=1&signature=61ebde4b2e5364770f2b7a507ca3217e7203e41a55641e1b9ca1732f40d5d094.

Конфигурация API

Необходимые параметры для настройки находятся на странице Администрирование > Управление > API.

Формирование цифровой подписи

Дабы исключить вероятность подделки запроса, его нужно подписывать. Для этого используется такое понятие, как цифровая подпись или сигнатура (signature). Она представляет из себя строку, полученную путем выполнения некоторых преобразований параметров запроса и секретного ключа.

Сигнатура формируется следующем образом. Параметры запроса сортируются в алфавитном порядке по имени, а затем в полученный список последним элементом добавляется секретный ключ. Далее, элементы списка конкатенируются в строку с использованием разделителя, который указывается в настройках. К полученной строке применяется алгоритм хэширования, который также настраивается.

Так, например, если запрос сдержит 3 параметра с именами "param1", "param2" и "param3"; и значениями "value1", "value2", "value3" соответственно; используется разделитель ":"; ключ - "abc"; алгоритм хэширования - md5, то необходимо будет захешировать строку value1:value2:value3:abc. В результате, получим сигнатуру 3828c3937325d3885b7e0d4457e2bf21

После проделанных действий, подпись нужно добавить к запросу в качестве значения параметра signature. Например:

?param1=value1&param2=value2&param3=value&signature=3828c3937325d3885b7e0d4457e2bf21

Ниже приведен пример реализации формирования подписи на языке PHP:

$key = 'kV6cbW0lMksvgNkiJlcAsaoi8K4jLemf'; // Секретный ключ. Должен соответствовать секретному ключу в магазине.
$delimiter = ':'; // Разделитель параметров
$algo = 'sha256'; // Алгоритм расчета контрольной суммы
$url = 'http://example.com/api/auth/login?'; // Адрес API-авторизации
$username = 'admin';
$remember = 1;
$withoutCheckpoints = 0;
$parameters = [
'username' => $username,
'remember' => $remember,
'without_checkpoints' => $withoutCheckpoints
];
ksort($parameters); // Сортируем параметры в алфиватном порядке
$parameters[] = $key; // Добавлем к параметрам ключ
$parameters = implode($delimiter, $parameters); // Конкатенируем массив в строку с разделителем
$signature = hash($algo, $parameters); // Хэшируем
$query = http_build_query([
'username' => $username,
'remember' => $remember,
'without_checkpoints' => $withoutCheckpoints,
'signature' => $signature
]);
$link = $url . $query; // Ссылка по переходу по которой, пользователь будет авторизован