__NEW__API Documentation

Autoryzacja

Simplybook API methods require an authentication. To authorize in Simplybook API you need to get an access key — access-token. In order to get this access-token you should call the JSON-RPC method getToken on http://user-api.simplybook.me/login service passing your personal API-key. You can copy your API-key at admin interface: go to the 'Plugins' link and select API plugin 'Settings'. Wtedy musisz zainicjować zdalny dostęp do API SimplyВook.me. Twoje żądanie powinno zawierać poniższy tytuł: 'X-Company-Login', 'X-Token'.

Uzyskanie klucza dostępu może być zaimplementowane ze strony klienta z Twojego serwera, co jest bezpieczniejszą opcją.

Możesz użyć javascript JSON-RPC-client library i php JSON-RPC-client library spośród naszych przykładów na własny rozwój.


Client API (Company public service) authorization

Autoryzacja kodem ze strony klienta

Uzyskanie tokenu


    var loginClient = new JSONRpcClient({
        'url': 'https://user-api.simplybook.me' + '/login',
        'onerror': function (error) {},
    });
    var token = loginClient.getToken( YOUR_COMPANY_LOGIN, YOUR_API_KEY);
    

__NEW__Initialization JSON-RPC-client


    this.client = new JSONRpcClient({
        'url': 'https://user-api.simplybook.me',
        'headers': {
            'X-Company-Login': YOUR_COMPANY_LOGIN,
            'X-Token': token
        },
        'onerror': function (error) {}
    });
    

Autoryzacja ze strony serwera

Uzyskanie tokenu


    $loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
    $token = $loginClient->getToken(YOUR_COMPANY_LOGIN, YOUR_API_KEY);
    

Inicjacja JSON-RPC-client.


    $client = new JsonRpcClient( 'https://user-api.simplybook.me' . '/', array(
        'headers' => array(
            'X-Company-Login: ' .  YOUR_COMPANY_LOGIN,
            'X-Token: ' . $token
        )
    ));
    

Użytkownik/Admin API (Firma usług administracyjnych) autoryzacja

Autoryzacja kodem ze strony klienta

Uzyskanie tokenu


    var loginClient = new JSONRpcClient({
        'url': {$api_url} + '/login',
        'onerror': function (error) {},
    });
    var token = loginClient.getUserToken( YOUR_COMPANY_LOGIN,  YOUR_USER_LOGIN,  YOUR_USER_PASSWORD);
    

Inicjacja JSON-RPC-client.


    this.client = new JSONRpcClient({
        'url': 'https://user-api.simplybook.me' + '/admin/',
        'headers': {
            'X-Company-Login': YOUR_COMPANY_LOGIN,
            'X-User-Token': token
        },
        'onerror': function (error) {}
    });
    

Autoryzacja ze strony serwera

