Интеграция аппаратов PocketKey с ClubIS — HTTP-запросы GET на базовый URL площадки http://<хост>:<порт>/pocketkey, ответы в формате JSON (UTF-8). Запросы обрабатывает служба web-service (должна быть запущена, в конфигурации включён HTTP listener).
Документация API (турникеты, солярий, шейкеры) — в Swagger UI: PocketKey API — Swagger
В интерфейсе методы сгруппированы по разделам: Турникеты, Солярий, Шейкеры. Для примеров запросов в Swagger можно выбрать тестовый сервер https://test.club-is.ru/pocketkey или указать адрес своей площадки.
Исходник спецификации OpenAPI (для разработчиков): pocketkey.yaml.
Описание методов солярия — в Swagger, раздел Солярий: api.club-is.ru/pocketkey
Типовой сценарий на аппарате: getprice (цена минуты) → search (клиент по браслету) → цикл buy (списание по минутам) → при досрочной остановке cancelbuy.
Каталог напитков, поиск клиента и списание после выдачи — в Swagger, раздел Шейкеры: api.club-is.ru/pocketkey
Идентификатор аппарата в запросах — параметр dev_id (серийный номер PocketKey). В справочнике вендинга ClubIS название аппарата должно совпадать с dev_id. Параметр category_id из старых примеров не используется.
Сервис автоматического создания фотографий в базе биометрии v1.0. Настройка интеграции в ClubIS и работа из интерфейса — в статье Биометрия Pocketkey.
Базовый адрес службы PocketKey: http://ip:port/ (IP и порт задаются в параметрах ClubIS).
POST http://ip:port/create_person.php
Заголовок Content-Type: application/json, тело запроса:
{
"profile": {
"first_name": "Иван",
"last_name": "Петров",
"cid": "4567889",
"photo_data": "base64 исходной фотографии для загрузки"
}
}
cid — id клиента (анкеты) в ClubIS;photo_data — base64 исходной фотографии (без префикса data:image/png;base64,).{
"message": "person created"
}
Отрицательный ответ (HTTP 501):
{
"message": "причина ошибки"
}
Пример на Python:
import requests
url = "http://localhost/create_person.php"
payload = {
"profile": {
"first_name": "Иван",
"last_name": "Петров",
"cid": "4567889",
"photo_data": "base64 исходной фотографии для загрузки"
}
}
headers = {
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
GET http://ip:port/get_person.php?cid=456722
Пример ответа:
{
"cid": "456722",
"imgData": "/9j/4AAQSkZJRg..."
}
В параметре imgData — base64 фотографии. Если персоны нет в базе, imgData будет пустым.
GET http://ip:port/delete_person.php?cid=456722
Положительный ответ (HTTP 200):
{
"message": "person deleted"
}
Отрицательный ответ (HTTP 404):
{
"message": "person not found"
}
Желательно добавлять фото в ClubIS после положительного ответа биометрии — то фото, которое сохранилось при создании персоны: успешно создали персону → получили фото → добавили в ClubIS.
Для изменения фото у персоны удалите старый профиль и создайте новый с новым фото.