API-dokumentasjon

Bruk vårt API for utviklere til å lage ditt eget bestillingsgrensesnitt. Du kan designe hvilken som helst løsning du ønsker, fra den enkleste widgeten til en multifunksjonell applikasjon med funksjonalitet som er tilpasset i henhold til bedriftens spesifikke behov.

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

Se et eksempel på et API-basert bestillingsgrensesnitt, og les også kildekoden til denne løsningen.

Autorisasjon

Simplybook API-metoder krever en autentisering. For å autorisere i Simplybook API må du få en tilgangsnøkkel - tilgangstoken. For å få denne tilgangsnøkkelen bør du ringe JSON-RPC-metoden getTokenhttp://user-api.simplybook.me/login-tjenesten ved å sende din personlige API-nøkkel. Du kan kopiere API-nøkkelen din i administrasjonsgrensesnittet: gå til lenken 'Plugins' og velg API-plugin 'Innstillinger'. Deretter må du starte ekstern tilgang til Simplybook API. Forespørselen din skal inneholde følgende overskrifter: 'X-Company-Login', 'X-Token'.

Å få tilgangskoden kan implementeres enten fra klientsiden eller fra serveren din, som er den sikreste løsningen.

Du kan bruke javascript JSON-RPC-klientbiblioteket og php JSON-RPC-klientbiblioteket fra våre eksempler for din egen løsningsutvikling.


Client API (Company public service) autorisasjon

Autorisasjon fra kode på klientsiden

Hente token-nøkkelen.


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

Autorisasjon fra kode på serversiden

Hente token-nøkkelen.


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

Initialisering JSON-RPC-klient.


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

Autorisation API Utilisateur/Admin (bedriftsadministrasjonstjeneste)

Autorisasjon fra kode på klientsiden

Hente token-nøkkelen.


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

Autorisasjon fra kode på serversiden

Hente token-nøkkelen.


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

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

Hente data fra Simplybook-serveren

En bestillingsside er vanligvis en side der klienter velger tjenesten de trenger, en ansatt og et tidspunkt for møtet. Deretter legger kunden inn litt kontaktinformasjon og bekrefter bookingen. De mer komplekse løsningene kan omfatte utfylling av forskjellige tilleggsfelt, bestilling av en gruppe eller flere ganger og så videre. La oss beskrive arbeidsflyten for å opprette den enkleste bestillingssiden. Hvis du trenger å legge til litt ekstra funksjonalitet på siden din, kan du se her den komplette listen over Simplybook API-metoder.

Det første du bør vise, er altså listen over tjenester og listen over ansatte. Hent disse dataene ved hjelp av metodene getEventList og getUnitList. Begge returnerer en liste med fullstendig informasjon om hvert element i den, så du har mange muligheter for å vise tjenester og ansatte på siden din. For å filtrere ansatte bruker du egenskapen unit_map i tjenestelisten, den inneholder informasjon om ansatte som kan levere den valgte tjenesten.

Kodeeksempel for å hente tjenesteliste


    $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 innhenting av liste over tjenesteytere


    $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 neste trinnet for en klient er å velge dato og klokkeslett for tjenesten. Vi har brukt en Bootstrap-datovelger i API-brukseksempelet, du kan også bruke denne eller en hvilken som helst annen kalender. For å angi kalenderens første dato bruker du metoden getFirstWorkingDay. Den kan ta ansatt-ID som parameter og returnerer den neste datoen da den valgte ansatte (eller alle ansatte i bedriften som standard) er tilgjengelig for booking.{""|t} For å vise tidsluker innenfor en valgt dato trenger du metodene getWorkCalendar og getStartTimeMatrix. Den første metoden gir deg informasjon om arbeidsdagens start- og sluttidspunkt, og om fridager. Den andre metoden returnerer en liste over tidsluker som kan bookes for en bestemt dato.

Kodeeksempel for innhenting av informasjon om arbeidsdager


    $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 å hente starttidsmatrise


    $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 annen nyttig metode du kanskje trenger, er calculateEndTime. Hver tjeneste kan ha sin egen varighet, og bedriftens ansatte kan også ha forskjellige arbeidsplaner fra dag til dag. Så ved å bruke denne metoden kan du vise en klient en sluttdato og et klokkeslett for tjenesten han har bestilt på en korrekt måte.

Kodeeksempel for beregning av 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 Bekreft bestillingen, må du kalle metoden Book. Dette er hovedfunksjonen som utfører alle nødvendige valideringer og registrerer en ny bestilling i Simplybook-systemet. Den tar informasjon om bestillingen, klientdata som navn og telefon og noen ekstra parametere. Se alle parameterbeskrivelser for denne metoden i listen over API-funksjoner. Bestillingsmetodens svar inneholder en unik kode og andre detaljer om den nye bestillingen eller listen over feil hvis noen problemer oppstod, slik at du kan bruke denne informasjonen til å vise bestillingsresultatet til en klient på en overbevisende og intuitiv måte