Uzyskanie tokenu


    $loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
    $token = $loginClient->getUserToken({YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);
    

Inicjacja JSON-RPC-client.


    $client = new JsonRpcClient('https://user-api.simplybook.me' . '/admin/', array(
        'headers' => array(
            'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
            'X-User-Token: ' . $token
        )
    ));
    

Uzyskiwanie danych z serwera SimplyBook.me

Strona z rezerwacjami to zwykle strona na której klienci wybierają usługę, pracownika oraz czas spotkania. Następnie klient wprowadza dane personalne i potwierdza wizytę. Bardziej skomplikowane rozwiązania to między innymi wypełnianie dodatkowych form, tworzenie grup czy wielokrotnych rezerwacji. Przedstawmy przepływ pracy i tworzenia poprzez najprostszą stronę do rezerwacji. Jeśli następnie potrzebujesz dodać kolejne funkcje do Twojej strony, zobacz pełną listę metod SimplyВook.me API.

Pierwszą rzeczą, którą powinieneś/powinnaś wyświetlać to lista usług i pracowników. Uzyskaj te informacje poprzez metody getEventList i getUnitList. Obydwie przesyłają listy z informacjami o każdej z nich, więc masz mnóstwo możliwości na sposób przedstawienia tego na Twojej stronie. By stworzyć filtrowanie pracowników użyj junit_map właściwości listy usług, zawiera ona informacje o pracownikach, którzy mogą wykonać określoną usługę.

Przykład kodu do uzyskania listy usług


    $services = $client->getEventList();
    // returns array(array(
    //     'id' => 1, - service id
    //     'name' => 'Service 1', - service's name
    //     'description' => 'Describe your service...', - service description
    //     'duration' => 60, - service duration
    //     'hide_duration' => 0, - Hide duration to clients flag,
    //     'picture' => null, - file name of picture or null
    //     'picture_path' => '/uploads/apidemo/event__picture/small/', - full path to picture,
    //     'position' => 1 - service position
    //     'is_active' => 1, - the service is activated
    //     'is_public' => 1, - the service is allowed to book by clients
    // ), ...)
    

Przykład kodu do uzyskania listy wykonawców usług


    $services = $client->getUnitList();
    // returns array(array(
    //    'id' => 1, - performer id
    //    'name' => 'Provider 1', - performer name
    //    'phone' => '111111111', - perfomer phone number
    //    'description' => 'Describe your performer...', - performer description
    //    'email' => 'test@gmail.com', - perfomer email,
    //    'is_active' => 1, - the performer is activated
    //    'is_visible' => 1, - the perfomer is visible for clients,
    //    'picture' => null, - file name of picture or null,
    //    'picure_path' => '/uploads/apidemo/unit_group__picture/small/', - full path to picture
    //    'position' => 1, - performer position
    //    'qty' => 1, performer quantity
    // ), ...)
    

Następny krok to wybór daty i czasu usługi dla klienta. Użyliśmy wybierania dat w przykładzie używania API, możesz również użyć jakiegokolwiek innego kalendarza. By ustawić pierwszą datę w kalendarzu użyj metodygetFirstWorkingDay. Może wykorzystać identyfikator pracownika jako parametr i wrócić do poprzedniej daty kiedy wybrany pracownik ( jakikolwiek pracownik firmy) jest dostępny do rezerwacji. {""|t} By wybrać zakresy czasu w wybranych datach potrzebujesz metod getWorkCalendar i getStartTimeMatrix. Pierwsza metoda informuje o początku i końcu dnia roboczego i o dniach wolnych od pracy. Druga metoda przywraca listę zakresów czasu, które mogą być rezerwowane na określoną datę.

Przykład kodu o informacji o dniach roboczych


    $year = 2020;
    $month = 3; // March
    $performerId = 1; // Can be null
    $workDaysInfo = $client->getWorkCalendar($year, $month, $performerId);
    // returns array(
    //     '2020-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
    //     '2020-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
    //     ...
    //);
    

Przykład kodu zapoczątkowania matrycy czasu


    $dateFrom = '2020-03-03';
    $dateTo = '2020-03-04';
    $serviceId = 1;
    $performerId = 1;
    $qty = 1;
    $availableTime = $client->getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
    // returns array(
    //     '2015-03-03' => array('09:00:00', '09:30:00', '10:00:00', ....),
    //     '2015-03-04' => array('09:00:00', '09:30:00', '10:00:00', ....),
    //);
    

Kolejną użyteczną metodą jest calculateEndTime. Każda usługa może mieć swoją długość, ponadto pracownicy Twojej firmy mają różne grafiki pracy z dnia na dzień. Użycie tej metody pokazuje Twojemu klientowi ostateczną datę usługi, którą zarezerwował.

Przykład kodu do obliczania końca czasu rezerwacji


    $startDateTime = '2020-03-03 09:00:00';
    $serviceId = 1;
    $performerId = 1;
    $availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId);
    // returns '2020-03-03 10:00:00'
    

Kiedy klient akceptuje rezerwacji poprzez naciśnięcie przycisku musisz użyć metody zarezerwuj. To główna funkcja, która wykonuje wszystkie potrzebne zatwierdzenia i rejestruje nowe rezerwacje w systemie rezerwacji SimplyBook.me. Do tego potrzebne są informacje o rezerwacji, takie jak dane klienta, jego nazwisko, numer telefonu i dodatkowe parametry. Zobacz wszystkie opisy parametrów tej metody na API functions list. Metoda rezerwacji z odpowiedzią zawiera unikalny kod i inne detale nowej rezerwacji listy błędów, jeśli takie się pojawiły, więc możesz użyć tych informacji w celu pokazania wyników rezerwacji klientom w dogodny i prosty sposób.


Używanie tajnego klucza API

W niektórych przypadkach metoda rezerwacji może wymagać potwierdzenia, e.g. jeśli akceptujesz płatności od klientów, potwierdzasz rezerwacje dopiero po zaksięgowaniu wpłaty. Metoda API SimplyBook.me confirmBookngużywa identyfikacji rezerwacji i bezpiecznego podpisu jako parametrów (inne metody wymagające bezpiecznego podpisu tocancelBookng). Dla stworzenia bezpiecznego podpisu Twój tajny klucz API musi zostać użyty. Spójrz jak to zrobić na podstawie przykładu poniżej. Możesz znaleźć tajny klucz w interfejsie administratora pod zakładką „Ustawienia” w liście wtyczek

