تم تصميم هذا الإصدار من المكتبة لـ fancourier api v2.0 (الاستجابات المستندة إلى JSON). الكود يعمل وهناك أمثلة لجميع طلبات واجهة برمجة التطبيقات، ومع ذلك، فإن الوثائق ليست جاهزة بعد.
تحتوي جميع الطلبات على طريقة getData()
التي تُرجع الاستجابة غير المعالجة لواجهة برمجة التطبيقات. تعتمد الوظائف الإضافية على نوع كائن الاستجابة لإرجاع البيانات المعالجة.
ملاحظة: في الوقت الحالي، تم تصميمه للعمل مع PHP 7.0 والإصدارات الأحدث.
ومع ذلك، فإن الخطة تتمثل في إضافة إعلانات النوع وإرجاع النوع لجميع الوظائف التي ستدفع المتطلبات إلى PHP 8.1 على الأقل
تتطلب الحزمة عبر الملحن
composer require shusaura85/fancourier-api
إذا تم استخدامه بدون مؤلف، فستحتاج إلى طلب ملف autoload.php
يدويًا
require_once ' /path/to/fancourier-api/src/autoload.php ' ;
في الوقت الحالي، الوثائق الكاملة والسليمة ليست متاحة بعد. ومع ذلك، هناك أمثلة لكل نوع طلب يمكنك تقديمه.
بداخلها ستجد أيضًا تعليقات تحتوي على قائمة وظائف كاملة لكل request
response
object
.
أنشئ نسخة جديدة من Fancourier.php
توفر client_id
username
password
والرمز token
.
$ clientId = ' your_client_id ' ;
$ username = ' your_username ' ;
$ password = ' your_password ' ;
$ token = ' load from cache or leave as empty string ' ;
$ fan = new Fancourier Fancourier ( $ clientId , $ username , $ password , $ token );
أو يمكنك استخدام الطريقة الثابتة لمثيل الاختبار:
$ fan = Fancourier Fancourier:: testInstance ( $ token );
يبلغ عمر الرمز المميز الذي تم إنشاؤه 24 ساعة ويجب تحديثه بعد هذه الفترة. يمكنك الحصول على الرمز المميز الذي تم إنشاؤه باستخدام الوظيفة:
$force_refresh = false;
$token = $fan->getToken($force_refresh);
إذا كان الرمز المميز المحدد فارغًا عند إنشاء المثيل، فسيتم إنشاؤه تلقائيًا عند الطلب الأول.
طلب
$ request = new Fancourier Request GetCosts ();
$ request
-> setParcels ( 1 )
-> setWeight ( 1 )
-> setCounty ( ' Arad ' )
-> setCity ( ' Aciuta ' )
-> setDeclaredValue ( 125 );
إجابة
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ()); // raw data
// or just the information you want
echo " extraKmCost: " . $ response -> getKmCost (). ' <br /> ' ;
echo " weightCost: " . $ response -> getWeightCost (). ' <br /> ' ;
echo " insuranceCost: " . $ response -> getInsuranceCost (). ' <br /> ' ;
echo " optionsCost: " . $ response -> getOptionsCost (). ' <br /> ' ;
echo " fuelCost: " . $ response -> getFuelCost (). ' <br /> ' ;
echo " costNoVAT: " . $ response -> getCost (). ' <br /> ' ;
echo " vat: " . $ response -> getCostVat (). ' <br /> ' ;
echo " total: " . $ response -> getCostTotal (). ' <br /> ' ;
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
طلب
$ awb = new Fancourier Objects AwbIntern ();
$ awb
-> setService ( ' Cont Colector ' )
-> setPaymentType ( Fancourier Request CreateAwb:: TYPE_SENDER )
-> setParcels ( 1 )
-> setWeight ( 1 ) // in kg
-> setReimbursement ( 199.99 ) // suma de incasat
-> setDeclaredValue ( 1000 )
-> setSizes ( 10 , 5 , 1 ) // in cm
-> setNotes ( ' testing notes ' )
-> setContents ( ' SKU-1, SKU-2 ' )
-> setRecipientName ( " John Ivy " )
-> setPhone ( ' 0723000000 ' )
-> setCounty ( ' Arad ' )
-> setCity ( ' Aciuta ' )
-> setStreet ( ' Str Lunga ' )
-> setNumber ( 1 )
-> addOption ( ' S ' )
-> addOption ( ' X ' );
$ request = new Fancourier Request CreateAwb ();
$ request -> addAwb ( $ awb );
إجابة
$ response = $ fan -> createAwb ( $ request );
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ()); // raw data
// or the AWBIntern objects updated with the response information
$ al = $ response -> getAll ();
echo " Count: " . count ( $ al ). " <br /> " ;
foreach ( $ al as $ awbr )
{
if ( $ awbr -> hasErrors ())
{
print_r ( $ awbr -> getErrors ());
}
else
{
echo " AWB: " . $ awbr -> getAwb (). " <br /> " ;
}
}
} else {
var_dump ( $ response -> getErrorMessage ());
}
على عكس الإصدار السابق، لم يعد هناك طلب CreateAwbBulk. ما عليك سوى إنشاء أكبر عدد ممكن من كائنات AWBIntern وإضافتها إلى الطلب
طلب
$ request = new Fancourier Request CreateAwb ();
// create the first awb
$ awb = new Fancourier Objects AwbIntern ();
$ awb
-> setService ( ' Cont Colector ' )
. . . .
-> addOption ( ' X ' );
// add it to the request
$ request -> addAwb ( $ awb );
// create another awb
$ awb = new Fancourier Objects AwbIntern ();
$ awb
-> setService ( ' Cont Colector ' )
. . . .
-> addOption ( ' X ' );
// add it to the request
$ request -> addAwb ( $ awb );
// create another awb
$ awb = new Fancourier Objects AwbIntern ();
$ awb
-> setService ( ' Cont Colector ' )
. . . .
-> addOption ( ' X ' );
// add it to the request
$ request -> addAwb ( $ awb );
إجابة
$ response = $ fan -> createAwb ( $ request );
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ()); // raw data
// or the AWBIntern objects updated with the response information
$ al = $ response -> getAll ();
echo " Count: " . count ( $ al ). " <br /> " ;
foreach ( $ al as $ awbr )
{
if ( $ awbr -> hasErrors ())
{
print_r ( $ awbr -> getErrors ());
}
else
{
echo " AWB: " . $ awbr -> getAwb (). " <br /> " ;
}
}
} else {
var_dump ( $ response -> getErrorMessage ());
}
طلب
$ request = new Fancourier Request TrackAwb ();
$ request
-> setAwb ( ' 2150900120086 ' );
إجابة
$ response = $ fan -> trackAwb ( $ request );
if ( $ response -> isOk ()) {
print_r ( $ response -> getData ()); // raw data
print_r ( $ response -> getAll ()); // array of AwbTracker objects
} else {
var_dump ( $ response -> getErrorMessage ());
}
على عكس الإصدار السابق، يمكنك استخدام نفس كائن TrackAwb() وإضافة أي عدد تريده من عناصر AWB للتتبع
طلب
$ request = new Fancourier Request TrackAwb ();
$ request
-> addAwb ( ' 2150900120084 ' )
-> addAwb ( ' 2150900120085 ' )
-> addAwb ( ' 2150900120086 ' );
إجابة
$ response = $ fan -> trackAwb ( $ request );
if ( $ response -> isOk ()) {
print_r ( $ response -> getData ()); // raw data
print_r ( $ response -> getAll ()); // array of AwbTracker objects
} else {
var_dump ( $ response -> getErrorMessage ());
}
يمكنك الآن بسهولة الحصول على معلومات حول مواقع FANBox وPayPoint المتاحة. يتصل FAN Courier هناك بـ PUDO (Pick Up Drop Off).
عند إنشاء AWB لهم، قم بتعيين العنوان إلى عنوان PUDO كما هو مستلم هنا بالإضافة إلى استدعاء الوظيفة setPickupLocation(PUDO_ID)
بمعرف PUDO المحدد.
طلب
$ request = new Fancourier Request GetPudo ();
$ request
-> setType ( Fancourier Request GetPudo:: PUDO_FANBOX );
إجابة
$ response = $ fan -> getPudo ( $ request );
if ( $ response -> isOk ()) {
print_r ( $ response -> getData ()); // raw data
print_r ( $ response -> getAll ()); // array of PUDO objects
} else {
var_dump ( $ response -> getErrorMessage ());
}
يمكن لطلب الطباعة طباعة واحدة أو أكثر من AWBs باستخدام طلب واحد.
يمكنك تحديد حجم AWB باستخدام الدالة ->setSize()
. الخيارات المتاحة هي: فارغة ، A4 ، A5 و A6 . لا يمكن استخدام A6 إلا مع خيار ePod.
طباعة PDF هي الوضع الافتراضي للطباعة.
يرجى ملاحظة أنه لا يمكنك طلب ZPL وPDF في نفس الوقت. سيؤدي استخدام setPdf()
إلى تعطيل خيار ZPL تلقائيًا إذا تم ضبطه.
طلب
$ request = new Fancourier Request PrintAwb ();
$ request
-> setPdf ( true )
-> setAwb ( ' 2150900120086 ' );
إجابة
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
يمكنك طلب AWB بتنسيق ZPL (لغة برمجة Zebra) للاستخدام مع طابعة الملصقات.
يرجى ملاحظة أنه لا يمكنك طلب ZPL وPDF في نفس الوقت. سيؤدي استخدام setZpl()
إلى تعطيل خيار PDF تلقائيًا إذا تم ضبطه.
طلب
$ request = new Fancourier Request PrintAwb ();
$ request
-> setZpl ( true )
-> setAwb ( ' 2150900120086 ' );
إجابة
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
إذا كنت تريد AWB بتنسيق HTML، فما عليك سوى استخدام ->setPdf(false) للحصول على بيانات HTML بدلاً من PDF.
طلب
$ request = new Fancourier Request PrintAwb ();
$ request
-> setPdf ( false )
-> setAwb ( ' 2150900120086 ' );
إجابة
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
طلب
$ request = new Fancourier Request DeleteAwb ();
$ request -> setAwb ( ' 2150900120086 ' );
إجابة
$ response = $ fan -> deleteAwb ( $ request );
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ());
} else {
var_dump ( $ response -> getErrorMessage ());
}
fancourier api هو برنامج مفتوح المصدر مرخص بموجب ترخيص MIT.