API-dokumentation

Brug vores udvikler-API til at skabe din egen bookinggrænseflade. Du kan designe enhver løsning, du ønsker, lige fra den enkleste widget til en multifunktionel applikation med funktioner, der er tilpasset din virksomheds specifikke behov.

Simplybook Application Programming Interface bruger JSON-RPC 2.0-protokollen.

Se et eksempelen API-baseret bookinggrænseflade, og læs også kildekoden til denne løsning.

Autorisation

Simplybook API-metoder kræver en godkendelse. For at autorisere i Simplybook API skal du have en adgangsnøgle - adgangstoken. For at få denne adgangstoken skal du kalde JSON-RPC-metoden getTokenhttp://user-api.simplybook.me/login-tjenesten og sende din personlige API-nøgle. Du kan kopiere din API-nøgle i admin-grænsefladen: Gå til linket 'Plugins', og vælg API-plugin 'Settings'. Derefter skal du starte fjernadgang til Simplybook API. Din anmodning skal indeholde følgende overskrifter: 'X-Company-Login', 'X-Token'.

At få adgangstoken kan implementeres enten fra klientsiden eller fra din server, hvilket er den sikreste løsning.

Du kan bruge javascript JSON-RPC-klientbiblioteket og php JSON-RPC-klientbiblioteket fra vores eksempler til din egen løsningsudvikling.


Client API (Company public service) authorization

Autorisation fra kode på klientsiden

At få token-nøglen.


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

Initialisering af JSON-RPC-klient


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

Autorisation fra kode på serversiden

At få token-nøglen.


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

Initialisering af JSON-RPC-klient.


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

Bruger/Admin API (Virksomhedens administrationstjeneste) autorisation

Autorisation fra kode på klientsiden

At få token-nøglen.


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

Initialisering af JSON-RPC-klient.


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

Autorisation fra kode på serversiden

At få token-nøglen.


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

Initialisering af JSON-RPC-klient.


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

Hentning af data fra Simplybook-serveren

En bookingside er normalt en side, hvor kunder vælger den service, de har brug for, en medarbejder og et tidspunkt for deres møde. Derefter indtaster kunden nogle kontaktoplysninger og bekræfter bookingen. De mere komplekse løsninger kan omfatte udfyldelse af forskellige yderligere felter, booking af grupper eller flere gange og så videre. Lad os beskrive arbejdsgangen for oprettelse af den enkleste bookingside. Hvis du har brug for at tilføje ekstra funktionalitet til din side, kan du se den fulde liste over Simplybook API-metoder her.

Så det første, du skal vise, er listen over tjenester og listen over ansatte. Hent disse data med metoderne getEventList og getUnitList. De returnerer begge en liste med fuldstændige oplysninger om hvert element i den, så du har mange muligheder for at vise tjenester og medarbejdere på din side. For at lave medarbejderfiltrering skal du bruge unit_map-egenskaben på servicelisten, den indeholder oplysninger om medarbejdere, der kan levere den valgte service.

Kodeeksempel på at få en serviceliste


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

Kodeeksempel for at få en liste over serviceudbydere


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

Det næste skridt for en kunde er at vælge en dato og et tidspunkt for sin service. Vi har brugt en Bootstrap-datovælger i eksemplet med API-brug, men du kan også bruge denne eller enhver anden kalender. Brug metoden getFirstWorkingDay til at indstille din kalenders første dato. Den kan tage medarbejder-id som en parameter og returnerer den næste dato, hvor den valgte medarbejder (eller enhver medarbejder i virksomheden som standard) er tilgængelig for booking.{""|t} For at vise tidsintervaller inden for en valgt dato skal du bruge metoderne getWorkCalendar og getStartTimeMatrix. Den første metode giver dig oplysninger om arbejdsdagens start- og sluttidspunkt og om fridage. Og den anden returnerer en liste over tidsintervaller, som kan bookes på en bestemt dato.

Kodeeksempel for at få oplysninger om arbejdsdage


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

Kodeeksempel for at få en starttidsmatrix


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

En anden nyttig metode, du kan få brug for, er calculateEndTime. Hver tjeneste kan have sin egen varighed, og din virksomheds medarbejdere kan også have forskellige arbejdsplaner fra dag til dag. Så ved hjælp af denne metode kan du vise en kunde slutdato og -tidspunkt for den service, han har booket, på en korrekt måde.

Kodeeksempel på beregning af bookingens sluttidspunkt


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

