Pour une documentation complète de tous les points de terminaison offerts par l'API Stuart, vous pouvez visiter la documentation de l'API STUART.
Visiter Changelog
cd demo
docker build -t stuartphpdemo .
export PATH_TO_PROJECT= " /PUT/HERE/YOUR/PATH/TO/PROJECT/stuart-client-php "
docker run -v $PATH_TO_PROJECT /src:/app/vendor/stuartapp/stuart-client-php/src stuartphpdemoVia le compositeur:
$ composer require stuartapp/stuart-client-phpSi le compositeur n'est pas installé, installez-le:
$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composerAjoutez la bibliothèque à votre projet:
$ composer require stuartapp/stuart-client-phpAfin de charger toutes les classes de cette bibliothèque, exécutez simplement l'autoload au début du code Stuart
<?php
require __DIR__ . ' /vendor/autoload.php ' ;
$ environment = Stuart Infrastructure Environment:: SANDBOX ;Pour Sandbox (Testing Environment, Couriers Are Bots) https://dashboard.sandbox.stuart.com/settings/api
Pour la production (monde réel, réels courants) https://dashboard.stuart.com/settings/api
$ environment = Stuart Infrastructure Environment:: SANDBOX ;
$ api_client_id = ' REPLACE_BY_YOU_CLIENT_ID_HERE ' ; // can be found here: https://admin.sandbox.stuart.com/client/api
$ api_client_secret = ' REPLACE_BY_YOUR_CLIENT_SECRET_HERE ' ; // can be found here: https://admin.sandbox.stuart.com/client/api
$ authenticator = new Stuart Infrastructure Authenticator ( $ environment , $ api_client_id , $ api_client_secret );
$ httpClient = new Stuart Infrastructure HttpClient( $ authenticator )
$ client = new Stuart Client ( $ httpClient ); Vous pouvez également transmettre votre propre instance de client Guzzle au constructeur StuartHttpClient :
$ guzzleClient = new Guzzle Client ();
$ httpClient = new Stuart Infrastructure HttpClient ( $ authenticator , $ guzzleClient );Cela peut être utile si vous avez besoin de fixer les moyennes intermédiaires au client de Guzzle.
Il est fortement recommandé d'ajouter un mécanisme de mise en cache pour le processus d'authentification. Pour ce faire, étendez simplement la classe PsrSimpleCacheCacheInterface et implémentez votre propre version.
Il y a un cache basé sur le disque disponible dans la boîte à utiliser. Pour l'utiliser, modifiez simplement l'initialisation de la classe d'authentification et transmettez l'implémentation du cache dans le constructeur:
$ diskCache = new Stuart Cache DiskCache ( " stuart_cache.txt " );
$ authenticator = new Stuart Infrastructure Authenticator ( $ environment , $ api_client_id , $ api_client_secret , $ diskCache ); Vous pouvez initialiser les classes DiskCache, Authenticator et HttpClient en passant une true valeur au dernier paramètre constructeur de ces classes.
IMPORTANT : Même si vous pouvez créer un travail avec un ensemble minimal de paramètres, nous vous recommandons fortement de remplir autant d'informations que possible afin de vous assurer que le processus de livraison se déroule bien.
$ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' );
$ client -> createJob ( $ job ); $ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' )
-> setComment ( ' Wait outside for an employee to come. ' )
-> setContactCompany ( ' KFC Paris Barbès ' )
-> setContactFirstName ( ' Martin ' )
-> setContactLastName ( ' Pont ' )
-> setContactPhone ( ' +33698348756 ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' )
-> setComment ( ' code: 3492B. 3e étage droite. Sonner à Durand. ' )
-> setContactCompany ( ' Durand associates. ' )
-> setContactFirstName ( ' Alex ' )
-> setContactLastName ( ' Durand ' )
-> setContactPhone ( ' +33634981209 ' )
-> setPackageDescription ( ' Pizza box. ' )
-> setClientReference ( ' 12345678ABCDE ' ); // Must be unique
$ client -> createJob ( $ job );Pour plus d'informations sur la planification des travaux, vous devez consulter notre documentation API.
$ job = new Stuart Job ();
$ pickupAt = new DateTime ( ' now ' , new DateTimeZone ( ' Europe/Paris ' ));
$ pickupAt -> add ( new DateInterval ( ' PT2H ' ));
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' )
-> setPickupAt ( $ pickupAt );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' );
$ client -> createJob ( $ job );Pour plus d'informations sur la planification des travaux, vous devez consulter notre documentation API.
Veuillez noter que cette fonctionnalité ne peut être utilisée qu'avec une seule goutte.
$ job = new Stuart Job ();
$ dropoffAt = new DateTime ( ' now ' , new DateTimeZone ( ' Europe/Paris ' ));
$ dropoffAt -> add ( new DateInterval ( ' PT2H ' ));
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' )
-> setDropoffAt ( $ dropoffAt );
$ client -> createJob ( $ job ); $ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' );
$ job -> setFleets ( array ( 1 ));
$ client -> createJob ( $ job ); $ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' );
$ now = new DateTime ();
$ later = new DateTime ();
$ later = $ later -> modify ( ' +15 minutes ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' )
-> setEndCustomerTimeWindowStart ( new DateTime ())
-> setEndCustomerTimeWindowEnd ( $ later );
$ client -> createJob ( $ job ); $ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' )
-> setComment ( ' Wait outside for an employee to come. ' )
-> setContactCompany ( ' KFC Paris Barbès ' )
-> setContactFirstName ( ' Martin ' )
-> setContactLastName ( ' Pont ' )
-> setContactPhone ( ' +33698348756 ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' )
-> setComment ( ' code: 3492B. 3e étage droite. Sonner à Durand. ' )
-> setContactCompany ( ' Durand associates. ' )
-> setContactFirstName ( ' Alex ' )
-> setContactLastName ( ' Durand ' )
-> setContactPhone ( ' +33634981209 ' )
-> setPackageDescription ( ' Red packet. ' )
-> setClientReference ( ' 12345678ABCDE ' ); // Must be unique;
$ job -> addDropOff ( ' 12 avenue claude vellefaux, 75010 Paris ' )
-> setPackageType ( ' small ' )
-> setComment ( ' code: 92A42. 2e étage gauche ' )
-> setContactFirstName ( ' Maximilien ' )
-> setContactLastName ( ' Lebluc ' )
-> setContactPhone ( ' +33632341209 ' )
-> setPackageDescription ( ' Blue packet. ' )
-> setClientReference ( ' ABCDE213124 ' ); // Must be unique
$ client -> createJob ( $ job );Une fois que vous avez réussi un emploi avec succès, vous pouvez le récupérer de cette façon:
$ jobId = 126532 ;
$ job = $ client -> getJob ( $ jobId );Ou lorsque vous créez un nouvel emploi:
$ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' );
$ jobWithRoute = $ client -> createJob ( $ job );
$ jobWithRoute -> getDeliveries (); L'API STUART détermine l'itinéraire optimal en votre nom, c'est pourquoi la méthode getDeliveries() renverra un tableau vide lorsque le travail n'a pas encore été créé. La méthode getDeliveries() renverra un tableau de Delivery dès que le travail sera créé.
Une fois que vous avez créé un emploi avec succès, vous pouvez l'annuler de cette manière:
$ jobId = 126532 ;
$ result = $ client -> cancelJob ( $ jobId ); Le résultat maintiendra la valeur booléenne true si le travail a été annulé. S'il y avait une erreur, il contiendra un objet d'erreur.
Pour plus de détails sur le fonctionnement de l'annulation, veuillez vous référer à notre section de documentation dédiée.
Avant de créer un emploi, vous pouvez le valider (contrôler la zone de livraison et le format d'adresse). La validation d'un travail est facultative et ne vous empêche pas de créer un emploi.
$ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' );
$ result = $ client -> validateJob ( $ job ); Le résultat maintiendra la valeur booléenne true si le travail est valide. S'il y avait une erreur, il contiendra un objet d'erreur.
Nous encourageons à valider une adresse pour savoir si nous pouvons y prendre / livrer. Le numéro de téléphone est facultatif uniquement pour les endroits où l'adresse est suffisamment spécifique.
$ client -> validatePickupAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );
$ client -> validatePickupAddress ( ' Pau Claris 186, 08037 Barcelona ' );
$ client -> validateDropoffAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );Une fois que vous avez créé avec succès une livraison, vous pouvez l'annuler de cette manière:
$ deliveryId = 126532 ;
$ result = $ client -> cancelDelivery ( $ deliveryId );Avant de créer un emploi, vous pouvez demander un prix. Demander un prix est facultatif et ne vous empêche pas de créer un emploi.
$ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' );
$ pricing = $ client -> getPricing ( $ job );
$ pricing -> amount ; // example: 11.5
$ pricing -> currency ; // example: "EUR"Avant de créer un emploi, vous pouvez demander un moment d'arrivée estimé à l'emplacement de ramassage (exprimé en quelques secondes). Demander ETA est facultatif et ne vous empêche pas de créer un emploi.
$ job = new Stuart Job ();
$ job -> addPickup ( ' 46 Boulevard Barbès, 75018 Paris ' );
$ job -> addDropOff ( ' 156 rue de Charonne, 75011 Paris ' )
-> setPackageType ( ' small ' );
$ eta = $ client -> getEta ( $ job );
$ eta -> eta ; // example: 672 Vous pouvez également envoyer des demandes par vous-même sans compter sur le StuartClient . Il vous permet d'utiliser des points de terminaison qui ne sont pas encore disponibles sur le StuartClient et de profiter de l' StuartAuthenticator .
$ apiResponse = $ httpClient -> performGet ( ' /v2/jobs?page=1 ' );
$ apiResponse -> success ();
$ apiResponse -> getBody ();