Mobile API — API, используемое приложением Mobifitness, FitnessKit для клиентов, МойФитнес, а также подходящее для использования на сайтах.
Для работы требуется настройка службы web-service.
Получение анкеты по ID:
curl -H "Content-Type: application/json" -X POST -d '{"Request_id":"e79a79be-f18a-4b65-812b-6da2a49ea477", "ClubId": "1", "Method": "getClientById", "Parameters": {"ClientID": "17"}}' 'https://test.club-is.ru/api/mobile?USER_ID=30&USER_HASH=f77d565e02169dad60bca51ea19bd53cf1a041d6'
Получение списка посещений:
curl -H "Content-Type: application/json" -X POST -d '{"Request_id":"e79a79be-f18a-4b65-812b-6da2a49ea478", "ClubId": "1", "Method": "getVisitHistory", "Parameters": {"ClientID": "17"}}' 'https://test.club-is.ru/api/mobile?USER_ID=30&USER_HASH=f77d565e02169dad60bca51ea19bd53cf1a041d6'
Список тренеров для предзаписи:
curl -H "Content-Type: application/json" -X POST -d '{"Request_id":"79a79be-f18a-4b65-812b-6da2a49ea479", "ClubId": "1", "Method": "getAvailableTrainers", "Parameters": {"ServiceID": null, "StartDate": "2020-02-18 00:00", "EndDate": "2020-03-02 23:59"}}' 'https://test.club-is.ru/api/mobile?USER_ID=30&USER_HASH=f77d565e02169dad60bca51ea19bd53cf1a041d6'
Доступные для предзаписи услуги:
curl -H "Content-Type: application/json" -X POST -d '{"Request_id":"532279a79be-f18a-4b65-812b-6da2a49ea479", "ClubId": "1", "Method": "getAvailableServices", "Parameters": {"ClientID": 16}}' 'https://test.club-is.ru/api/mobile?USER_ID=30&USER_HASH=f77d565e02169dad60bca51ea19bd53cf1a041d6'
Расписание:
curl -H "Content-Type: application/json" -X POST -d '{"Request_id":"a29a79be-f18a-4b65-812b-6da2a49ea477", "ClubId": "1", "Method": "getSchedule", "Parameters": {"StartDate": "2025-01-01", "EndDate": "2025-01-31"}}' 'https://test.club-is.ru/api/mobile?USER_ID=30&USER_HASH=f77d565e02169dad60bca51ea19bd53cf1a041d6'
Загрузка клуба:
curl -H "Content-Type: application/json" -X POST -d '{"Request_id":"a29a79be-f18a-4665-812b-6da2a49ea477", "ClubId": "1", "Method": "getLoadClub", "Parameters": {"ClubId": 1}}' 'https://test.club-is.ru/api/mobile?USER_ID=30&USER_HASH=f77d565e02169dad60bca51ea19bd53cf1a041d6'
Покупка:
curl -H "Content-Type: application/json" -X POST -d '{"Request_id":"a29b79fe-d18a-4665-812b-6da2a49ea478", "ClubId": "1", "Method": "BuyAndPay", "Parameters": {"ClientID": "437850", "IDTransaction": "bank_transaction_ids", "BuyList": [{"Id": "k36", "Type": "Buy"}]}}' 'https://test.club-is.ru/api/mobile?USER_ID=30&USER_HASH=f77d565e02169dad60bca51ea19bd53cf1a041d6'
Предварительная запись:
curl -H "Content-Type: application/json" -X POST -d '{"Request_id":"b29b79ce-e18a-4665-812b-6da2a49ea348", "ClubId": "1", "Method": "setAppointment", "Parameters": {"ClientID": "17", "DateTime": "2025-02-27T18:00:00", "RoomID": "8", "Duration": 60, "ServiceID": "68", "EmployeeID": "0", "Reserve": true}}' 'https://test.club-is.ru/api/mobile?USER_ID=30&USER_HASH=f77d565e02169dad60bca51ea19bd53cf1a041d6'
$apiproto = 'https'; // Протокол
$apiaddr = 'test.club-is.ru'; // IP или адрес домена с API
$apiport = ''; // Порт
// Параметры авторизации
$user_id = 30;
$user_hash = 'f77d565e02169dad60bca51ea19bd53cf1a041d6';
$link = $apiproto . '://' . $apiaddr . '/api/mobile?USER_ID=' . $user_id . '&USER_HASH=' . $user_hash;
// Параметры запроса
$request_id = uniqid(); // генерируем уникальный UUID для запроса
$data = array(
'Request_id' => $request_id,
'ClubId' => 1,
'Method' => 'getClientById',
'Parameters' => array(
'ClientID' => 17
)
);
$curl = curl_init(); // Используем cURL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$out = curl_exec($curl); // Создаем запрос к API
echo 'link:<br>';
echo $link;
echo '<hr>data:<br>';
echo json_encode($data);
echo '<hr>response:<br>';
echo $out; // Выводим результат
Mobifitness или разработчикам сайта нужно предоставить:
http://ip:порт/api/mobile или https://ip:порт/api/mobile в зависимости от выбранного протокола http или https. IP должен быть внешним, белым; на роутере нужно пробросить порт до сервера со службой.USER_ID и USER_HASH находятся на вкладке «Прочее» в модуле «Администратор → Сотрудники → Свойства сотрудника». От этого пользователя в базе будут создаваться данные. Лучше создать отдельного пользователя для этого и правой кнопкой задать ему пароль (на его основе будет сгенерирован USER_HASH и соответственно будет меняться при его смене).