Når en kunde klikker på knappen Bekræft reservation, skal du kalde metoden Book. Dette er hovedfunktionen, som udfører alle nødvendige valideringer og registrerer en ny booking i Simplybook-systemet. Den tager oplysninger om bookingen, kundedata som navn og telefon og nogle yderligere parametre. Se alle beskrivelser af params for denne metode i listen over API-funktioner. Book-metodens svar indeholder en unik kode og andre detaljer om den nye booking eller listen over fejl, hvis der opstod nogle problemer, så du kan bruge disse oplysninger til at vise bookingresultatet til en klient på en overbevisende og intuitiv måde


Brug af hemmelig API-nøgle

I nogle tilfælde kan bookingmetoden kræve en bekræftelse, f.eks. hvis du accepterer betalinger fra kunder, bekræfter du først bookingen, når betalingen allerede er kommet. Simplybook API'ens confirmBookng-metode tager booking-id og sikker signatur som parametre (en anden metode, der kræver sikker signatur, er cancelBookng). Til den sikre signaturgenerering skal din hemmelige API-nøgle bruges. Se, hvordan det kan gøres i eksemplet nedenfor. Du kan finde den hemmelige nøgle i administrationsgrænsefladen under linket 'Indstillinger' for API-plugin i listen 'Plugins'.

Kodeeksempel på servicebestilling og dens bekræftelse ved hjælp af hemmelig API-nøgle


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

Kodeeksempel for at få ekstra felter


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

Plugins til Simplybook

Hvis din virksomhed kræver yderligere funktionalitet, kan du aktivere nogle af vores ekstra plugins. Den komplette plugin-liste med detaljeret beskrivelse er tilgængelig i dit admin-interface under linket 'Plugins'. Når det nødvendige plugin er aktiveret, vil de tilsvarende API-metoder blive aktiveret, så du kan bruge dem i din kode.

Booking-funktionalitet codeflow

Autoriser i Simplybook API ved hjælp af loginClient. getToken(companyLogin, apiKey); function.


Kontroller, om plugin'et Servicekategorier er aktiveret af isPluginActivated('event_category'), hvis ja, så vis listen over kategorier getCategoriesList().


Hent en liste over tjenester (begivenheder) og udøvere (enheder) ved hjælp af funktionerne getEventList() og getUnitList( ). Hvis arrayet 'unit_map' er tilgængeligt for en tjeneste, betyder det, at denne tjeneste kun kan leveres af de givne udøvere.


Hvis Any Employee selector-plugin er aktiveret isPluginActivated('any_unit '), og der ikke er angivet nogen særlig varighed for service-udøver-parret i 'unit_map'-arrayet, skal brugeren have lov til at vælge Any provider -indstillingen eller vælge udbyder manuelt. Men manuelt valg af udøvere bør ikke være muligt, hvis getCompanyParam('any_unit__hide_other_units' ) er aktiveret.


Brug getStartTimeMatrix ($from som aktuel dato, $to som aktuel dato, $eventId, $unitId, $count som værdi for valgte deltagere) til at få tilgængelige tidslommer for en given dato. $unitId skal være null, hvis indstillingen Enhver medarbejder er valgt.


Hvis enhver medarbejdervælger er aktiv, og enhver medarbejder blev valgt, skal du kalde getAvailableUnits($eventId, $dateTime, $count) for at få tilgængelige $unitId


Hvis plugin'et Additional fields er aktiveret, kalder isPluginActivated('event_field' ) funktionen getAdditionalFields ($eventId ) for at få en liste over de felter, som klienten skal udfylde.


Ring til book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) for at foretage en reservation.


Hvorfor vælger tusindvis af kunder SimplyВook.me-API'en?

Klar og enkel grænseflade. Det er nemt at opbygge din egen reservationstjeneste

Du kan nemt plug-in'e alle de funktioner, du har brug for

Planlægning i realtid - dine kunder kan booke aftaler, hvor de vil, når de vil, 24/7

Vores app giver dig masser af andre nyttige funktioner. Klik her for at få mere at vide om vores funktioner.

API

Lad dine kunder booke tjenester uden at forlade din app!

Gør dit website eller din app mere relevant, engagerende og rentabel ved at tilbyde den handling, dine kunder ønsker at udføre, når de opdager lokale virksomheder. Med vores API kan du nemt inkludere en "Book nu"-knap direkte på din webside, så dine kunder kan planlægge aftaler i realtid, dag eller nat.

Vores API giver dig adgang til alle de bookingdata, du har brug for til at opbygge og implementere planlægningsfunktioner til din målgruppe af kunder.

Ved at forbinde en kunde med din forretningsplan bygger vi bro over et helt nyt lag af handel. Vi mener, at direkte tidsbestilling på din app eller hjemmeside giver os mulighed for at tilbyde dig levering af kunder, ikke kun en potentiel kunde.