User API guide/da: Difference between revisions

Created page with "Se [https://simplybook.me/api_example/index.html et eksempel på en API-baseret bookinggrænseflade], og læs også [https://simplybook.me/api_example/scheduler.js kildekoden] til denne løsning. <br><br><be>"
Created page with "<br><br>"
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{#seo: |title=Brugervejledning til API - SimplyBook.me |description=Brug SimplyBook.me Bruger-API til at oprette avancerede integrationer. Følg vores vejledning for problemfri implementering. Få mere at vide her! |titlemode=tilføj |keywords=faq, ofte stillede spørgsmål, reservationssoftware, spørgsmål om aftalesystem, onlineaftaler, kalendersoftware, reservationssystem, reservationskalender, planlægningssoftware, onlineaftaleplanlægning, onlineplanlægning, plugins, tilpassede funktioner, link til tilpasset reservationsside, domænenavn, tilpasset domænenavn, tilpasset url }}
{{#seo: |title=Brugervejledning til API - SimplyBook.me |description=Brug SimplyBook.me Bruger-API til at oprette avancerede integrationer. Følg vores vejledning for problemfri implementering. Få mere at vide her! |titlemode=tilføj |keywords=faq, ofte stillede spørgsmål, reservationssoftware, spørgsmål om aftalesystem, onlineaftaler, kalendersoftware, reservationssystem, reservationskalender, planlægningssoftware, onlineaftaleplanlægning, onlineplanlægning, plugins, tilpassede funktioner, link til tilpasset reservationsside, domænenavn, tilpasset domænenavn, tilpasset url }}
<br><be>
<br><br>


Brug vores udvikler-API til at oprette din egen bookinggrænseflade. Du kan designe enhver løsning, du ønsker, lige fra den enkleste widget til multifunktionelle applikationer med funktionalitet, der er tilpasset din virksomheds specifikke behov.
Brug vores udvikler-API til at oprette din egen bookinggrænseflade. Du kan designe enhver løsning, du ønsker, lige fra den enkleste widget til multifunktionelle applikationer med funktionalitet, der er tilpasset din virksomheds specifikke behov.
Line 8: Line 8:


Se [https://simplybook.me/api_example/index.html et eksempel på en API-baseret bookinggrænseflade], og læs også [https://simplybook.me/api_example/scheduler.js kildekoden] til denne løsning.
Se [https://simplybook.me/api_example/index.html et eksempel på en API-baseret bookinggrænseflade], og læs også [https://simplybook.me/api_example/scheduler.js kildekoden] til denne løsning.
<br><br><be>
<br><br><br>
 




Line 16: Line 15:
Brug af Simplybook API-metoder kræver godkendelse. For at godkende i Simplybook API skal du få en adgangsnøgle — adgangstoken. For at få denne adgangstoken skal du kalde JSON-RPC-metoden getToken på https://user-api.simplybook.me/login service og indtaste din personlige API-nøgle. Du kan kopiere din API-nøgle i admin-grænsefladen: gå til linket 'Custom Features' og vælg API Custom Feature 'Settings'. Derefter skal du initialisere fjernadgang til Simplybook API. Din anmodning skal indeholde følgende headere: 'X-Company-Login', 'X-Token'.
Brug af Simplybook API-metoder kræver godkendelse. For at godkende i Simplybook API skal du få en adgangsnøgle — adgangstoken. For at få denne adgangstoken skal du kalde JSON-RPC-metoden getToken på https://user-api.simplybook.me/login service og indtaste din personlige API-nøgle. Du kan kopiere din API-nøgle i admin-grænsefladen: gå til linket 'Custom Features' og vælg API Custom Feature 'Settings'. Derefter skal du initialisere fjernadgang til Simplybook API. Din anmodning skal indeholde følgende headere: 'X-Company-Login', 'X-Token'.


Adgangstoken kan implementeres enten fra klientsiden eller fra din server, hvilket er den mest sikre løsning.




Adgangstoken kan implementeres enten fra klientsiden eller fra din server, hvilket er den mest sikre løsning.
Du kan bruge [https://simplybook.me/api_example/json-rpc-client.js javascript JSON-RPC-klientbibliotek] og [https://simplybook.me/api_example/JsonRpcClient.zip php JSON-RPC-klientbibliotek] fra vores eksempler til udvikling af din egen løsning.
 
<div lang="en" dir="ltr" class="mw-content-ltr">
You may use [https://simplybook.me/api_example/json-rpc-client.js javascript JSON-RPC-client library] and [https://simplybook.me/api_example/JsonRpcClient.zip php JSON-RPC-client library] from our examples for your own solution development.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Bemærk, at adgangstokenet er gyldigt i én time. Dette er af sikkerhedsmæssige årsager. Du skal genoprette det mindst én gang i timen.
Please note access-token has one hour one time. This is done for security reasons. You will need to regenerate it at least once per hour.
<br><br><br>
<br><br><br>
</div>




<div lang="en" dir="ltr" class="mw-content-ltr">
= '''KLIENT-API ([https://simplybook.me/api/doc#/admin OFFENTLIG TJENESTE]) AUTORISATION''' =
='''CLIENT API([https://simplybook.me/api/doc#/admin COMPANY PUBLIC SERVICE])AUTHORIZATION'''=
<br><br>
<br><br>
=='''Authorization from client side code'''==
== '''Autorisation fra klientens kode''' ==
<br><br>
<br><br>
'''Getting the token-key'''.
'''Hent token-nøglen'''.
<br><br>
<br><br>
  <nowiki>var loginClient = new JSONRpcClient({
  <nowiki>var loginClient = new JSONRpcClient({
Line 44: Line 36:
var token = loginClient.getToken(YOUR_COMPANY_LOGIN, YOUR_API_KEY);</nowiki>
var token = loginClient.getToken(YOUR_COMPANY_LOGIN, YOUR_API_KEY);</nowiki>
<br><br>
<br><br>
'''Initialization JSON-RPC-client.'''
'''Initialisering af JSON-RPC-klient.'''
<br><br>
<br><br>
  <nowiki>this.client = new JSONRpcClient({
  <nowiki>this.client = new JSONRpcClient({
Line 55: Line 47:
});</nowiki>
});</nowiki>
<br><br>
<br><br>
=='''Authorization from server side code'''==
== '''Autorisation fra serverkode''' ==
<br><br>
<br><br>
'''Getting the token-key.'''<br><br>
'''Hentning af token-nøglen.'''<br><br>
  <nowiki>$loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
  <nowiki>$loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
$token = $loginClient->getToken(YOUR_COMPANY_LOGIN, YOUR_API_KEY);</nowiki>
$token = $loginClient-&gt;getToken(YOUR_COMPANY_LOGIN, YOUR_API_KEY);</nowiki>
<br><br>
<br><br>
'''Initialization JSON-RPC-client.'''
'''Initialisering af JSON-RPC-klient.'''
<br><br>
<br><br>
  <nowiki>$client = new JsonRpcClient('https://user-api.simplybook.me' . '/', array(
  <nowiki>$client = new JsonRpcClient('https://user-api.simplybook.me' . '/', array(
    'headers' => array(
  'headers' =&gt; array(
        'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
      'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
        'X-Token: ' . $token
      'X-Token: ' . $token
    )
  )
));</nowiki>
));</nowiki>
<br><br><br>
<br><br><br>
='''USER/ADMIN API ([https://simplybook.me/api/doc#/admin COMPANY ADMINISTRATION SERVICE]) AUTHORIZATION'''=
 
= '''BRUGER/ADMIN API ([https://simplybook.me/api/doc#/admin VIRKSOMHEDSADMINISTRATIONSTJENESTE]) AUTORISATION''' =
<br><br>
<br><br>
=='''Authorization from client side code'''==
== '''Autorisation fra klientens kode''' ==
<br><br>
<br><br>
'''Getting the token-key.'''
'''Hent token-nøglen.'''
<br><br>
<br><br>
  <nowiki>var loginClient = new JSONRpcClient({
  <nowiki>var loginClient = new JSONRpcClient({
Line 82: Line 75:
var token = loginClient.getUserToken(YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);</nowiki>
var token = loginClient.getUserToken(YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);</nowiki>
<br><br>
<br><br>
'''Initialization JSON-RPC-client'''.
 
'''Initialisering af JSON-RPC-klient'''.
<br><br>
<br><br>
  <nowiki>this.client = new JSONRpcClient({
  <nowiki>this.client = new JSONRpcClient({
Line 93: Line 87:
});</nowiki>
});</nowiki>
<br><br>
<br><br>
=='''Authorization from server side code'''==
 
== '''Autorisation fra serversiden''' ==
<br><br>
<br><br>
'''Getting the token-key.'''
'''Hent token-nøglen.'''
<br><br>
<br><br>
  <nowiki>$loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
  <nowiki>$loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
$token = $loginClient->getUserToken(YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);</nowiki>
$token = $loginClient-&gt;getUserToken(YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);</nowiki>
<br><br>
<br><br>
'''Initialization JSON-RPC-client.'''
'''Initialisering af JSON-RPC-klient.'''
<br><br>
<br><br>
  <nowiki>$client = new JsonRpcClient('https://user-api.simplybook.me' . '/admin/', array(
  <nowiki>$client = new JsonRpcClient('https://user-api.simplybook.me' . '/admin/', array(
'headers' => array(
'headers' =&gt; array(
'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
'X-User-Token: ' . $token
'X-User-Token: ' . $token
)
)
));</nowiki>
));</nowiki>
<br><br><be>
<br><br><br>
</div>


= '''HENTNING AF DATA FRA SIMPLYBOOK-SERVEREN''' =
<br><br>
En reservationsside 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 reservationen. De mere komplekse løsninger kan omfatte udfyldelse af forskellige indtastningsformularer, oprettelse af gruppe- eller flergangsreservationer osv. Lad os beskrive arbejdsgangen for oprettelse af den enkleste reservationsside. Hvis du derefter har brug for at tilføje ekstra funktionalitet til din side, kan du se den fulde liste over [https://simplybook.me/api/doc Simplybook API-metoder] her.


 
Så det første, du skal vise, er listen over tjenester og listen over medarbejdere. Hent disse data ved hjælp af metoderne getEventList og getUnitList. De returnerer begge en liste med komplette oplysninger om hvert element i listen, så du har mange muligheder for at vise tjenester og medarbejdere på din side. For at filtrere medarbejdere skal du bruge egenskaben unit_map i tjenestelisten, som indeholder oplysninger om medarbejdere, der kan levere den valgte tjeneste.
<div lang="en" dir="ltr" class="mw-content-ltr">
='''GETTING DATA FROM SIMPLYBOOK SERVER'''=
<br><br>
<br><br>
A booking page usually is a page where clients choose service they need, an employee and a time of their meeting. Then a client enters some contact info and confirms the booking. The more complex solutions may include filling different intake forms, making some group or multi-times booking and so on. Lets describe the workflow of creation the simpliest booking page. Then if you need to add some extra functionality to your page, see here the full list of [https://simplybook.me/api/doc Simplybook API methods].
</div>


 
'''Kodeeksempel på hentning af serviceliste'''
 
<div lang="en" dir="ltr" class="mw-content-ltr">
So the first thing you should display is the list of services and the list of employes. Get this data by getEventList and getUnitList methods. They both return a list with complete information about each item in it, so you have many possibilities how to display services and employees at your page. To make employee filtration use unit_map property of the service list, it contains the info about employees who can provide the selected service.
<br><be>
</div>
 
 
 
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of getting services list'''
<br><br>
<br><br>
  <nowiki>$services = $client->getEventList();
  <nowiki>$services = $client-&gt;getEventList();
// returns array(array(
// returnerer array(array(
//    'id' => 1, - service id
//    'id' =&gt; 1, - service-id
//    'name' => 'Service 1', - service's name
//    'name' =&gt; 'Service 1', - servicens navn
//    'description' => 'Describe your service...', - service description
//    'description' =&gt; 'Beskriv din service...', - servicebeskrivelse
//    'duration' => 60, - service duration
//    'duration' =&gt; 60, - servicens varighed
//    'hide_duration' => 0, - Hide duration to clients flag,
//    'hide_duration' =&gt; 0, - Skjul varighed for klienter flag,
//    'picture' => null, - file name of picture or null
//    'picture' =&gt; null, - filnavn på billede eller null
//    'picture_path' => '/uploads/apidemo/event__picture/small/', - full path to picture,
//    'picture_path' =&gt; '/uploads/apidemo/event__picture/small/', - fuld sti til billede,
//    'position' => 1 - service position
//    'position' =&gt; 1 - serviceposition
//    'is_active' => 1, - the service is activated
//    'is_active' =&gt; 1, - tjenesten er aktiveret
//    'is_public' => 1, - the service is allowed to book by clients
//    'is_public' =&gt; 1, - tjenesten kan bookes af klienter
// ), ...)</nowiki>
// ), ...)</nowiki>
<br><br>
<br><br>
'''Code example of getting service performers list'''
 
'''Kodeeksempel på hentning af liste over tjenesteudbydere'''
<br><br>
<br><br>
  <nowiki>$services = $client->getUnitList();
  <nowiki>$services = $client-&gt;getUnitList();
// returns array(array(
// returnerer array(array(
//    'id' => 1, - performer id
//    'id' =&gt; 1, - udbyder-id
//    'name' => 'Provider 1', - performer name
//    'name' =&gt; 'Udbyder 1', - udbyderens navn
//    'phone' => '111111111', - perfomer phone number
//    'phone' =&gt; '111111111', - udbyderens telefonnummer
//    'description' => 'Describe your performer...', - performer description
//    'description' =&gt; 'Beskriv din udbyder...', - udbyderens beskrivelse
//    'email' => 'test@gmail.com', - perfomer email,
//    'email' =&gt; 'test@gmail.com', - udbyderens e-mail,
//    'is_active' => 1, - the performer is activated
//    'is_active' =&gt; 1, - udbyderen er aktiveret
//    'is_visible' => 1, - the perfomer is visible for clients,
//    'is_visible' =&gt; 1, - udøveren er synlig for kunder,
//    'picture' => null, - file name of picture or null,
//    'picture' =&gt; null, - filnavn på billede eller null,
//    'picure_path' => '/uploads/apidemo/unit_group__picture/small/', - full path to picture
//    'picure_path' =&gt; '/uploads/apidemo/unit_group__picture/small/', - fuld sti til billede
//    'position' => 1, - performer position
//    'position' =&gt; 1, - udøverens position
//    'qty' => 1, performer quantity
//    'qty' =&gt; 1, antal udøvere
// ), ...)</nowiki>
// ), ...)</nowiki>
<br><be>
<br><br>
</div>
 
 
 
<div lang="en" dir="ltr" class="mw-content-ltr">
The next step to a client is to pick a date and time of his service. We've used a Bootstrap date-picker in API-usage example, you can also use this or any other calendar. To set your calendar first date use getFirstWorkingDay method. It can take employee id as a parameter and returns the next date when the selected employee (or any employee in the company by default) is avaiable for booking. To show time slots inside a selected date you need getWorkCalendar and getStartTimeMatrix methods. The first method give you an information about working day start and end time, and about day-offs. And the second one returns the list of time-slots which can be booked for a certain date.
<br><be>
</div>


Det næste trin for en kunde er at vælge en dato og et tidspunkt for sin service. Vi har brugt en Bootstrap-datovælger i API-brugseksemplet, men du kan også bruge denne eller en anden kalender. For at indstille din kalenders første dato skal du bruge metoden getFirstWorkingDay. Den kan tage medarbejder-id som parameter og returnerer den næste dato, hvor den valgte medarbejder (eller en hvilken som helst medarbejder i virksomheden som standard) er tilgængelig for booking. 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 samt om fridage. Den anden returnerer listen over tidsintervaller, der kan bookes for en bestemt dato.
<br><br>
'''Kodeeksempel på hentning af oplysninger om arbejdsdage'''
<br><br>


 
  <nowiki>$år = 2015;
<div lang="en" dir="ltr" class="mw-content-ltr">
$måned = 3; // marts
'''Code example of getting work days info'''
$performerId = 1; // Kan være null  
<br><br>
$workDaysInfo = $client-&gt;getWorkCalendar($år, $måned, $performerId);
  <nowiki>$year = 2015;
// returnerer array(
$month = 3; // March
//    '2015-03-01' =&gt; array('fra' =&gt; '09:00:00', 'to' =&gt; '18:00:00', 'is_day_off' =&gt; 0),
$performerId = 1; // Can be null  
//    '2015-03-02' =&gt; array('from' =&gt; '09:00:00', 'to' =&gt; '18:00:00', 'is_day_off' =&gt; 0),
$workDaysInfo = $client->getWorkCalendar($year, $month, $performerId);
// returns array(
//    '2015-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
//    '2015-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
//    ...
//    ...
//);</nowiki>
//);</nowiki>
<br><be>
<br><br>
</div>
'''Kodeeksempel på hentning af starttidsmatrix'''
 
 
 
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of getting start time matrix'''
<br><br>
<br><br>
  <nowiki>$dateFrom = '2015-03-03';
  <nowiki>$dateFrom = '2015-03-03';
Line 198: Line 169:
$performerId = 1;
$performerId = 1;
$qty = 1;
$qty = 1;
$availableTime = $client->getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
$availableTime = $client-&gt;getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
// returns array(
// returnerer array(
//    '2015-03-03' => array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-03' =&gt; array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-04' => array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-04' =&gt; array('09:00:00', '09:30:00', '10:00:00', ....),
//);</nowiki>
//);</nowiki>
<br><be>
<br><br>
</div>


 
En anden nyttig metode, du muligvis har brug for, er calculateEndTime. Hver service kan have sin egen varighed, og dine medarbejdere har muligvis forskellige arbejdsplaner fra dag til dag. Ved hjælp af denne metode kan du vise en kunde den korrekte slutdato og -tid for den service, han har reserveret.
 
<br><br>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Kodeeksempel på beregning af bookingens sluttidspunkt'''
Another usefull method you may need is calculateEndTime. Each service can have its own duration, also your company's employees possible have different work schedule form day to day. So using this method you can show to a client an end date and time of the service he've booked in a correct way.
<br><be>
</div>
 
 
 
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of calculating booking end time'''
<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->calculateEndTime($startDateTime, $serviceId, $performerId);
$availableTime = $client-&gt;calculateEndTime($startDateTime, $serviceId, $performerId);
// returns '2015-03-03 10:00:00'
// returnerer '2015-03-03 10:00:00'
</nowiki>
</nowiki>
<br><be>
<br><br>
</div>


Når en klient klikker på knappen "Bekræft booking", skal du kalde book-metoden. Dette er den vigtigste funktion, der udfører alle nødvendige valideringer og registrerer en ny booking i Simplybook-systemet. Den tager oplysninger om bookingen, klientdata som navn og telefonnummer samt nogle yderligere parametre. Se alle parametre for denne metode i [https://simplybook.me/api/doc listen over API-funktioner]. Book-metodens svar indeholder en unik kode og andre detaljer om den nye booking eller en liste over fejl, hvis der opstod problemer, så du kan bruge disse oplysninger til at vise bookingsresultatet til en kunde på en praktisk og intuitiv måde.
<br><br><br>


 
= '''BRUG AF API-HEMMELIG NØGLE''' =
<div lang="en" dir="ltr" class="mw-content-ltr">
<br><br>
When a client clicks confirm booking button you have to call book method. This is the main function which performs all necessary validations and registers a new booking in Simplybook system. It takes information about booking, client data like name and phone and some additional params. See all params descriptions of this method in [https://simplybook.me/api/doc API functions list]. The book method responce contains an uniqe code and other details of the new booking or the list of errors if some problems occured, so you can use this information to show booking result to a client in convinient and intuitive way.
I nogle tilfælde kan bogmetoden kræve bekræftelse, f.eks. hvis du accepterer betalinger fra kunder, bekræfter du først bookingen, når betalingen er modtaget. Simplybook API-metoden confirmBookng tager booking-id og sikker signatur som parametre (en anden metode, der kræver sikker signatur, er cancelBookng). Til generering af sikker signatur skal din hemmelige API-nøgle bruges. Se hvordan det kan gøres i eksemplet nedenfor. Du finder den hemmelige nøgle i admin-grænsefladen under linket 'Indstillinger' i API Custom Feature i listen 'Custom Features'.
<br><br><be>
</div>
 
 
 
<div lang="en" dir="ltr" class="mw-content-ltr">
='''USING OF API SECRET KEY'''=
<br><br>
<br><br>
In some cases the book method may require the confirmation, e.g. if your accept payments from clients you confirm booking only after the payment is already came. The Simplybook API confirmBookng method takes booking-id and secure signature as params (another method which requires secure signature is cancelBookng). For the secure signature generation your secret API-key should be used. See how it can be done in the example below. You can find the secret key at admin interface under 'Settings' link of API Custom Feature in 'Custom Features' list.
<br><be>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Kodeeksempel på servicebooking og bekræftelse ved hjælp af hemmelig API-nøgle'''
'''Code example of service booking and its confirmation using secret API key'''
<br><br>
<br><br>
  <nowiki>$additionalFields = array(
  <nowiki>$additionalFields = array(
'6740d3bce747107ddb9a789cbb78abf3' => 'value1',  
'6740d3bce747107ddb9a789cbb78abf3' =&gt; 'value1',  
'b0657bafaec7a2c9800b923f959f8163' => 'value2'
'b0657bafaec7a2c9800b923f959f8163' =&gt; 'value2'
);
);
$clientData = array(
$clientData = array(
'name' => 'Client name',
'name' =&gt; 'Kundens navn',
'email' => 'client@email.com',
'email' =&gt; 'client@email.com',
'phone' => '+13152108338'
'phone' =&gt; '+13152108338'
);
);
$bookingsInfo = $client->book($eventId, $unitId, $date, $time, $clientData, $additionalFields);
$bookingsInfo = $client-&gt;book($eventId, $unitId, $date, $time, $clientData, $additionalFields);
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
if ($bookingsInfo-&gt;require_confirm) {
if ($bookingsInfo->require_confirm) {
foreach ($bookingsInfo-&gt;bookings as $booking) {
  foreach ($bookingsInfo->bookings as $booking) {
$sign = md5($booking-&gt;id . $booking-&gt;hash . YOUR_API_SECRET_KEY);
  $sign = md5($booking->id . $booking->hash . YOUR_API_SECRET_KEY);
$result = $client-&gt;confirmBooking($booking-&gt;id, $sign);
  $result = $client->confirmBooking($booking->id, $sign);
echo '
  echo '
Bekræft resultat
Confirm result
';
';
  var_dump($result);
var_dump($result);
    }
}
}</nowiki>
}</nowiki>
<br><be>
<br><br>
</div>


 
'''Kodeeksempel på hentning af indtastningsformularer'''
 
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Code example of getting intake forms'''
<br><br>
<br><br>
  <nowiki>$fields = $client->getAdditionalFields($eventId);
  <nowiki>$fields = $client-&gt;getAdditionalFields($eventId);
// returns - array(array(
// returnerer - array(array(
// 'name' => 'b0657bafaec7a2c9800b923f959f8163', - field name
// 'name' =&gt; 'b0657bafaec7a2c9800b923f959f8163', - feltnavn
// 'title' => 'Test digits', - field title
// 'title' =&gt; 'Test digits', - feltnavn
// 'type' => 'digits', - field type
// 'type' =&gt; 'digits', - felttype
// 'values' => null, - available values for select field type
// 'values' =&gt; null, - tilgængelige værdier for valgfeltstype
// 'default' => null, - default value for field
// 'default' =&gt; null, - standardværdi for felt
// 'is_null' => null, - is filed nullable
// 'is_null' =&gt; null, - er feltet nullable
// 'on_main_page' => 1,  
// 'on_main_page' =&gt; 1,  
// 'pos' => 1, - field position
// 'pos' =&gt; 1, - feltposition
// 'value' => null
// 'value' =&gt; null
// )), ...)</nowiki>
// )), ...)</nowiki>
<br><br><be>
<br><br><br>
</div>


 
= '''SIMPLYBOOK CUSTOM-FUNKTIONER''' =
 
<br><br>
<div lang="en" dir="ltr" class="mw-content-ltr">
Hvis din virksomhed har behov for yderligere funktionalitet, kan du aktivere nogle af vores ekstra tilpassede funktioner. Den komplette liste over tilpassede funktioner med detaljeret beskrivelse findes i din administrationsgrænseflade under linket 'Tilpassede funktioner'. Når den nødvendige tilpassede funktion er aktiveret, aktiveres de tilhørende API-metoder, så du kan bruge dem i din kode.
='''SIMPLYBOOK CUSTOM FEATURES'''=
<br><br><br>
= '''KODEFLOW FOR BOOKINGFUNKTIONER''' =
<br><br>
<br><br>
If your company specific requires some additional functionality you can activate some of our additional Custom Features. The complete Custom Features list with detailed description is avaiable in your admin interface under the 'Custom Feature' link. After the necessary Custom Feature is enabled the corresponding API methods will be activated so you can use them in your code.
Autoriser i Simplybook API ved hjælp af funktionen '''loginClient.getToken(companyLogin, apiKey);'''.
<br><br><be>
</div>




Kontroller, om servicekategorier Custom Feature er aktiveret ved hjælp af [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")].  Hvis ja, vis listen over kategorier [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()].


<div lang="en" dir="ltr" class="mw-content-ltr">
='''BOOKING FUNCTIONALITY CODEFLOW'''=
<br><br>
Authorize in Simplybook API using '''loginClient.getToken(companyLogin, apiKey);''' function.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
en liste over tjenester (begivenheder) og udøvere (enheder) ved hjælp af funktionerne [https://simplybook.me/en/api/doc#getEventList getEventList()] og [https://simplybook.me/en/api/doc#getUnitList getUnitList()]. Hvis arrayet "unit_map" er tilgængeligt for en tjeneste, betyder det, at denne tjeneste kun kan leveres af de angivne udøvere.
Check if Service categories Custom Feature is activated by [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")] if yes then display list of categories [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()].
</div>






<div lang="en" dir="ltr" class="mw-content-ltr">
Hvis en hvilken som helst medarbejderudvælger-tilføjelsesfunktion er aktiveret [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("any_unit")] og der ikke er angivet nogen særlig varighed for serviceudbyder-parret i "unit_map"-arrayet, skal brugeren have mulighed for at vælge en hvilken som helst udbyder eller vælge udbyder manuelt. Manuel udvælgelse af udbydere bør dog ikke være mulig, hvis [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")] er aktiveret.
Get list of services (events) and performers (units) using [https://simplybook.me/en/api/doc#getEventList getEventList()] and [https://simplybook.me/en/api/doc#getUnitList getUnitList()] functions. If "unit_map" array is available for service it means this service can be provided by given performers only.
</div>




Brug [https://simplybook.me/en/api/doc#getStartTimeMatrix getStartTimeMatrix ($from som aktuel dato, $to som aktuel dato, $eventId, $unitId, $count som valgt deltagerantal)] for at få tilgængelige tidsintervaller for den angivne dato. '''$unitId''' skal være null, hvis indstillingen Alle medarbejdere er valgt.


<div lang="en" dir="ltr" class="mw-content-ltr">
If Any Employee Selector Custom Feature is activated [https://simplybook.me/en/api/doc#isPluginActivated 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 [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")] is enabled.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Hvis Any Employee-vælgeren er aktiv, og Any Employee er valgt, skal du kalde [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)] for at få tilgængelige $unitId
Use [https://simplybook.me/en/api/doc#getStartTimeMatrix 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.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
If Any Employee selector is active and Any employee was selected call [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)] to get available $unitId
</div>




Hvis den tilpassede funktion Intake Forms er aktiveret, skal [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] kalde funktionen [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)] for at hente en liste over felter, som kunden skal udfylde.




<div lang="en" dir="ltr" class="mw-content-ltr">
Ring [https://simplybook.me/en/api/doc#book til book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)] for at foretage en reservation.
If Intake Forms Custom Feature is activated [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] call [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)] function to get list of fields for client to fill.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<br><br>
Call [https://simplybook.me/en/api/doc#book book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)] to make a booking.
</div>
 
<div lang="en" dir="ltr" class="mw-content-ltr">
<br><be>
</div>