shusaura85/fancourier-api

FanCourier API v2.0 库

v2.0.13 2024-09-03 20:47 UTC

This package is auto-updated.

Last update: 2024-09-04 11:32:38 UTC


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_idusernamepasswordtoken来创建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的大小。可用选项为:A4A5A6A6只能与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许可证许可。