Bruk av hemmelig API-nøkkel

I noen tilfeller kan bestillingsmetoden kreve bekreftelse, f.eks. hvis du godtar betalinger fra kunder, bekrefter du bestillingen først etter at betalingen allerede er kommet. Simplybook API confirmBookng-metoden tar booking-id og sikker signatur som parametere (en annen metode som krever sikker signatur er cancelBookng). For sikker signaturgenerering bør din hemmelige API-nøkkel brukes. Se hvordan det kan gjøres i eksempelet nedenfor. Du finner den hemmelige nøkkelen i administrasjonsgrensesnittet under lenken 'Innstillinger' for API-plugin i listen 'Plugins'.

Kodeeksempel på bestilling av tjeneste og bekreftelse av denne ved hjelp av hemmelig API-nøkkel


    $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 innhenting av tilleggsfelt


    $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 for Simplybook

Hvis bedriften din har behov for ekstra funksjonalitet, kan du aktivere noen av våre tilleggsprogrammer. Den komplette listen over programtillegg med detaljert beskrivelse er tilgjengelig i administrasjonsgrensesnittet under lenken "Programtillegg". Etter at den nødvendige programtillegget er aktivert, vil de tilsvarende API-metodene aktiveres slik at du kan bruke dem i koden din.

Kodeflyt for bestillingsfunksjonalitet

Autoriser i Simplybook API med funksjonen loginClient. getToken(companyLogin, apiKey); function.


Sjekk om plugin-modulen Tjenestekategorier er aktivert av isPluginActivated('event_category') hvis ja, vis da listen over kategorier getCategoriesList().


Hent en liste over tjenester (hendelser) og utøvere (enheter) ved hjelp av funksjonene getEventList( ) og getUnitList( ). Hvis matrisen 'unit_map' er tilgjengelig for en tjeneste, betyr det at denne tjenesten kun kan leveres av gitte utøvere.


Hvis Any Employee selector-plugin er aktivert isPluginActivated('any_unit' ) og ingen spesiell varighet er angitt for tjeneste-utøver-paret i 'unit_map'-matrisen, bør brukeren ha lov til å velge Any provider -alternativet eller velge leverandør manuelt. Men manuelt valg av utøvere skal ikke være mulig hvis getCompanyParam('any_unit__hide_other_units') er aktivert.


Bruk getStartTimeMatrix ($from som gjeldende dato, $to som gjeldende dato, $eventId, $unitId, $count som valgt deltakerverdi ) for å få tilgjengelige tidsluker for en gitt dato. $unitId skal være null hvis alternativet Alle ansatte er valgt.


Hvis Alle ansatte-velgeren er aktiv og Alle ansatte ble valgt, kaller du getAvailableUnits($eventId, $dateTime, $count) for å få tilgjengelige $unitId


Hvis plugin-modulen for tilleggsfelt er aktivert isPluginActivated('event_field' ), anrop funksjonen getAdditionalFields ($eventId ) for å få en liste over felt som klienten skal fylle ut.


Ring book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) for å foreta en bestilling.


Hvorfor velger tusenvis av kunder SimplyВook.me API?

Tydelig og enkelt grensesnitt. Det er enkelt å bygge din egen bestillingstjeneste

Du kan enkelt plugge inn all funksjonaliteten du trenger

Planlegging i sanntid - kundene dine kan bestille avtaler hvor de vil, når de vil, 24/7

Appen vår gir deg mange andre nyttige funksjoner. Klikk her for å lære mer om funksjonene våre.

API

La kundene dine bestille tjenester uten å forlate appen din!

Gjør nettstedet eller appen din mer relevant, engasjerende og lønnsom ved å tilby den handlingen kundene dine ønsker å utføre når de oppdager lokale bedrifter. Med API-et vårt kan du enkelt inkludere en "Bestill nå"-knapp direkte på nettsiden din, slik at kundene dine kan planlegge avtaler i sanntid, dag eller natt.

Vårt API gir deg tilgang til alle bestillingsdataene du trenger for å bygge og distribuere planleggingsfunksjoner til dine kunder.

Ved å koble en kunde med din forretningsplan, bygger vi bro over et helt nytt lag av handel. Vi tror at direkte timebestilling i appen eller på nettstedet ditt gjør det mulig for oss å tilby deg levering av kunder, ikke bare potensielle kunder.