Untuk dokumentasi lengkap dari semua titik akhir yang ditawarkan oleh Stuart API, Anda dapat mengunjungi dokumentasi Stuart API.
Kunjungi 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 Composer:
$ composer require stuartapp/stuart-client-phpJika komposer tidak diinstal, instal:
$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composerTambahkan perpustakaan ke proyek Anda:
$ composer require stuartapp/stuart-client-phpUntuk memuat semua kelas dari perpustakaan ini, cukup jalankan autoload di awal kode Stuart
<?php
require __DIR__ . ' /vendor/autoload.php ' ;
$ environment = Stuart Infrastructure Environment:: SANDBOX ;Untuk kotak pasir (lingkungan pengujian, kurir adalah bot) https://dashboard.sandbox.stuart.com/settings/api
Untuk produksi (dunia nyata, kurir nyata) 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 ); Anda juga dapat meneruskan instance klien Guzzle Anda sendiri ke konstruktor StuartHttpClient :
$ guzzleClient = new Guzzle Client ();
$ httpClient = new Stuart Infrastructure HttpClient ( $ authenticator , $ guzzleClient );Ini bisa berguna jika Anda perlu melampirkan tudung ke klien Guzzle.
Sangat disarankan menambahkan mekanisme caching untuk proses otentikasi. Untuk melakukannya, cukup perpanjang kelas PsrSimpleCacheCacheInterface dan terapkan versi Anda sendiri.
Ada cache berdasarkan disk yang tersedia di luar kotak untuk Anda gunakan. Untuk menggunakannya, cukup ubah inisialisasi kelas otentikasi dan lulus implementasi cache di konstruktor:
$ diskCache = new Stuart Cache DiskCache ( " stuart_cache.txt " );
$ authenticator = new Stuart Infrastructure Authenticator ( $ environment , $ api_client_id , $ api_client_secret , $ diskCache ); Anda dapat menginisialisasi kelas DiskCache, Authenticator, dan HTTPClient dengan memberikan nilai true ke parameter konstruktor terakhir dari kelas -kelas ini.
Penting : Bahkan jika Anda dapat membuat pekerjaan dengan serangkaian parameter minimal, kami sangat menyarankan Anda mengisi sebanyak mungkin informasi untuk memastikan proses pengiriman berjalan dengan baik.
$ 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 );Untuk informasi lebih lanjut tentang penjadwalan pekerjaan, Anda harus memeriksa dokumentasi API kami.
$ 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 );Untuk informasi lebih lanjut tentang penjadwalan pekerjaan, Anda harus memeriksa dokumentasi API kami.
Harap dicatat bahwa fitur ini hanya dapat digunakan dengan hanya satu dropoff.
$ 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 );Setelah Anda berhasil menciptakan pekerjaan, Anda dapat mengambilnya dengan cara ini:
$ jobId = 126532 ;
$ job = $ client -> getJob ( $ jobId );Atau saat Anda membuat pekerjaan baru:
$ 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 menentukan rute optimal atas nama Anda, itu sebabnya metode getDeliveries() akan mengembalikan array kosong ketika pekerjaan belum dibuat. Metode getDeliveries() akan mengembalikan serangkaian Delivery segera setelah pekerjaan dibuat.
Setelah Anda berhasil menciptakan pekerjaan, Anda dapat membatalkannya dengan cara ini:
$ jobId = 126532 ;
$ result = $ client -> cancelJob ( $ jobId ); Hasilnya akan menahan nilai boolean true jika pekerjaan dibatalkan. Jika ada kesalahan, itu akan berisi objek kesalahan.
Untuk detail lebih lanjut tentang cara kerja pembatalan, silakan merujuk ke bagian dokumentasi khusus kami.
Sebelum membuat pekerjaan, Anda dapat memvalidasi (Area Pengiriman Kontrol & Format Alamat). Memvalidasi pekerjaan adalah opsional dan tidak mencegah Anda menciptakan pekerjaan.
$ 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 ); Hasilnya akan menahan nilai boolean true jika pekerjaan itu valid. Jika ada kesalahan, itu akan berisi objek kesalahan.
Kami mendorong untuk memvalidasi alamat untuk mengetahui apakah kami dapat mengambil / mengirim di sana. Nomor telepon hanya opsional untuk tempat -tempat yang alamatnya cukup spesifik.
$ client -> validatePickupAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );
$ client -> validatePickupAddress ( ' Pau Claris 186, 08037 Barcelona ' );
$ client -> validateDropoffAddress ( ' Pau Claris, 08037 Barcelona ' , ' +34677777777 ' );Setelah Anda berhasil membuat pengiriman, Anda dapat membatalkannya dengan cara ini:
$ deliveryId = 126532 ;
$ result = $ client -> cancelDelivery ( $ deliveryId );Sebelum membuat pekerjaan, Anda dapat meminta harga. Meminta harga adalah opsional dan tidak mencegah Anda menciptakan pekerjaan.
$ 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"Sebelum membuat pekerjaan, Anda dapat meminta perkiraan waktu kedatangan di lokasi pickup (dinyatakan dalam detik). Meminta ETA adalah opsional dan tidak mencegah Anda menciptakan pekerjaan.
$ 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 Anda juga dapat mengirim permintaan sendiri tanpa mengandalkan StuartClient . Ini memungkinkan Anda untuk menggunakan titik akhir yang belum tersedia di StuartClient dan menikmati StuartAuthenticator .
$ apiResponse = $ httpClient -> performGet ( ' /v2/jobs?page=1 ' );
$ apiResponse -> success ();
$ apiResponse -> getBody ();