Für eine vollständige Dokumentation aller von der Stuart -API angebotenen Endpunkte können Sie die Dokumentation von Stuart API besuchen.
Besuchen Sie 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 stuartphpdemoÜber Komponist:
$ composer require stuartapp/stuart-client-phpWenn der Komponist nicht installiert ist, installieren Sie es:
$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composerFügen Sie die Bibliothek Ihrem Projekt hinzu:
$ composer require stuartapp/stuart-client-phpUm alle Klassen aus dieser Bibliothek zu laden, führen Sie einfach das Autoload am Anfang des Stuart -Code aus
<?php
require __DIR__ . ' /vendor/autoload.php ' ;
$ environment = Stuart Infrastructure Environment:: SANDBOX ;Für Sandbox (Testumgebung, Kuriere sind Bots) https://dashboard.sandbox.stuart.com/setings/api
Für die Produktion (reale Welt, echte Kuriere) https://dashboard.stuart.com/setings/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 ); Sie können auch Ihre eigene Guzzle -Client -Instanz an den Konstruktor StuartHttpClient übergeben:
$ guzzleClient = new Guzzle Client ();
$ httpClient = new Stuart Infrastructure HttpClient ( $ authenticator , $ guzzleClient );Dies kann nützlich sein, wenn Sie Middlewares an den Guzzle -Client befestigen müssen.
Es wird dringend empfohlen, einen Caching -Mechanismus für den Authentifizierungsprozess hinzuzufügen. Erweitern Sie dazu einfach die PsrSimpleCacheCacheInterface -Klasse und implementieren Sie Ihre eigene Version.
Es gibt einen Cache, der auf einer Festplatte basiert, die Sie verwenden können, die Sie verwenden können. Um dies zu verwenden, ändern Sie einfach die Authentifizierungsklasseninitialisierung und übergeben Sie die Cache -Implementierung im Konstruktor:
$ diskCache = new Stuart Cache DiskCache ( " stuart_cache.txt " );
$ authenticator = new Stuart Infrastructure Authenticator ( $ environment , $ api_client_id , $ api_client_secret , $ diskCache ); Sie können die Klassen Diskcache, Authenticator und HTTPClient initialisieren, indem Sie einen true Wert an den letzten Konstruktorparameter dieser Klassen übergeben.
Wichtig : Selbst wenn Sie einen Job mit einem minimalen Parametern erstellen können, empfehlen wir dringend, so viele Informationen wie möglich zu füllen, um sicherzustellen, dass der Liefervorgang gut läuft.
$ 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 );Weitere Informationen zur Jobplanung finden Sie in unserer API -Dokumentation.
$ 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 );Weitere Informationen zur Jobplanung finden Sie in unserer API -Dokumentation.
Bitte beachten Sie, dass diese Funktion nur mit nur einem Tropfen verwendet werden kann.
$ 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 );Sobald Sie einen Job erfolgreich erstellt haben, können Sie ihn auf diese Weise abrufen:
$ jobId = 126532 ;
$ job = $ client -> getJob ( $ jobId );Oder wenn Sie einen neuen Job erstellen:
$ 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 (); Die Stuart -API bestimmt die optimale Route in Ihrem Namen. Aus diesem Grund gibt die Methode getDeliveries() ein leeres Array zurück, wenn der Job noch nicht erstellt wurde. Die Methode getDeliveries() gibt eine Reihe von Delivery zurück, sobald der Job erstellt wird.
Sobald Sie einen Job erfolgreich erstellt haben, können Sie ihn auf diese Weise stornieren:
$ jobId = 126532 ;
$ result = $ client -> cancelJob ( $ jobId ); Das Ergebnis hält den Booleschen Wert true wenn der Job abgesagt wurde. Wenn ein Fehler vorliegt, enthält es ein Fehlerobjekt.
Weitere Informationen zu der Funktionsweise der Stornierung finden Sie in unserem Abschnitt "Dedized Dokumentation".
Vor dem Erstellen eines Jobs können Sie ihn validieren (Steuerungsbereich und Adressformat). Die Überprüfung eines Jobs ist optional und verhindert nicht, dass Sie einen Job erstellen.
$ 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 ); Das Ergebnis hält den booleschen Wert true wenn der Job gültig ist. Wenn ein Fehler vorliegt, enthält es ein Fehlerobjekt.
Wir ermutigen, eine Adresse zu validieren, um herauszufinden, ob wir dort abholen / liefern können. Die Telefonnummer ist nur für die Orte, an denen die Adresse spezifisch genug ist.
$ client -> validatePickupAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );
$ client -> validatePickupAddress ( ' Pau Claris 186, 08037 Barcelona ' );
$ client -> validateDropoffAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );Sobald Sie eine Lieferung erfolgreich erstellt haben, können Sie sie auf diese Weise stornieren:
$ deliveryId = 126532 ;
$ result = $ client -> cancelDelivery ( $ deliveryId );Bevor Sie einen Job erstellen, können Sie eine Preise anfordern. Das Ansuchen einer Preise ist optional und hindert Sie nicht daran, einen Job zu erstellen.
$ 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"Bevor Sie einen Job erstellen, können Sie eine geschätzte Ankunftszeit am Abholort anfordern (ausgedrückt in Sekunden). Das Bitten nach ETA ist optional und hindert Sie nicht daran, einen Job zu erstellen.
$ 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 Sie können auch Anfragen selbst senden, ohne sich auf den StuartClient zu verlassen. Sie können Endpunkte verwenden, die noch nicht auf dem StuartClient verfügbar sind und den StuartAuthenticator genießen.
$ apiResponse = $ httpClient -> performGet ( ' /v2/jobs?page=1 ' );
$ apiResponse -> success ();
$ apiResponse -> getBody ();