Stuart API가 제공하는 모든 엔드 포인트에 대한 전체 문서를 보려면 Stuart API 문서를 방문 할 수 있습니다.
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작곡가를 통해 :
$ composer require stuartapp/stuart-client-php작곡가가 설치되지 않은 경우 설치하십시오.
$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer프로젝트에 라이브러리 추가 :
$ composer require stuartapp/stuart-client-php이 라이브러리에서 모든 클래스를로드하려면 스튜어트 코드의 시작 부분에서 자동로드를 실행하십시오.
<?php
require __DIR__ . ' /vendor/autoload.php ' ;
$ environment = Stuart Infrastructure Environment:: SANDBOX ;샌드 박스 (테스트 환경의 경우 택배) https://dashboard.sandbox.stuart.com/settings/api
생산 (실제, 실제 택배) 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 ); 자신의 Guzzle 클라이언트 인스턴스를 StuartHttpClient 생성자로 전달할 수도 있습니다.
$ guzzleClient = new Guzzle Client ();
$ httpClient = new Stuart Infrastructure HttpClient ( $ authenticator , $ guzzleClient );중간 전위를 Guzzle 클라이언트에 첨부 해야하는 경우 유용 할 수 있습니다.
인증 프로세스에 캐싱 메커니즘을 추가하는 것이 좋습니다. 그렇게하려면 PsrSimpleCacheCacheInterface 클래스를 확장하고 자신의 버전을 구현하십시오.
사용할 수있는 디스크를 기반으로하는 캐시가 있습니다. 이를 사용하려면 인증 클래스 초기화를 수정하고 생성자에서 캐시 구현을 전달합니다.
$ diskCache = new Stuart Cache DiskCache ( " stuart_cache.txt " );
$ authenticator = new Stuart Infrastructure Authenticator ( $ environment , $ api_client_id , $ api_client_secret , $ diskCache ); 이 클래스의 마지막 생성자 매개 변수에 true 값을 전달하여 DiskCache, Authenticator 및 HttpClient 클래스를 초기화 할 수 있습니다.
중요 : 최소한의 매개 변수 세트로 작업을 만들 수 있더라도 전달 프로세스가 제대로 진행되도록 최대한 많은 정보를 작성하는 것이 좋습니다 .
$ 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 );작업 일정에 대한 자세한 내용은 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 );작업 일정에 대한 자세한 내용은 API 문서를 확인해야합니다.
이 기능은 한 번의 하차 만으로만 사용할 수 있습니다.
$ 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 );일자리를 성공적으로 만든 후에는 다음과 같은 방식으로 검색 할 수 있습니다.
$ jobId = 126532 ;
$ job = $ client -> getJob ( $ jobId );또는 새 작업을 만들 때 :
$ 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 (); Stuart API는 귀하를 대신하여 최적의 경로를 결정하므로 작업이 아직 생성되지 않은 경우 getDeliveries() 메소드가 빈 배열을 반환합니다. getDeliveries() 메소드는 작업이 생성되는 즉시 Delivery 배열을 반환합니다.
일자리를 성공적으로 만들었을 때 이러한 방식으로 작업을 취소 할 수 있습니다.
$ jobId = 126532 ;
$ result = $ client -> cancelJob ( $ jobId ); 작업이 취소 된 경우 결과는 부울 가치를 true 하게 유지합니다. 오류가 있으면 오류 객체가 포함됩니다.
취소 작동 방식에 대한 자세한 내용은 전용 문서 섹션을 참조하십시오.
작업을 만들기 전에 작업을 확인할 수 있습니다 (제어 전달 영역 및 주소 형식). 작업을 확인하는 것은 선택 사항 이며 작업을 만드는 것을 방해하지 않습니다.
$ 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 ); 작업이 유효 한 경우 결과는 부울 가치를 true 하게 유지합니다. 오류가 있으면 오류 객체가 포함됩니다.
우리는 주소를 검증하여 픽업 / 배송 할 수 있는지 확인하는 것이 좋습니다. 전화 번호는 주소가 충분히 특정한 장소에 대해서만 선택 사항입니다.
$ client -> validatePickupAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );
$ client -> validatePickupAddress ( ' Pau Claris 186, 08037 Barcelona ' );
$ client -> validateDropoffAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );성공적으로 배송을 만든 후에는 다음과 같은 방식으로 배달을 취소 할 수 있습니다.
$ deliveryId = 126532 ;
$ result = $ client -> cancelDelivery ( $ deliveryId );작업을 만들기 전에 가격을 요청할 수 있습니다. 가격을 요구하는 것은 선택 사항 이며 작업을 만드는 것을 막지는 않습니다.
$ 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"작업을 만들기 전에 픽업 위치 (초로 표현 됨)에 도착하는 시간을 요청할 수 있습니다. ETA를 요청하는 것은 선택 사항 이며 작업을 만드는 것을 막지는 않습니다.
$ 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 StuartClient 에 의존하지 않고도 요청을 보낼 수도 있습니다. StuartClient 에서 아직 사용할 수없는 엔드 포인트를 사용할 수 있으며 StuartAuthenticator 즐길 수 있습니다.
$ apiResponse = $ httpClient -> performGet ( ' /v2/jobs?page=1 ' );
$ apiResponse -> success ();
$ apiResponse -> getBody ();