Para una documentación completa de todos los puntos finales ofrecidos por la API de Stuart, puede visitar la documentación de la API de Stuart.
Visita 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 stuartphpdemoVía compositor:
$ composer require stuartapp/stuart-client-phpSi el compositor no está instalado, instálelo:
$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composerAgregue la biblioteca a su proyecto:
$ composer require stuartapp/stuart-client-phpPara cargar todas las clases de esta biblioteca, simplemente ejecute el Autoload al comienzo del código Stuart
<?php
require __DIR__ . ' /vendor/autoload.php ' ;
$ environment = Stuart Infrastructure Environment:: SANDBOX ;Para Sandbox (entorno de prueba, los correos son bots) https://dashboard.sandbox.stuart.com/settings/api
Para la producción (Real World, Real Couriers) 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 ); También puede pasar su propia instancia de cliente Guzzle al constructor StuartHttpClient :
$ guzzleClient = new Guzzle Client ();
$ httpClient = new Stuart Infrastructure HttpClient ( $ authenticator , $ guzzleClient );Esto puede ser útil si necesita unir los artículos intermedios al cliente Guzzle.
Se recomienda agregar un mecanismo de almacenamiento en caché para el proceso de autenticación. Para hacerlo, simplemente amplíe la clase PsrSimpleCacheCacheInterface e implementa su propia versión.
Hay un caché basado en el disco disponible para usar. Para usarlo, simplemente modifique la inicialización de la clase de autenticación y pase la implementación de caché en el constructor:
$ diskCache = new Stuart Cache DiskCache ( " stuart_cache.txt " );
$ authenticator = new Stuart Infrastructure Authenticator ( $ environment , $ api_client_id , $ api_client_secret , $ diskCache ); Puede inicializar las clases de diskcache, autenticador y httpclient pasando un valor true al último parámetro constructor de estas clases.
Importante : incluso si puede crear un trabajo con un conjunto mínimo de parámetros, le recomendamos encarecidamente que llene tanta información como pueda para garantizar que el proceso de entrega vaya 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 );Para obtener más información sobre la programación de trabajo, debe consultar nuestra documentación de 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 );Para obtener más información sobre la programación de trabajo, debe consultar nuestra documentación de API.
Tenga en cuenta que esta característica solo se puede usar con una sola caída.
$ 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 );Una vez que creó con éxito un trabajo, puede recuperarlo de esta manera:
$ jobId = 126532 ;
$ job = $ client -> getJob ( $ jobId );O cuando crea un nuevo trabajo:
$ 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 (); La API de Stuart determina la ruta óptima en su nombre, es por eso que el método getDeliveries() devolverá una matriz vacía cuando el trabajo aún no se haya creado. El método getDeliveries() devolverá una variedad de Delivery tan pronto como se cree el trabajo.
Una vez que creó con éxito un trabajo, puede cancelarlo de esta manera:
$ jobId = 126532 ;
$ result = $ client -> cancelJob ( $ jobId ); El resultado mantendrá el valor booleano true si el trabajo fue cancelado. Si hubo un error, contendrá un objeto de error.
Para obtener más detalles sobre cómo funciona la cancelación, consulte nuestra sección de documentación dedicada.
Antes de crear un trabajo, puede validarlo (área de entrega de control y formato de dirección). Validar un trabajo es opcional y no le impide crear un trabajo.
$ 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 ); El resultado mantendrá el valor booleano true si el trabajo es válido. Si hubo un error, contendrá un objeto de error.
Animamos a validar una dirección para averiguar si podemos recoger / entregar allí. El número de teléfono es opcional solo para aquellos lugares donde la dirección es lo suficientemente específica.
$ client -> validatePickupAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );
$ client -> validatePickupAddress ( ' Pau Claris 186, 08037 Barcelona ' );
$ client -> validateDropoffAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );Una vez que creó con éxito una entrega, puede cancelarla de esta manera:
$ deliveryId = 126532 ;
$ result = $ client -> cancelDelivery ( $ deliveryId );Antes de crear un trabajo, puede solicitar un precio. Pedir un precio es opcional y no le impide crear un trabajo.
$ 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"Antes de crear un trabajo, puede solicitar un tiempo estimado de llegada a la ubicación de la recolección (expresado en segundos). Pedir ETA es opcional y no le impide crear un trabajo.
$ 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 También puede enviar solicitudes por su cuenta sin confiar en el StuartClient . Le permite usar puntos finales que aún no están disponibles en el StuartClient y disfrutar del StuartAuthenticator .
$ apiResponse = $ httpClient -> performGet ( ' /v2/jobs?page=1 ' );
$ apiResponse -> success ();
$ apiResponse -> getBody ();