此版本的库专为fancourier api v2.0(基于 JSON 的响应)而设计。该代码可以运行,并且有所有 API 请求的示例,但是文档尚未准备好。
所有请求都有getData()
方法,该方法返回 API 的未处理响应。附加函数取决于响应对象类型来返回处理后的数据。
注意目前它设计为与 PHP 7.0 及更高版本一起使用。
但是,计划为所有函数添加类型和返回类型声明,这将要求至少达到 PHP 8.1
通过 Composer 获取包
composer require shusaura85/fancourier-api
如果不使用 Composer,则需要手动 require 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);
如果创建实例时指定的token为空,则会在第一次请求时自动生成。
要求
$ 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(接送服务)。
为他们创建 AWB 时,将地址设置为此处收到的 PUDO 地址,并使用所选 PUDO 的 ID 调用函数setPickupLocation(PUDO_ID)
。
要求
$ 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 ());
}
打印请求可以使用单个请求打印一份或多份 AWB。
您可以使用->setSize()
函数指定 AWB 的大小。可用选项有: empty 、 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 ());
}
您可以请求 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 ());
}
如果您想要 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 许可证授权的开源软件。