firewizard / fancourier-api
FanCourier API 消费者
v2.1.1
2024-04-03 07:40 UTC
Requires
- php: ^7.0
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^8.4
README
目录
安装
需求
- PHP >= 7.0
- ext-curl
- ext-json
Composer
通过 composer 需求此包
composer require firewizard/fancourier-api
手册
如果没有使用 composer,则需要手动要求 autoload.php
文件
require_once '/path/to/fancourier-api/src/autoload.php';
从 v1 版本开始的重大更改
- 移除了 Auth 类
- 移除了 SendsFile 特性
- getCities 城市数组键已更改(county 代替 judet,name 代替 localitate,exteriorKm 代替 km)
- CreateAwbBulk 的响应体现在是一个 AWB 数组,而不是 CreateAwb 响应对象的数组
- trackAwb 现在返回完整的活动列表,作为数组,而不仅仅是最后一条消息
- trackAwbBulk 现在返回完整的活动列表,作为数组,包含有关请求中所有 AWB 的信息。您可以根据 AWB 进行分组
用法
身份验证
通过提供 client_id
、username
和 password
创建一个新的 Fancourier.php
实例。
$clientId = 'your_client_id'; $username = 'your_username'; $password = 'your_password'; $fan = new Fancourier\Fancourier($clientId, $username, $password);
或者您可以使用测试实例静态方法
$fan = Fancourier\Fancourier::testInstance();
缓存身份验证令牌
默认情况下,总是调用身份验证,这意味着对于每个常规请求,都会有额外的请求来获取身份验证令牌。您可以在您的应用程序中修复此问题并缓存身份验证令牌。
首先,您需要创建一个新的类,该类实现了 Fancourier\AuthTokenCacheContract
class FancourierAuthCache implements AuthTokenCacheContract { const CACHE_KEY = 'fancourier_auth_token'; const CACHE_LIFETIME = 43200; //12 hrs public function get() { return Cache::get(static::CACHE_KEY); } public function set($value) { Cache::put(static::CACHE_KEY, $value, static::CACHE_LIFETIME); } }
然后,将此传递给主要的 Fancourier 对象
$api = new Fancourier(...); $api->useAuthTokenCache(new FancourierAuthCache());
注意:令牌每 24 小时根据 Fan Courier 更改,因此可能需要使用更低的缓存 TTL。
获取估计的运费
请求
$request = new Fancourier\Request\GetRates(); $request ->setParcels(1) ->setWeight(2) ->setRegion('Arad') ->setCity('Aciuta') ->setDeclaredValue(125);
响应
$response = $fan->getRates($request); if ($response->isOk()) { var_dump($response->getBody()); } else { var_dump($response->getErrorMessage()); }
创建 AWB
请求
$request = new Fancourier\Request\CreateAwb(); $request ->setParcels(1) ->setWeight(2) ->setReimbursement(125) ->setDeclaredValue(125) ->setNotes('testing notes') ->setContents('SKU-1, SKU-2') ->setRecipient("John Ivy") ->setPhone('0723000000') ->setRegion('Arad') ->setCity('Aciuta') ->setStreet('Str Lunga nr 1');
响应
$response = $fan->createAwb($request); if ($response->isOk()) { var_dump($response->getBody()); } else { var_dump($response->getErrorMessage()); }
创建 AWB 批量
请求
$batchRequest = new Fancourier\Request\CreateAwbBulk(); $request = new Fancourier\Request\CreateAwb(); $request ->setParcels(1) ->setWeight(2) ->setReimbursement(125) ->setDeclaredValue(125) ->setNotes('testing notes') ->setContents('SKU-1, SKU-2') ->setRecipient("John Ivy") ->setPhone('0723000000') ->setRegion('Arad') ->setCity('Aciuta') ->setStreet('Str Lunga nr 1') ; $batchRequest->append($request); $request ->setParcels(1) ->setWeight(1.5) ->setReimbursement(50) ->setDeclaredValue(50) ->setContents('SKU-7') ->setRecipient("Tester Testerson") ->setPhone('0722111000') ->setRegion('Sibiu') ->setCity('Sibiu') ->setStreet('Calea Bucuresti nr 1') ; $batchRequest->append($request); $response = $fan->createAwbBulk($batchRequest); if (!$response->isOk()) { //general error die($response->getErrorMessage()); } foreach ($response->getBody() as $awb) { echo $awb . "\n"; }
跟踪 AWB
请求
$request = new Fancourier\Request\TrackAwb(); $request->setAwb('2150900120086');
响应
$response = $fan->trackAwb($request); if ($response->isOk()) { print_r($response->getBody()); } else { print_r($response->getErrorMessage()); }
打印 AWB
请求
$request = new Fancourier\Request\PrintAwb(); $request->setAwb('2150900120086');
响应
$response = $fan->printAwb($request); if ($response->isOk()) { echo $response->getBody(); } else { var_dump($response->getErrorMessage()); }
打印 AWB Html
请求
$request = new Fancourier\Request\PrintAwbHtml(); $request->setAwb('2150900120086');
响应
$response = $fan->printAwbHtml($request); if ($response->isOk()) { echo $response->getBody(); } else { var_dump($response->getErrorMessage()); }
删除 AWB
请求
$request = new Fancourier\Request\DeleteAwb(); $request->setAwb('2150900120086');
响应
$response = $fan->deleteAwb($request); if ($response->isOk()) { var_dump($response->getBody()); } else { var_dump($response->getErrorMessage()); }
批量跟踪 awb
请求
$request = new Fancourier\Request\TrackAwbBulk(); $request->setAwbs(['2162900120047']);
响应
$response = $fan->trackAwbBulk($request); if ($response->isOk()) { print_r($response->getBody()); } else { var_dump("ERROR: " . $response->getErrorMessage()); }
获取城市
请求 - 此方法没有请求
响应 - 将返回城市数组(和其他信息)
$response = $fan->getCities(); if ($response->isOk()) { print_r($response->getBody()); } else { var_dump("ERROR: " . $response->getErrorMessage()); }
获取县
请求 - 此方法没有请求
响应 - 将返回县数组
$response = $fan->getCounties(); if ($response->isOk()) { print_r($response->getBody()); } else { var_dump("ERROR: " . $response->getErrorMessage()); }
获取服务
请求 - 此方法没有请求
响应 - 将返回包含所有服务的数组
$response = $fan->getServices(); if ($response->isOk()) { print_r($response->getBody()); } else { var_dump("ERROR: " . $response->getErrorMessage()); }
未实现的功能
欢迎您为以下功能提出 pull request
- 获取 puedo
- 获取街道
- 外部函数
- 创建承运人请求
- 删除承运人请求
- 总结
- 获取 awb 跟踪事件
- 银行转账
- 订单函数
- 分支机构
贡献
感谢您考虑为 Fancourier API 做出贡献,我们非常欢迎所有 pull request。
许可证
Fancourier Api 是开源软件,根据 MIT 许可证 许可。