shusaura85 / fancourier-api
FanCourier API v2.0 库
Requires
- php: >=7.0
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^8.4
README
目录
信息
本库版本是为FANCourier API v2.0(基于JSON的响应)设计的。代码可以工作,并为所有API请求提供了示例,但是文档尚未准备好。
所有请求都有getData()
方法,该方法返回API的未处理响应。其他函数根据响应对象类型返回处理后的数据。
安装
需求
- PHP >= 7.0
注意 目前它设计为与PHP 7.0及更高版本一起工作。
然而,计划是为所有函数添加类型和返回类型声明,这将使要求至少达到PHP 8.1。
Composer
通过composer安装包
composer require shusaura85/fancourier-api
手册
如果没有使用composer,您需要手动引入autoload.php
文件。
require_once '/path/to/fancourier-api/src/autoload.php';
使用
目前尚未提供完整和适当的文档。然而,对于您可以进行的每种请求类型都有示例。
在它们内部,您还可以找到关于每个请求
、响应
和对象
的完整函数列表的注释。
认证
通过提供client_id
、username
、password
和token
来创建Fancourier.php
的新实例。
$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);
生成的token有效期为24小时,在此之后必须刷新。您可以使用该函数获取生成的token
$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
请求
$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()); }
批量创建AWB
与上一版本不同,不再有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()); }
跟踪AWB
请求
$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()); }
批量跟踪AWB
与上一版本不同,您现在可以使用相同的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
您现在可以轻松获取有关可用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
打印请求可以使用单个请求打印一个或多个AWB。
您可以使用->setSize()
函数指定AWB的大小。可用选项为:空、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
您可以使用ZPL格式(Zebra编程语言)请求AWB,以便与标签打印机一起使用。
请注意,您不能同时请求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
如果您希望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()); }
删除AWB
请求
$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许可证许可。