User API guide/uk: Difference between revisions
Created page with "= '''АВТОРИЗАЦІЯ''' = <br><br> Для використання методів Simplybook API необхідна автентифікація. Для авторизації в Simplybook API вам потрібно отримати ключ доступу — access-token. Щоб отримати цей access-token, ви повинні викликати метод JSON-RPC getToken на сервісі https://user-api.simplybook.me/login, передавши..." |
No edit summary |
||
| (11 intermediate revisions by the same user not shown) | |||
| Line 24: | Line 24: | ||
= '''CLIENT API ([https://simplybook.me/api/doc#/admin | = '''CLIENT API ([https://simplybook.me/api/doc#/admin ADMIN]) АВТОРИЗАЦІЯ''' = | ||
<br><br> | <br><br> | ||
== '''Авторизація з боку клієнта''' == | == '''Авторизація з боку клієнта''' == | ||
| Line 114: | Line 114: | ||
<br><br> | <br><br> | ||
'''Приклад коду для отримання списку послуг''' | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>$services = $client- | <nowiki>$services = $client->getEventList(); | ||
// | // повертає масив(array( | ||
// 'id' = | // 'id' => 1, - ідентифікатор послуги | ||
// 'name' = | // 'name' => 'Service 1', - назва послуги | ||
// 'description' = | // 'description' => 'Опишіть свою послугу...', - опис послуги | ||
// 'duration' = | // 'duration' => 60, - тривалість послуги | ||
// 'hide_duration' = | // 'hide_duration' => 0, - прапорець приховування тривалості від клієнтів, | ||
// 'picture' = | // 'picture' => null, - ім'я файлу зображення або null | ||
// 'picture_path' = | // 'picture_path' => '/uploads/apidemo/event__picture/small/', - повний шлях до зображення, | ||
// 'position' = | // 'position' => 1 - позиція послуги | ||
// 'is_active' = | // 'is_active' => 1, - послуга активована | ||
// 'is_public' = | // 'is_public' => 1, - послуга доступна для бронювання клієнтами | ||
// ), ...)</nowiki> | // ), ...)</nowiki> | ||
<br><br> | <br><br> | ||
'''Приклад коду для отримання списку виконавців послуг''' | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>$services = $client- | <nowiki>$services = $client->getUnitList(); | ||
// | // повертає масив (array( | ||
// 'id' = | // 'id' => 1, - ідентифікатор виконавця | ||
// 'name' = | // 'name' => 'Provider 1', - ім'я виконавця | ||
// 'phone' = | // 'phone' => '111111111', - номер телефону виконавця | ||
// 'description' = | // 'description' => 'Опишіть свого виконавця...', - опис виконавця | ||
// 'email' = | // 'email' => 'test@gmail.com', - електронна адреса виконавця, | ||
// 'is_active' = | // 'is_active' => 1, - виконавець активований | ||
// 'is_visible' = | // 'is_visible' => 1, - виконавець видимий для клієнтів, | ||
// 'picture' = | // 'picture' => null, - ім'я файлу зображення або null, | ||
// 'picure_path' = | // 'picure_path' => '/uploads/apidemo/unit_group__picture/small/', - повний шлях до зображення | ||
// 'position' = | // 'position' => 1, - позиція виконавця | ||
// 'qty' = | // 'qty' => 1, кількість виконавців | ||
// ), ...)</nowiki> | // ), ...)</nowiki> | ||
<br><br> | <br><br> | ||
Наступним кроком для клієнта є вибір дати та часу надання послуги. У прикладі використання API ми використовували календар Bootstrap, але ви можете використовувати цей або будь-який інший календар. Щоб встановити першу дату календаря, скористайтеся методом getFirstWorkingDay. Він може приймати ідентифікатор співробітника як параметр і повертає наступну дату, коли вибраний співробітник (або будь-який співробітник компанії за замовчуванням) доступний для бронювання. Щоб показати часові слоти в межах вибраної дати, вам потрібні методи getWorkCalendar і getStartTimeMatrix. Перший метод надає інформацію про початок і кінець робочого дня, а також про вихідні дні. Другий метод повертає список часових слотів, які можна забронювати на певну дату. | |||
<br><br> | <br><br> | ||
''' | '''Приклад коду для отримання інформації про робочі дні''' | ||
<br><br> | <br><br> | ||
<nowiki>$year = 2015; | |||
<nowiki>$year = 2015; | $month = 3; // березень | ||
$month = 3; // | $performerId = 1; // може бути нульовим | ||
$performerId = 1; // | $workDaysInfo = $client->getWorkCalendar($year, $month, $performerId); | ||
$workDaysInfo = $client- | // повертає масив ( | ||
// | // '2015-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0), | ||
// '2015-03-01' = | // '2015-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0), | ||
// '2015-03-02' = | |||
// ... | // ... | ||
//);</nowiki> | //);</nowiki> | ||
<br><br> | <br><br> | ||
''' | '''Приклад коду для отримання матриці часу початку''' | ||
<br><br> | <br><br> | ||
<nowiki>$dateFrom = '2015-03-03'; | <nowiki>$dateFrom = '2015-03-03'; | ||
| Line 178: | Line 171: | ||
$performerId = 1; | $performerId = 1; | ||
$qty = 1; | $qty = 1; | ||
$availableTime = $client- | $availableTime = $client->getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty); | ||
// | // повертає масив ( | ||
// '2015-03-03' = | // '2015-03-03' => array('09:00:00', '09:30:00', '10:00:00', ....), | ||
// '2015-03-04' = | // '2015-03-04' => масив('09:00:00', '09:30:00', '10:00:00', ....), | ||
//);</nowiki> | //);</nowiki> | ||
<br><br> | <br><br> | ||
Інший корисний метод, який може вам знадобитися, — calculateEndTime. Кожна послуга може мати свою тривалість, а також співробітники вашої компанії можуть мати різний графік роботи в різні дні. Тож за допомогою цього методу ви можете правильно показати клієнту дату та час закінчення послуги, яку він забронював. | |||
<br><br> | <br><br> | ||
''' | '''Приклад коду для розрахунку часу закінчення бронювання''' | ||
<br><br> | <br><br> | ||
<nowiki>$startDateTime = '2015-03-03 09:00:00'; | <nowiki>$startDateTime = '2015-03-03 09:00:00'; | ||
$serviceId = 1; | $serviceId = 1; | ||
$performerId = 1; | $performerId = 1; | ||
$availableTime = $client- | $availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId); | ||
// | // повертає '2015-03-03 10:00:00' | ||
</nowiki> | </nowiki> | ||
<br><br> | <br><br> | ||
Коли клієнт натискає кнопку «Підтвердити бронювання», ви повинні викликати метод book. Це основна функція, яка виконує всі необхідні перевірки та реєструє нове бронювання в системі Simplybook. Вона бере інформацію про бронювання, дані клієнта, такі як ім'я та телефон, а також деякі додаткові параметри. Дивіться опис всіх параметрів цього методу в [https://simplybook.me/api/doc списку функцій API]. Відповідь методу book містить унікальний код та інші деталі нового бронювання або список помилок, якщо виникли проблеми, тому ви можете використовувати цю інформацію, щоб показати результат бронювання клієнту в зручний та інтуїтивно зрозумілий спосіб. | |||
<br><br><br> | <br><br><br> | ||
= '''ВИКОРИСТАННЯ СЕКРЕТНОГО КЛЮЧА API''' = | |||
=''' | |||
<br><br> | <br><br> | ||
У деяких випадках метод бронювання може вимагати підтвердження, наприклад, якщо ви приймаєте платежі від клієнтів, ви підтверджуєте бронювання тільки після того, як платіж вже надійшов. Метод Simplybook API confirmBookng приймає ідентифікатор бронювання та безпечний підпис як параметри (інший метод, який вимагає безпечного підпису, - cancelBookng). Для генерації безпечного підпису слід використовувати ваш секретний ключ API. Дивіться, як це можна зробити, у прикладі нижче. Секретний ключ можна знайти в адміністративному інтерфейсі за посиланням «Налаштування» в розділі «Налаштування API» у списку «Налаштування». | |||
<br><br> | <br><br> | ||
'''Приклад коду бронювання послуги та її підтвердження за допомогою секретного API-ключа''' | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>$additionalFields = array( | <nowiki>$additionalFields = array( | ||
'6740d3bce747107ddb9a789cbb78abf3' = | '6740d3bce747107ddb9a789cbb78abf3' => 'value1', | ||
'b0657bafaec7a2c9800b923f959f8163' = | 'b0657bafaec7a2c9800b923f959f8163' => 'value2' | ||
); | ); | ||
$clientData = array( | $clientData = array( | ||
'name' = | 'name' => 'Ім'я клієнта', | ||
'email' = | 'email' => 'client@email.com', | ||
'phone' = | 'phone' => '+13152108338' | ||
); | ); | ||
$bookingsInfo = $client- | $bookingsInfo = $client->book($eventId, $unitId, $date, $time, $clientData, $additionalFields); | ||
if ($bookingsInfo->require_confirm) { | |||
if ($bookingsInfo- | foreach ($bookingsInfo->bookings as $booking) { | ||
$sign = md5($booking->id . $booking->hash . YOUR_API_SECRET_KEY); | |||
$result = $client->confirmBooking($booking->id, $sign); | |||
echo ' | |||
Confirm result | Confirm result | ||
'; | '; | ||
var_dump($result); | |||
} | |||
}</nowiki> | }</nowiki> | ||
<br><br> | <br><br> | ||
'''Приклад коду для отримання форм для введення даних''' | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>$fields = $client- | <nowiki>$fields = $client->getAdditionalFields($eventId); | ||
// | // повертає - масив(масив( | ||
// 'name' = | // 'name' => 'b0657bafaec7a2c9800b923f959f8163', - назва поля | ||
// 'title' = | // 'title' => 'Test digits', - назва поля | ||
// 'type' = | // 'type' => 'digits', - тип поля | ||
// 'values' = | // 'values' => null, - доступні значення для поля типу select | ||
// 'default' = | // 'default' => null, - значення за замовчуванням для поля | ||
// 'is_null' = | // 'is_null' => null, - чи поле може бути нульовим | ||
// 'on_main_page' = | // 'on_main_page' => 1, | ||
// 'pos' = | // 'pos' => 1, - позиція поля | ||
// 'value' = | // 'value' => null | ||
// )), ...)</nowiki> | // )), ...)</nowiki> | ||
<br><br><br> | <br><br><br> | ||
= '''ПЕРСОНАЛЬНІ ФУНКЦІЇ SIMPLYBOOK''' = | |||
='''SIMPLYBOOK | |||
<br><br> | <br><br> | ||
Якщо ваша компанія потребує додаткових функцій, ви можете активувати деякі з наших додаткових функцій. Повний перелік функцій з докладним описом доступний в адміністративному інтерфейсі за посиланням «Custom Feature» (Додаткові функції). Після увімкнення необхідної функції будуть активовані відповідні методи API, які ви зможете використовувати у своєму коді. | |||
<br><br><br> | <br><br><br> | ||
=''' | = '''ФУНКЦІОНАЛЬНІСТЬ БРОНЮВАННЯ КОДОВИЙ ПОТІК''' = | ||
<br><br> | <br><br> | ||
Авторизуйтесь в Simplybook API за допомогою функції '''loginClient.getToken(companyLogin, apiKey);'''. | |||
Перевірте, чи активована функція «Категорії послуг» за допомогою [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")]. Якщо так, то відобразіть список категорій [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()]. | |||
Отримати список послуг (подій) та виконавців (одиниць) за допомогою функцій [https://simplybook.me/en/api/doc#getEventList getEventList()] та [https://simplybook.me/en/api/doc#getUnitList getUnitList()]. Якщо для послуги доступний масив "unit_map", це означає, що ця послуга може бути надана тільки зазначеними виконавцями. | |||
Якщо активовано будь-яку спеціальну функцію вибору співробітника [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("any_unit")] і в масиві "unit_map" не встановлено спеціальний термін для пари "послуга-виконавець", то користувачеві слід дозволити вибрати будь-який варіант постачальника або вибрати постачальника вручну. Але ручний вибір виконавців не повинен бути можливим, якщо активовано [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")]. | |||
Використовуйте [https://simplybook.me/en/api/doc#getStartTimeMatrix getStartTimeMatrix ($from як поточну дату, $to як поточну дату, $eventId, $unitId, $count як значення вибраних учасників)], щоб отримати доступні часові слоти для заданої дати. '''$unitId''' повинен бути нульовим, якщо вибрано опцію «Будь-який співробітник». | |||
Якщо активний селектор «Будь-який співробітник» і було вибрано будь-якого співробітника, викличте [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)], щоб отримати доступний $unitId | |||
Якщо активована функція «Налаштування форм для нових клієнтів», викличте функцію [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)], щоб отримати список полів, які клієнт повинен заповнити. | |||
Викличте [https://simplybook.me/en/api/doc#book книгу ($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)], щоб зробити бронювання. | |||
<br><br> | <br><br> | ||