User API guide/fr: Difference between revisions
Created page with "Vous pouvez utiliser [https://simplybook.me/api_example/json-rpc-client.js la bibliothèque client JSON-RPC JavaScript] et [https://simplybook.me/api_example/JsonRpcClient.zip la bibliothèque client JSON-RPC PHP] de nos exemples pour développer votre propre solution." |
Created page with "'''Exemple de code pour obtenir les formulaires d'inscription''' <br><br> <nowiki>$fields = $client->getAdditionalFields($eventId); // renvoie - array(array( // 'name' => 'b0657bafaec7a2c9800b923f959f8163', - nom du champ // 'title' => 'Test digits', - titre du champ // 'type' => 'digits', - type de champ // 'values' => null, - valeurs disponibles pour le type de champ de sélection // 'default' => null, - valeur par défaut pour le champ // 'is_..." |
||
| (13 intermediate revisions by the same user not shown) | |||
| Line 63: | Line 63: | ||
<br><br><br> | <br><br><br> | ||
= '''AUTORISATION DE L'API UTILISATEUR/ADMIN ([https://simplybook.me/api/doc#/admin SERVICE D'ADMINISTRATION DE L'ENTREPRISE])''' = | |||
=''' | |||
<br><br> | <br><br> | ||
==''' | == '''Autorisation depuis le code côté client''' == | ||
<br><br> | <br><br> | ||
''' | '''Obtention de la clé token.''' | ||
<br><br> | <br><br> | ||
<nowiki>var loginClient = new JSONRpcClient({ | <nowiki>var loginClient = new JSONRpcClient({ | ||
| Line 76: | 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> | ||
'''Initialisation du client JSON-RPC'''. | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>this.client = new JSONRpcClient({ | <nowiki>this.client = new JSONRpcClient({ | ||
| Line 90: | Line 87: | ||
});</nowiki> | });</nowiki> | ||
<br><br> | <br><br> | ||
== '''Autorisation côté serveur''' == | |||
==''' | |||
<br><br> | <br><br> | ||
''' | '''Obtention de la clé de jeton.''' | ||
<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- | $token = $loginClient->getUserToken(YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);</nowiki> | ||
<br><br> | <br><br> | ||
''' | '''Initialisation du client JSON-RPC.''' | ||
<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' = | 'headers' => array( | ||
'X-Company-Login: ' . YOUR_COMPANY_LOGIN, | 'X-Company-Login: ' . YOUR_COMPANY_LOGIN, | ||
'X-User-Token: ' . $token | 'X-User-Token: ' . $token | ||
| Line 109: | Line 104: | ||
));</nowiki> | ));</nowiki> | ||
<br><br><br> | <br><br><br> | ||
= '''OBTENTION DE DONNÉES À PARTIR DU SERVEUR SIMPLYBOOK''' = | |||
=''' | |||
<br><br> | <br><br> | ||
Une page de réservation est généralement une page où les clients choisissent le service dont ils ont besoin, un employé et l'heure de leur rendez-vous. Ensuite, le client saisit ses coordonnées et confirme la réservation. Les solutions plus complexes peuvent inclure le remplissage de différents formulaires d'inscription, la création de réservations de groupe ou de plusieurs rendez-vous, etc. Décrivons le processus de création d'une page de réservation simple. Si vous avez besoin d'ajouter des fonctionnalités supplémentaires à votre page, consultez ici la liste complète [https://simplybook.me/api/doc des méthodes API Simplybook]. | |||
La première chose à afficher est donc la liste des services et la liste des employés. Obtenez ces données à l'aide des méthodes getEventList et getUnitList. Elles renvoient toutes deux une liste contenant des informations complètes sur chaque élément, ce qui vous offre de nombreuses possibilités pour afficher les services et les employés sur votre page. Pour filtrer les employés, utilisez la propriété unit_map de la liste des services, qui contient des informations sur les employés pouvant fournir le service sélectionné. | |||
<br><br> | <br><br> | ||
'''Exemple de code pour obtenir la liste des services''' | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>$services = $client- | <nowiki>$services = $client->getEventList(); | ||
// | // renvoie array(array( | ||
// 'id' = | // 'id' => 1, - identifiant du service | ||
// 'name' = | // 'name' => 'Service 1', - nom du service | ||
// 'description' = | // 'description' => 'Describe your service...', - description du service | ||
// 'duration' = | // 'duration' => 60, - durée du service | ||
// 'hide_duration' = | // 'hide_duration' => 0, - drapeau permettant de masquer la durée aux clients, | ||
// 'picture' = | // 'picture' => null, - nom du fichier de l'image ou null | ||
// 'picture_path' = | // 'picture_path' => '/uploads/apidemo/event__picture/small/', - chemin complet vers l'image, | ||
// 'position' = | // 'position' => 1 - position du service | ||
// 'is_active' = | // 'is_active' => 1, - le service est activé | ||
// 'is_public' = | // 'is_public' => 1, - le service peut être réservé par les clients | ||
// ), ...)</nowiki> | // ), ...)</nowiki> | ||
<br><br> | <br><br> | ||
'''Exemple de code pour obtenir la liste des prestataires de services''' | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>$services = $client- | <nowiki>$services = $client->getUnitList(); | ||
// | // renvoie array(array( | ||
// 'id' = | // 'id' => 1, - identifiant du prestataire | ||
// 'name' = | // 'name' => 'Prestataire 1', - nom du prestataire | ||
// 'phone' = | // 'phone' => '111111111', - numéro de téléphone du prestataire | ||
// 'description' = | // 'description' => 'Décrivez votre prestataire...', - description du prestataire | ||
// 'email' = | // 'email' => 'test@gmail.com', - adresse e-mail du prestataire, | ||
// 'is_active' = | // 'is_active' => 1, - le prestataire est activé | ||
// 'is_visible' = | // 'is_visible' => 1, - l'artiste est visible pour les clients, | ||
// 'picture' = | // 'picture' => null, - nom du fichier de l'image ou null, | ||
// 'picure_path' = | // 'picure_path' => '/uploads/apidemo/unit_group__picture/small/', - chemin complet vers l'image | ||
// 'position' = | // 'position' => 1, - position de l'artiste | ||
// 'qty' = | // 'qty' => 1, quantité d'artistes | ||
// ), ...)</nowiki> | // ), ...)</nowiki> | ||
<br><br> | <br><br> | ||
L'étape suivante pour un client consiste à choisir une date et une heure pour son service. Nous avons utilisé un sélecteur de date Bootstrap dans l'exemple d'utilisation de l'API, mais vous pouvez également utiliser celui-ci ou tout autre calendrier. Pour définir la première date de votre calendrier, utilisez la méthode getFirstWorkingDay. Elle peut prendre l'identifiant de l'employé comme paramètre et renvoie la prochaine date à laquelle l'employé sélectionné (ou tout employé de l'entreprise par défaut) est disponible pour une réservation. Pour afficher les créneaux horaires disponibles à une date sélectionnée, vous devez utiliser les méthodes getWorkCalendar et getStartTimeMatrix. La première méthode vous donne des informations sur les heures de début et de fin des jours ouvrables, ainsi que sur les jours fériés. La seconde renvoie la liste des créneaux horaires pouvant être réservés pour une date donnée. | |||
<br><br> | <br><br> | ||
''' | '''Exemple de code pour obtenir des informations sur les jours ouvrables''' | ||
<br><br> | <br><br> | ||
<nowiki>$année = 2015 ; | |||
<nowiki>$ | $mois = 3 ; // mars | ||
$ | $performerId = 1 ; // Peut être nul | ||
$performerId = 1; // | $workDaysInfo = $client->getWorkCalendar($année, $mois, $performerId) ; | ||
$workDaysInfo = $client- | // renvoie array( | ||
// | // '2015-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0), | ||
// '2015-03-01' = | // '2015-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0), | ||
// '2015-03-02' = | |||
// ... | // ... | ||
//);</nowiki> | //);</nowiki> | ||
<br><br> | <br><br> | ||
''' | '''Exemple de code pour obtenir la matrice des heures de début''' | ||
<br><br> | <br><br> | ||
<nowiki>$dateFrom = '2015-03-03'; | <nowiki>$dateFrom = '2015-03-03'; | ||
| Line 186: | Line 169: | ||
$performerId = 1; | $performerId = 1; | ||
$qty = 1; | $qty = 1; | ||
$availableTime = $client- | $availableTime = $client->getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty); | ||
// | // renvoie array( | ||
// '2015-03-03' = | // '2015-03-03' => array('09:00:00', '09:30:00', '10:00:00', ....), | ||
// '2015-03-04' = | // '2015-03-04' => array('09:00:00', '09:30:00', '10:00:00', ....), | ||
//);</nowiki> | //);</nowiki> | ||
<br><br> | <br><br> | ||
Une autre méthode utile dont vous pourriez avoir besoin est calculateEndTime. Chaque service peut avoir sa propre durée, et les employés de votre entreprise peuvent avoir des horaires de travail différents d'un jour à l'autre. Cette méthode vous permet donc d'indiquer à un client la date et l'heure de fin du service qu'il a réservé de manière correcte. | |||
<br><br> | <br><br> | ||
''' | '''Exemple de code pour calculer l'heure de fin d'une réservation''' | ||
<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- | $availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId); | ||
// | // renvoie « 2015-03-03 10:00:00 » | ||
</nowiki> | </nowiki> | ||
<br><br> | <br><br> | ||
Lorsqu'un client clique sur le bouton « Confirmer la réservation », vous devez appeler la méthode « book ». Il s'agit de la fonction principale qui effectue toutes les validations nécessaires et enregistre une nouvelle réservation dans le système Simplybook. Elle récupère les informations relatives à la réservation, les données du client telles que son nom et son numéro de téléphone, ainsi que certains paramètres supplémentaires. Vous trouverez la description de tous les paramètres de cette méthode dans [https://simplybook.me/api/doc la liste des fonctions API]. La réponse de la méthode book contient un code unique et d'autres détails sur la nouvelle réservation ou la liste des erreurs si des problèmes sont survenus. Vous pouvez utiliser ces informations pour afficher le résultat de la réservation au client de manière pratique et intuitive. | |||
<br><br><br> | <br><br><br> | ||
= '''UTILISATION DE LA CLÉ SECRÈTE API''' = | |||
=''' | |||
<br><br> | <br><br> | ||
Dans certains cas, la méthode de réservation peut nécessiter une confirmation, par exemple si vous acceptez les paiements de vos clients et que vous ne confirmez la réservation qu'après réception du paiement. La méthode confirmBookng de l'API Simplybook prend comme paramètres l'identifiant de la réservation et une signature sécurisée (une autre méthode qui nécessite une signature sécurisée est cancelBookng). Pour générer une signature sécurisée, vous devez utiliser votre clé API secrète. Découvrez comment procéder dans l'exemple ci-dessous. Vous trouverez la clé secrète dans l'interface d'administration, sous le lien « Paramètres » de la fonctionnalité API personnalisée dans la liste « Fonctionnalités personnalisées ». | |||
<br><br> | <br><br> | ||
'''Exemple de code pour la réservation d'un service et sa confirmation à l'aide d'une clé API secrète''' | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>$additionalFields = array( | <nowiki>$additionalFields = array( | ||
'6740d3bce747107ddb9a789cbb78abf3' = | '6740d3bce747107ddb9a789cbb78abf3' => 'value1', | ||
'b0657bafaec7a2c9800b923f959f8163' = | 'b0657bafaec7a2c9800b923f959f8163' => 'value2' | ||
); | ); | ||
$clientData = array( | $clientData = array( | ||
'name' = | 'name' => 'Nom du client', | ||
'email' = | 'email' => 'client@email.com', | ||
'phone' = | 'phone' => '+13152108338' | ||
); | ); | ||
$bookingsInfo = $client- | $bookingsInfo = $client->book($eventId, $unitId, $date, $time, $clientData, $additionalFields); | ||
if ($bookingsInfo->require_confirm) { | |||
if ($bookingsInfo- | foreach ($bookingsInfo->bookings as $booking) { | ||
$sign = md5($booking->id . $booking->hash . YOUR_API_SECRET_KEY); | |||
$result = $client->confirmBooking($booking->id, $sign); | |||
echo ' | |||
Confirm result | Confirm result | ||
'; | '; | ||
var_dump($result); | |||
} | |||
}</nowiki> | }</nowiki> | ||
<br><br> | <br><br> | ||
'''Exemple de code pour obtenir les formulaires d'inscription''' | |||
''' | |||
<br><br> | <br><br> | ||
<nowiki>$fields = $client- | <nowiki>$fields = $client->getAdditionalFields($eventId); | ||
// | // renvoie - array(array( | ||
// 'name' = | // 'name' => 'b0657bafaec7a2c9800b923f959f8163', - nom du champ | ||
// 'title' = | // 'title' => 'Test digits', - titre du champ | ||
// 'type' = | // 'type' => 'digits', - type de champ | ||
// 'values' = | // 'values' => null, - valeurs disponibles pour le type de champ de sélection | ||
// 'default' = | // 'default' => null, - valeur par défaut pour le champ | ||
// 'is_null' = | // 'is_null' => null, - champ pouvant être vide | ||
// 'on_main_page' = | // 'on_main_page' => 1, | ||
// 'pos' = | // 'pos' => 1, - position du champ | ||
// 'value' = | // 'value' => null | ||
// )), ...)</nowiki> | // )), ...)</nowiki> | ||
<br><br><br> | <br><br><br> | ||
= '''FONCTIONNALITÉS PERSONNALISÉES SIMPLYBOOK''' = | |||
='''SIMPLYBOOK | |||
<br><br> | <br><br> | ||
Si votre entreprise a besoin de fonctionnalités supplémentaires, vous pouvez activer certaines de nos fonctionnalités personnalisées. La liste complète des fonctionnalités personnalisées avec une description détaillée est disponible dans votre interface d'administration sous le lien « Fonctionnalités personnalisées ». Une fois la fonctionnalité personnalisée nécessaire activée, les méthodes API correspondantes seront activées afin que vous puissiez les utiliser dans votre code. | |||
<br><br><br> | <br><br><br> | ||
=''' | = '''FONCTIONNALITÉ DE RÉSERVATION CODEFLOW''' = | ||
<br><br> | <br><br> | ||
Autorisez l'accès à l'API Simplybook à l'aide de la fonction '''loginClient.getToken(companyLogin, apiKey) ;'''. | |||
Vérifiez si la fonctionnalité personnalisée Catégories de services est activée par [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")]. Si oui, affichez la liste des catégories [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()]. | |||
Obtenir la liste des services (événements) et des prestataires (unités) à l'aide des fonctions [https://simplybook.me/en/api/doc#getEventList getEventList()] et [https://simplybook.me/en/api/doc#getUnitList getUnitList()]. Si le tableau « unit_map » est disponible pour un service, cela signifie que ce service ne peut être fourni que par les prestataires indiqués. | |||
Si la fonctionnalité personnalisée Any Employee Selector est activée [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("any_unit")] et qu'aucune durée particulière n'est définie pour la paire service-prestataire dans le tableau « unit_map », l'utilisateur doit pouvoir sélectionner l'option Any provider (Tout prestataire) ou choisir manuellement un prestataire. Cependant, la sélection manuelle des prestataires ne doit pas être possible si [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")] est activé. | |||
Utilisez [https://simplybook.me/en/api/doc#getStartTimeMatrix getStartTimeMatrix ($from comme date actuelle, $to comme date actuelle, $eventId, $unitId, $count comme valeur des participants sélectionnés)] pour obtenir les créneaux horaires disponibles pour une date donnée. '''$unitId''' doit être nul si l'option « Tout employé » est sélectionnée. | |||
Si le sélecteur « Any Employee » (Tout employé) est actif et qu'un employé a été sélectionné, appelez [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)] pour obtenir le $unitId disponible | |||
Si la fonctionnalité personnalisée des formulaires de saisie est activée, [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] appelle la fonction [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)] pour obtenir la liste des champs à remplir par le client. | |||
Appelez [https://simplybook.me/en/api/doc#book book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)] pour effectuer une réservation. | |||
<br><br> | <br><br> | ||