Przykład kodu rezerwacji usług i zatwierdzania przy użyciu tajnego klucza API


    $additionalFields = array(
	'6740d3bce747107ddb9a789cbb78abf3' => 'value1',
	'b0657bafaec7a2c9800b923f959f8163' => 'value2'
    );

    $clientData = array(
        'name' => 'Client name',
        'email' => 'client@email.com',
        'phone' => '+13152108338'
    );

    $bookingsInfo = $client->book($eventId, $unitId, $date, $time, $clientData, $additionalFields);

    if ($bookingsInfo->require_confirm) {
       foreach ($bookingsInfo->bookings as $booking) {
           $sign = md5($booking->id . $booking->hash . YOUR_API_SECRET_KEY);
           $result = $client->confirmBooking($booking->id, $sign);
           echo '<br>Confirm result</b><br />';
           var_dump($result);
        }
    }
    

Przykład kodu uzyskiwania dodatkowych funkcji


    $fields = $client->getAdditionalFields($eventId);
    // returns - array(array(
    //		'name' => 'b0657bafaec7a2c9800b923f959f8163', - field name
    //		'title' => 'Test digits', - field title
    //		'type' => 'digits', - field type
    //		'values' => null, - available values for select field type
    //		'default' => null, - default value for field
    //		'is_null' => null, - is filed nullable
    //		'on_main_page' => 1,
    //		'pos' => 1, - field position
    //		'value' => null
    // )), ...)
    

Wtyczki SimplyBook.me

Jeśli specyfikacja Twojej firmy wymaga dodatkowej funkcjonalności możesz aktywować niektóre z naszych dodatkowych wtyczek. Kompletna lista wtyczek ze szczegółowym opisem jest dostępna w interfejsie administratora pod polem „wtyczki”. Po tym jak odpowiednia wtyczka jest aktywna, metody API będą aktywowane, żebyś mógł użyć je w kodzie.

Przepływ kodu funkcjonalności rezerwacji

Autoryzuj na SimplyВook.me API używając funkcji loginClient.getToken(companyLogin, apiKey); .


Check if Service categories plugin is activated by isPluginActivated('event_category') if yes then display list of categories getCategoriesList().


Get list of services (events) and performers (units) using getEventList() and getUnitList() functions. If 'unit_map' array is available for service it means this service can be provided by given performers only.


If Any Employee selector plugin is activated isPluginActivated('any_unit') and no special duration is set for service-performer pair in 'unit_map' array then user should be allowed to select Any provider option or choose provider manually. But manual selection of performers should not be possible if getCompanyParam('any_unit__hide_other_units') is enabled.


Use getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value ) to get available timeslots for given date. $unitId should be null if Any employee option is selected.


If Any Employee selector is active and Any employee was selected call getAvailableUnits($eventId, $dateTime, $count) to get available $unitId


If Additional fields plugin is activated isPluginActivated('event_field') call getAdditionalFields($eventId) function to get list of fields for client to fill.


Call book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) to make a booking.


Dlaczego tysiące klientów wybiera system API od SimplyBook.me?

Prosty i przejrzysty interfejs. Budowanie Twojego własnego systemu rezerwacji bez żadnych kłopotów.

Możesz w łatwy sposób zaimplementować wszystkie funkcjonalności, których potrzebujesz

Umawianie w czasie rzeczywistym - Twoi klienci mogą rezerwować wizyty gdzie chcą, kiedy chcą, 24 godziny na dobę

__NEW__Our app gives you plenty of another useful features. Click here to learn more about our features.

API

Pozwól swoim klientom na rezerwacje usług bez wychodzenia z Twojej aplikacji!

Spraw, by Twoja aplikacja była bardziej rozpoznawalna, zachęcająca zyskowna poprzez umożliwianie klientom odkrywania lokalnych biznesów. Nasz API pozwala Ci na proste zaimplementowanie przycisku „Zarezerwuj mnie” bezpośrednio na Twojej stronie, dzięki czemu umożliwiając rezerwacje dla Twoich klientów w czasie rzeczywistym, w nocy w ciągu dnia.

Nasz API daje Ci dostęp do wszystkich informacji o rezerwacji, których potrzebujesz by stworzyć możliwości rezerwacji dla Twoich klientów

Poprzez połączenie klienta z Twoim systemem organizacji biznesowej, tworzymy kompletnie nowy poziom handlu. Wierzymy, że bezpośredni system umawiania wizyt w Twojej aplikacji na stronie internetowej pozwala nam nie tylko na zdobywanie potencjalnych, ale też rzeczywistych klientów.