User API guide/nl: Difference between revisions

Created page with "Bekijk [https://simplybook.me/api_example/index.html een voorbeeld van een API-gebaseerde boekingsinterface] en lees ook [https://simplybook.me/api_example/scheduler.js de broncode] van deze oplossing. <br><br><br>"
Tags: Mobile edit Mobile web edit
Created page with "Gebruik onze ontwikkelaars-API om uw eigen boekingsinterface te maken. U kunt elke gewenste oplossing ontwerpen, van de eenvoudigste widget tot een multifunctionele applicatie met functionaliteit die is aangepast aan uw bedrijfsspecifieke behoeften."
 
(9 intermediate revisions by the same user not shown)
Line 112: Line 112:
<br><br>
<br><br>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Codevoorbeeld voor het ophalen van de lijst met services'''
'''Code example of getting services list'''
<br><br>
<br><br>
  <nowiki>$services = $client->getEventList();
  <nowiki>$services = $client-&gt;getEventList();
// returns array(array(
// retourneert array(array(
//    'id' => 1, - service id
//    'id' =&gt; 1, - service-id
//    'name' => 'Service 1', - service's name
//    'name' =&gt; 'Service 1', - naam van de service
//    'description' => 'Describe your service...', - service description
//    'description' =&gt; 'Beschrijf uw service...', - beschrijving van de service
//    'duration' => 60, - service duration
//    'duration' =&gt; 60, - duur van de service
//    'hide_duration' => 0, - Hide duration to clients flag,
//    'hide_duration' =&gt; 0, - vlag om duur voor klanten te verbergen,
//    'picture' => null, - file name of picture or null
//    'picture' =&gt; null, - bestandsnaam van de afbeelding of null
//    'picture_path' => '/uploads/apidemo/event__picture/small/', - full path to picture,
//    'picture_path' =&gt; '/uploads/apidemo/event__picture/small/', - volledig pad naar afbeelding,
//    'position' => 1 - service position
//    'position' =&gt; 1 - positie van dienst
//    'is_active' => 1, - the service is activated
//    'is_active' =&gt; 1, - de dienst is geactiveerd
//    'is_public' => 1, - the service is allowed to book by clients
//    'is_public' =&gt; 1, - de dienst kan door klanten worden geboekt
// ), ...)</nowiki>
// ), ...)</nowiki>
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Codevoorbeeld voor het ophalen van een lijst met dienstverleners'''
'''Code example of getting service performers list'''
<br><br>
<br><br>
  <nowiki>$services = $client->getUnitList();
  <nowiki>$services = $client-&gt;getUnitList();
// returns array(array(
// retourneert array(array(
//    'id' => 1, - performer id
//    'id' =&gt; 1, - id van de dienstverlener
//    'name' => 'Provider 1', - performer name
//    'name' =&gt; 'Provider 1', - naam van de uitvoerder
//    'phone' => '111111111', - perfomer phone number
//    'phone' =&gt; '111111111', - telefoonnummer van de uitvoerder
//    'description' => 'Describe your performer...', - performer description
//    'description' =&gt; 'Beschrijf uw uitvoerder...', - beschrijving van de uitvoerder
//    'email' => 'test@gmail.com', - perfomer email,
//    'email' =&gt; 'test@gmail.com', - e-mailadres van de uitvoerder,
//    'is_active' => 1, - the performer is activated
//    'is_active' =&gt; 1, - de uitvoerder is geactiveerd
//    'is_visible' => 1, - the perfomer is visible for clients,
//    'is_visible' =&gt; 1, - de artiest is zichtbaar voor klanten,
//    'picture' => null, - file name of picture or null,
//    'picture' =&gt; null, - bestandsnaam van foto of null,
//    'picure_path' => '/uploads/apidemo/unit_group__picture/small/', - full path to picture
//    'picure_path' =&gt; '/uploads/apidemo/unit_group__picture/small/', - volledig pad naar foto
//    'position' => 1, - performer position
//    'position' =&gt; 1, - positie van artiest
//    'qty' => 1, performer quantity
//    'qty' =&gt; 1, aantal artiesten
// ), ...)</nowiki>
// ), ...)</nowiki>
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
De volgende stap voor een klant is het kiezen van een datum en tijdstip voor zijn dienst. We hebben een Bootstrap-datumkiezer gebruikt in het API-gebruikvoorbeeld, maar u kunt ook deze of een andere kalender gebruiken. Om de eerste datum van uw kalender in te stellen, gebruikt u de methode getFirstWorkingDay. Deze methode kan het werknemers-id als parameter gebruiken en geeft de volgende datum terug waarop de geselecteerde werknemer (of standaard alle werknemers in het bedrijf) beschikbaar is voor boeking. Om tijdvakken binnen een geselecteerde datum weer te geven, hebt u de methoden getWorkCalendar en getStartTimeMatrix nodig. De eerste methode geeft u informatie over de begin- en eindtijd van de werkdag en over vrije dagen. De tweede methode retourneert de lijst met tijdvakken die voor een bepaalde datum kunnen worden geboekt.
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><br>
<br><br>
'''Code example of getting work days info'''
'''Codevoorbeeld voor het ophalen van informatie over werkdagen'''
<br><br>
<br><br>
</div>


  <div lang="en" dir="ltr" class="mw-content-ltr">
  <nowiki>$jaar = 2015;
