firewizard/fancourier-api

FanCourier API 消费者

v2.1.1 2024-04-03 07:40 UTC

This package is auto-updated.

Last update: 2024-09-03 08:32:47 UTC


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 代替 judetname 代替 localitateexteriorKm 代替 km
  • CreateAwbBulk 的响应体现在是一个 AWB 数组,而不是 CreateAwb 响应对象的数组
  • trackAwb 现在返回完整的活动列表,作为数组,而不仅仅是最后一条消息
  • trackAwbBulk 现在返回完整的活动列表,作为数组,包含有关请求中所有 AWB 的信息。您可以根据 AWB 进行分组

用法

身份验证

通过提供 client_idusernamepassword 创建一个新的 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 许可证 许可。