للحصول على وثائق كاملة لجميع نقاط النهاية التي تقدمها 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 ;بالنسبة إلى 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 ); يمكنك تهيئة فئات DiskCache و Authenticator و HTTPClient عن طريق تمرير قيمة true إلى معلمة مُنشئ الأخيرة لهذه الفئات.
هام : حتى لو كان بإمكانك إنشاء وظيفة ذات مجموعة أقل من المعلمات ، فإننا نوصي بشدة بملء أكبر عدد ممكن من المعلومات لضمان تسير عملية التسليم بشكل جيد.
$ 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 المسار الأمثل نيابة عنك ، ولهذا السبب ستعيد طريقة 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 ();