<nowiki>$year = 2015;
$maand = 3; // maart
$month = 3; // March
$artiestId = 1; // kan null zijn
$performerId = 1; // Can be null  
$werkdagenInfo = $client-&gt;getWorkCalendar($jaar, $maand, $artiestId);
$workDaysInfo = $client->getWorkCalendar($year, $month, $performerId);
// retourneert array(
// returns array(
//    '2015-03-01' =&gt; array('van' =&gt; '09:00:00', 'to' =&gt; '18:00:00', 'is_day_off' =&gt; 0),
//    '2015-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
//    '2015-03-02' =&gt; array('from' =&gt; '09:00:00', 'to' =&gt; '18:00:00', 'is_day_off' =&gt; 0),
//    '2015-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
//    ...
//    ...
//);</nowiki>
//);</nowiki>
<br><br>
<br><br>
'''Code example of getting start time matrix'''
'''Codevoorbeeld voor het ophalen van de starttijdmatrix'''
<br><br>
<br><br>
  <nowiki>$dateFrom = '2015-03-03';
  <nowiki>$dateFrom = '2015-03-03';
Line 176: 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(
// retourneert 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><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Een andere handige methode die u wellicht nodig hebt, is calculateEndTime. Elke dienst kan een eigen duur hebben, en ook de werknemers van uw bedrijf kunnen van dag tot dag verschillende werktijden hebben. Met deze methode kunt u een klant op de juiste manier de einddatum en -tijd van de door hem geboekte dienst tonen.
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><br>
<br><br>
'''Code example of calculating booking end time'''
'''Codevoorbeeld voor het berekenen van de eindtijd van een boeking'''
<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'
// retourneert '2015-03-03 10:00:00'
</nowiki>
</nowiki>
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Wanneer een klant op de knop 'Boeking bevestigen' klikt, moet u de methode 'book' aanroepen. Dit is de belangrijkste functie die alle noodzakelijke validaties uitvoert en een nieuwe boeking registreert in het Simplybook-systeem. Deze functie verzamelt informatie over de boeking, klantgegevens zoals naam en telefoonnummer en enkele aanvullende parameters. Zie alle parameterbeschrijvingen van deze methode in [https://simplybook.me/api/doc de lijst met API-functies]. Het antwoord van de boekingsmethode bevat een unieke code en andere details van de nieuwe boeking of een lijst met fouten als er problemen zijn opgetreden, zodat u deze informatie kunt gebruiken om het boekingsresultaat op een handige en intuïtieve manier aan een klant te tonen.
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.
<br><br><br>
<br><br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
= '''GEBRUIK VAN API SECRET KEY''' =
='''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.
In sommige gevallen kan de boekingsmethode om bevestiging vragen, bijvoorbeeld als u betalingen van klanten accepteert en u de boeking pas bevestigt nadat de betaling is ontvangen. De Simplybook API-methode confirmBookng gebruikt het boekingsnummer en een beveiligde handtekening als parameters (een andere methode die een beveiligde handtekening vereist is cancelBookng). Voor het genereren van een beveiligde handtekening moet u uw geheime API-sleutel gebruiken. Zie het onderstaande voorbeeld voor hoe u dit kunt doen. U vindt de geheime sleutel in de beheerdersinterface onder de link 'Instellingen' van API Custom Feature in de lijst 'Custom Features'.
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Codevoorbeeld van het boeken van een dienst en de bevestiging daarvan met behulp van een geheime API-sleutel'''
'''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; 'Client name',
'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 '
Confirm result
Confirm result
';
';
  var_dump($result);
var_dump($result);
    }
}
}</nowiki>
}</nowiki>
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Codevoorbeeld voor het ophalen van intakeformulieren'''
'''Code example of getting intake forms'''
<br><br>
<br><br>
  <nowiki>$fields = $client->getAdditionalFields($eventId);
  <nowiki>$fields = $client-&gt;getAdditionalFields($eventId);
// returns - array(array(
// retourneert - array(array(
// 'name' => 'b0657bafaec7a2c9800b923f959f8163', - field name
// 'name' =&gt; 'b0657bafaec7a2c9800b923f959f8163', - veldnaam
// 'title' => 'Test digits', - field title
// 'title' =&gt; 'Test digits', - veldtitel
// 'type' => 'digits', - field type
// 'type' =&gt; 'digits', - veldtype
// 'values' => null, - available values for select field type
// 'values' =&gt; null, - beschikbare waarden voor select veldtype
// 'default' => null, - default value for field
// 'default' =&gt; null, - standaardwaarde voor veld
// 'is_null' => null, - is filed nullable
// 'is_null' =&gt; null, - is veld nullable
// 'on_main_page' => 1,  
// 'on_main_page' =&gt; 1,  
// 'pos' => 1, - field position
// 'pos' =&gt; 1, - veldpositie
// 'value' => null
// 'value' =&gt; null
// )), ...)</nowiki>
// )), ...)</nowiki>
<br><br><br>
<br><br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
= '''AANGEPASTE FUNCTIES VAN SIMPLYBOOK''' =
='''SIMPLYBOOK CUSTOM FEATURES'''=
<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.
Als uw bedrijf specifieke extra functionaliteit nodig heeft, kunt u enkele van onze extra aangepaste functies activeren. De volledige lijst met aangepaste functies met een gedetailleerde beschrijving is beschikbaar in uw beheerdersinterface onder de link 'Aangepaste functies'. Nadat de benodigde aangepaste functie is ingeschakeld, worden de bijbehorende API-methoden geactiveerd, zodat u ze in uw code kunt gebruiken.
<br><br><br>
<br><br><br>
='''BOOKING FUNCTIONALITY CODEFLOW'''=
= '''BOEKINGSFUNCTIONALITEIT CODEFLOW''' =
<br><br>
<br><br>
Authorize in Simplybook API using '''loginClient.getToken(companyLogin, apiKey);''' function.
Autoriseer in Simplybook API met behulp van de functie '''loginClient.getToken(companyLogin, apiKey);'''.
</div>




<div lang="en" dir="ltr" class="mw-content-ltr">
Controleer of de aangepaste functie Servicecategorieën is geactiveerd door [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")]. Zo ja, geef dan de lijst met categorieën weer met [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()].
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">
Haal een lijst met diensten (evenementen) en uitvoerders (eenheden) op met behulp van de functies [https://simplybook.me/en/api/doc#getEventList getEventList()] en [https://simplybook.me/en/api/doc#getUnitList getUnitList()]. Als de array "unit_map" beschikbaar is voor een dienst, betekent dit dat deze dienst alleen door de opgegeven uitvoerders kan worden geleverd.
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>






<div lang="en" dir="ltr" class="mw-content-ltr">
Als de aangepaste functie 'Any Employee Selector' is geactiveerd [https://simplybook.me/en/api/doc#isPluginActivated (isPluginActivated("any_unit"))] en er geen speciale duur is ingesteld voor de combinatie van dienstverlener en uitvoerder in de array 'unit_map', dan moet de gebruiker de optie 'Any provider' kunnen selecteren of de dienstverlener handmatig kunnen kiezen. Handmatige selectie van uitvoerders mag echter niet mogelijk zijn als [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")] is ingeschakeld.
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">
Gebruik [https://simplybook.me/en/api/doc#getStartTimeMatrix getStartTimeMatrix ($from als huidige datum, $to als huidige datum, $eventId, $unitId, $count als waarde voor geselecteerde deelnemers)] om beschikbare tijdvakken voor een bepaalde datum op te halen. '''$unitId''' moet null zijn als de optie Alle medewerkers is geselecteerd.
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">
Als de selectie 'Any Employee' actief is en een werknemer is geselecteerd, roep dan [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)] aan om de beschikbare $unitId op te halen
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>






<div lang="en" dir="ltr" class="mw-content-ltr">
Als de aangepaste functie voor intakeformulieren is geactiveerd, roep dan [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] de functie [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)] aan om de lijst met velden op te halen die de klant moet invullen.
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">
Roep [https://simplybook.me/en/api/doc#book boek($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)] aan om een boeking te maken.
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><br>
<br><br>
</div>