API-code documentatie

Authorisatie

Simplybook.me API-systemen vereisen authenticatie. Hiervoor heeft de gebruiker een toegangssleutel nodig — toegangs-token. U kunt uw persoonlijke API-sleutel ophalen via de JSON-RPC-methode getToken op http://user-api.simplybook.me/login service-desk. U kunt uw API-sleutel kopiëren in de admin-interface: klik op de 'Plugins'-link en selecteer de API plugin 'Instellingen'. Dan moet u op afstand toegang tot Simplybook API inschakelen. Dit verzoek dient de volgende headers te bevatten: 'X-Company-Login', 'X-Token'.

Het verkrijgen van de toegangstoken kan worden uitgevoerd, hetzij vanuit klantenzijde of vanaf uw server, wat de meest veilige oplossing is.

U kunt gebruik maken van javascript JSON-RPC-client library en php JSON-RPC-client library van onze voorbeelden om uw eigen oplossingen te ontwikkelen.


Klant API (Company public service) authorisatie

Autorisatie van code aan klantzijde

Het verkrijgen van de token-sleutel.


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

Initialisatie 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) {}
    });
    

Autorisatie van code aan serverzijde

Het verkrijgen van de token-sleutel.


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

Initialisatie JSON-RPC-client.


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

Gebruiker/Admin API (Bedrijfsadministratie) authorisatie

Autorisatie van code aan klantzijde

Het verkrijgen van de token-sleutel.


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

Initialisatie 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) {}
    });
    

Autorisatie van code aan serverzijde

Het verkrijgen van de token-sleutel.


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

Initialisatie 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
        )
    ));
    

Het krijgen van gegevens uit de Simplybook server

Een boekingspagina is meestal een pagina waar klanten kiezen voor de service die ze nodig hebben, een dienstverlener en een tijd voor hun ontmoeting. Dan geeft de klant een aantal contactgegevens in en bevestigt de boeking. De meer complexe oplossingen omvatten het invullen van verschillende extra velden, het aanmaken van een groep of terugkerende boekingen enzovoort. Laten we de workflow van de aanmaak van de eenvoudigste boekingspagina beschrijven. Als u dan extra functionaliteit wenst toe te voegen aan uw pagina, zie hier de volledige lijst metSimplybook API methodes.

Dus het eerste wat u moet ingeven is de lijst van de diensten en de lijst van werknemers. Haal deze gegevens door de getEventList en getUnitList methoden. Ze leiden beiden tot een lijst met volledige informatie over elk item, dus u hebt veel mogelijkheden om diensten en medewerkers weer te geven op uw pagina. Om werknemers te filteren gebruik de unit_map eigenschap van de service lijst, het bevat informatie over werknemers die de geselecteerde dienst kunnen bieden.

Codevoorbeeld van het verkrijgen van dienstenlijst


    $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
    // ), ...)
    

Codevoorbeeld van het krijgen van een overzicht van dienstuitvoerders


    $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
    // ), ...)
    

De volgende stap voor een klant is om een ​​datum en tijd van zijn dienst te kiezen. We hebben gebruik gemaakt van een Bootstrap datum-selecteerder in het API-gebruik voorbeeld. U kunt bijvoorbeeld ook deze of een andere kalender selecteren. Om uw eerste kalenderdag in te stellen, gebruik de getFirstWorkingDay methode. Het kan werknemer id nemen als een parameter en geeft de volgende datum weer waarop de geselecteerde werknemer (of een werknemer in het bedrijf) beschikbaar is voor een boeking.{""|t} Om tijdslots te laten zien voor een geselecteerde datum heeft u de getWorkCalendar en getStartTimeMatrix methoden nodig. De eerste methode geeft u informatie over de begin- en eindtijd van de werkdag, en over de rustdagen. En de tweede geeft de lijst van tijdsloten die kunnen worden geboekt voor een bepaalde datum.

Codevoorbeeld van het krijgen van informatie over werkdagen


    $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),
    //     ...
    //);
    

Codevoorbeeld van het krijgen van starttijd matrix


    $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', ....),
    //);
    

Een andere handige methode die u kan gebruiken is calculateEndTime. Elke dienst beschikt over zijn eigen tijdsduur, ook de werknemers van uw bedrijf hebben mogelijk verschillende werkschema's van dag tot dag. Dus met behulp van deze methode kunt u de klant een einddatum en -tijd van de dienst tonen die hij/zij heeft geboekt op een correcte manier.

Codevoorbeeld van de berekening van de boeking eindtijd


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

