有關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為了加載此庫中的所有類,只需在Stuart代碼的開頭執行自動加載
<?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 Client實例傳遞到StuartHttpClient構造函數:
$ guzzleClient = new Guzzle Client ();
$ httpClient = new Stuart Infrastructure HttpClient ( $ authenticator , $ guzzleClient );如果您需要將中間件附加到Guzzle Client,這可能很有用。
強烈建議在身份驗證過程中添加緩存機制。為此,只需擴展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 ();