В приложении клиент выбирает тариф по уровням папок. Как устроены уровни, задаётся в Администратор → Интеграции → Mobile API.
Там же:
Если группировка включена (режим Упрощенный):
Если группировка выключена или используется полное дерево шаблонов:
Если у интервала шаблона название не задано, промежуточная пустая папка не создаётся: после названия шаблона сразу идёт тариф. Чтобы показать отдельный уровень (например, «1 месяц», «3 месяца»), заполните название интервала в шаблоне.
В продажу попадают только цены шаблонов с опцией Продавать в мобильном приложении.
3. Прямая оплата контрактов. Если в приложении можно не только продлевать контракты, но и покупать новым клиентам (у которых нет депозита), то нужно включить прямую оплату в любое из положений, кроме «никогда». Прямая оплата будет происходить не с депозита, без его пополнения. Со стороны Mobifitness нужно переключить режим работы — обратитесь также в Mobifitness.

4. Автоматически сдвигать дату открытия. По умолчанию ставится текущая дата. Если опция включена — дата продления сдвигается за датой окончания текущего контракта.
5. Отдавать только активные контракты и блоки. Показывается только открытый контракт и непросроченные, неиспользованные блоки только из открытого контракта.
6. Продажи по прайсу. Для продажи будут доступны только позиции с опцией «Онлайн продажа».

7. Список тренеров. Отображаются только сотрудники с опцией «Проводит групповые программы».

Если требуется, чтобы у тренеров отображались фото, то профиль пользователя должен быть связан с анкетой в базе, и в анкете должно быть фото. Фотографии обязательно должны храниться в базе данных.
На рабочей станции, на которой настроен web-service, нужно подключить и настроить ККМ для нужного юрлица. Этого достаточно, чтобы оплаты начали пробиваться по ККМ.
Также существуют дополнительные ключи, например если оплаты пробиваются по кассе облачной на стороне Mobifitness и их не нужно проводить по ККМ повторно. Ключи создаются на компьютере, где работает служба, в разделе реестра Компьютер\HKEY_CURRENT_USER\Software\ClubIS LLC\ClubIS Fitness\web-service.
Строковый параметр deposit_fiscalize (true или false) — для включения/отключения пробития чека по депозиту на стороне программы.
Параметр DWORD deposit_legal_id — юрлицо в созданное внесение депозита, необязательно. Если не указано — ставится юрлицо из договора.
Параметр DWORD deposit_paytype_id — тип оплаты, необязательно. Если не указано — «Карта».
Параметры типа оплаты и юрлица также выведены в интерфейсе «Администратор → Интеграции → Mobile API → Тип оплаты» и «Юр.лицо».
По умолчанию чеки и контракт оплачиваются с депозита типом оплаты «депозит»; для всего остального используется указанный тип оплаты (прямая оплата, внесение депозита).