Wanneer een klant op de bevestigingsknop van de reservering klikt moet u de class='code-piece'>book methode volgen. Dit is de belangrijkste functie die alle nodige validaties uitvoert en een nieuwe boeking in het Simplybook systeem registreert. Informatie over de boeking, klantengegevens zoals naam en telefoonnummer en een aantal extra params zijn nodig. Bekijk alle params beschrijvingen van deze methode in API functielijst. De book methode response bevat een uniqe code en andere details van de nieuwe boeking of de lijst met fouten indien sommige problemen optraden, zodat u deze informatie kunt gebruiken om het boekingsresultaat te laten zien aan een klant op een gelegen en intuïtieve manier


Met behulp van de API geheime sleutel

In sommige gevallen vereist de book methode een bevestiging, bijvoorbeeld als je betalingen accepteert van klanten waarvan u de afspraak slechts bevestigt nadat de betaling is aangekomen. De Simplybook API confirmBookng methode neemt de boeking-id en veilige handtekening als parameters (een andere methode die een beveiligde handtekening vereist, is cancelBookng). Voor de beveiligde handtekening generatie kan your secret API-key worden gebruikt. Zie hoe het kan worden gedaan in het onderstaande voorbeeld. U kunt de geheime sleutel op admin interface onder de 'Instellingen' koppeling van API eigenschap terugvinden in de lijst 'Plugins'.

Code voorbeeld van een dienstboeking en de bevestiging met behulp van de geheime API-sleutel


    $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);
        }
    }
    

Codevoorbeeld van het verkrijgen van extra velden


    $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
    // )), ...)
    

Simplybook Eigenschappen

Als uw bedrijf enkele specifieke extra functionaliteiten vereist, kunt u een aantal van onze extra eigenschappen activeren. De complete eigenschap lijst met gedetailleerde beschrijving is beschikbaar in de admin interface onder de link ‘Eigenschappen’. Nadat de benodigde eigenschappen zijn ingeschakeld zullen de bijbehorende API methoden zullen worden geactiveerd, zodat u ze kunt gebruiken in uw code.

Boeking functionaliteit codeverloop

Autoriseer Simplybook API met behulp van de loginClient.getToken(companyLogin, apiKey); functie.


Controleer of de Dienstcategorieën plugin is geactiveerd door isPluginActivated('event_category') Indien ja, weergeef dan de lijst van categorieën 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.


Als Eender welke werknemer selector eigenschap wordt geactiveerd isPluginActivated('any_unit') en geen speciale duur is ingesteld voor het dienst -dienstverlener paar in de "unit_map" matrix, dan moet de gebruiker worden toegestaan ​​om de Eender welke dienstverlener optie te selecteren of handmatig een dienstverlener te kiezen. Maar handmatige selectie van uitvoerende dienstverleners mag niet mogelijk zijn als getCompanyParam('any_unit__hide_other_units') is ingeschakeld.


Gebruik getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value ) om beschikbare timeslots voor een bepaalde datum te krijgen. $unitId zou null zou moeten zijn als Eender welke werknemer is geselecteerd.


Als Eender welke werknemer selector actief is en Eender welke werknemer is geselecteerd, krijgt u via getAvailableUnits($eventId, $dateTime, $count) de beschikbare $unitId


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


Gebruik book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) om een boeking te maken.


Waarom duizenden klanten kiezen voor Simplybook API?

Duidelijke en eenvoudige interface. Zonder problemen uw eigen boeking service bouwen

U kunt eenvoudig alle functionaliteit die u nodig heeft inpluggen

Real-time planning - uw klanten kunnen afspraken boeken waar en wanneer ze willen 24/7

Onze app biedt nog een heleboel andere mogelijkheden. Klik hier voor meer informatie over alle functies.

API

Laat uw klanten diensten boeken zonder uw app te verlaten!

Maak uw website of app meer relevant, aantrekkelijk en rendabel door het verstrekken van de actie die uw klanten willen ondernemen bij het ontdekken van lokale bedrijven. Met onze API kunt u eenvoudig een 'Boek nu' knop direct op uw webpagina plaatsen, zodat uw klanten afspraken in real-time, dag of nacht kunnen plannen.

Onze API geeft u toegang tot alle boekingsgegevens die u nodig heeft om planningsmogelijkheden op te zetten en te implementeren voor uw klantendoelgroep.

Door het verbinden van een klant met uw bedrijfskalender, creëren we nieuwe business opportuniteiten. Wij zijn van mening dat direct afspraken boeken via uw app of website ons in staat stelt om u te voorzien van nieuwe klanten, niet enkel klanten potentieel.