allekurier/api_v2

v1.0.1 2022-08-30 10:05 UTC

This package is auto-updated.

Last update: 2024-09-29 05:49:15 UTC


README

Autor Licencja

需求

该库有以下需求

  • PHP 7.4 或更高版本;
  • PHP 的 "ext-curl" 扩展;
  • PHP 的 "ext-json" 扩展。

安装

为了安装库,请使用以下命令

composer require allekurier/api_v2

使用API

认证

生成令牌

要使用API命令,您需要先登录。登录将生成一个令牌,然后该令牌将被用于调用每个其他命令。

令牌有效期为2周。在此之后,您需要重新登录。

查询

https://api.allekurier.pl/user/login

{
    "email": "EMAIL_KLIENTA",
    "password": "HASLO_KLIENTA"
}

其中

  • EMAIL_KLIENTA:客户账户的电子邮件地址。
  • HASLO_KLIENTA:分配给客户账户的密码。
响应

响应中返回了一些字段,其中最重要的是以下内容

  • token:认证令牌。

示例

{
    "failure": false,
    "successful": true,
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE2NTc1MzkwNzYsImV4cCI6MTY1ODc0ODY3Niwicm9sZXMiOlsiUk9MRV9VU0VSIl0sImlkIjoxLCJoaWQiOiI1NmNlNmRhMC0yNDlkLTQyMTAtOGZjOC0zZDgxN2M2NTQ2ZDQiLCJ1c2VybmFtZSI6ImRvbWluaWsua29jdWpAYWxsZWt1cmllci5wbCJ9.MJxT7CYjPcNT2NYt22MQxXFZ1kKbUwacoXksBxwf-mjfJaf2Ukh2Pk98qwpDcte6jW48pQyozXQ8seiJDrGYHeBpUrX2tBLt7yVqVXAFJFBW-J6qTyIGZDgT-sUxdcsqqSZhofCuFSb_xbbdc_yFzHDmNzkXTylTM3p9tKGnSoqFFMN6n-BPhaW3vf6_Diht6BWtdDU51k8uUqsn-mjAgEB9Begzz5E2fO7NthroXHVC5EqFGIs2nfo3Oi7cqHWsIODbreFPd2lg4PaDiwi9GeCae8Ka7X1My0QLyAX_CDZ5uyTLWp8p0RgEtthELSpmCgXsZ-J785NUj40ROfaLZQ"
} 
PHP
$api = new \AlleKurier\ApiV2\Client();
$request = new \AlleKurier\ApiV2\Command\User\Login\LoginRequest(
    'EMAIL_KLIENTA',
    'HASLO_KLIENTA'
);

/** @var \AlleKurier\ApiV2\Command\User\Login\LoginResponse|\AlleKurier\ApiV2\Lib\Errors\ErrorsInterface $response */
$response = $api->call($request);

if ($response->hasErrors()) {
    foreach ($response->getErrors() as $error) {
        echo $error->getMessage() . PHP_EOL;
        echo $error->getCode() . PHP_EOL;
        echo $error->getLevel() . PHP_EOL;
    }
} else {
    $loginData = $response->getLoginData();
}

其中

  • EMAIL_KLIENTA:客户账户的电子邮件地址。
  • HASLO_KLIENTA:分配给客户账户的密码。

如果没有返回错误,则$loginData包含响应中的数据。目前这是认证令牌,可以通过调用getToken()方法获取,即

$token = $loginData->getToken();

使用令牌

为了连接到API,您需要提供通过调用登录命令生成的令牌。

如果客户是使用便捷退货服务的商店的所有者,则还可以提供商店代码,以便为使用该商店的API命令获取结果,这些结果不涉及客户账户,而是涉及选择的商店。

认证数据必须以以下方式存在于HTTP头中

  • Authorization:必须是“BEARER”类型并包含令牌。
  • MailBox-Code:如果存在,则必须包含涉及调用的商店代码。

在本库中,可以通过调用以下代码获取这些数据

$credentials = new AlleKurier\ApiV2\Credentials('TOKEN_AUTORYZACYJNY', 'KOD_SKLEPU_KLIENTA');
$api = new AlleKurier\ApiV2\Client($credentials);

其中

  • TOKEN_AUTORYZACYJNY:客户登录后获得的令牌。
  • KOD_SKLEPU_KLIENTA:需要调用API命令的商店代码。

返回的数据

返回的数据始终以JSON格式。为了检查是否出现错误,可以检查以下元素之一

  • failure:当返回错误时设置为true
  • successful:当没有错误时设置为true

这两个元素始终在API的每个响应中返回。

出现错误时返回以下元素

  • errors:错误数组。
  • mainError:主要错误。

每个错误 - 无论是在errors数组中还是在mainError键中 - 都包含以下元素

  • message:错误描述。
  • code:错误代码。可能返回null值。
  • level:错误级别:可用的级别有noticewarningcritical

示例

{
    "errors":[
        {
            "message":"Zam\u00f3wienie nie istnieje",
            "code":null,
            "level":"critical"
        }
    ],
    "mainError":{
        "message":"Zam\u00f3wienie nie istnieje",
        "code":null,
        "level":"critical"
    },
    "failure":true,
    "successful":false
}

命令

有关所有可用命令的信息可以在以下地址找到:https://api.allekurier.pl/api/doc

获取数据包裹

PHP
$request = new AlleKurier\ApiV2\Command\GetOrderByTrackingNumber\GetOrderByTrackingNumberRequest(
    'NUMER_SLEDZENIA'
);

/** @var \AlleKurier\ApiV2\Command\Order\GetByTrackingNumber\GetByTrackingNumberResponse|\AlleKurier\ApiV2\Lib\Errors\ErrorsInterface $response */
$response = $api->call($request);

if ($response->hasErrors()) {
    foreach ($response->getErrors() as $error) {
        echo $error->getMessage() . PHP_EOL;
        echo $error->getCode() . PHP_EOL;
        echo $error->getLevel() . PHP_EOL;
    }
} else {
    if (!is_null($response->getOrder()->getOrderReturn())) {
        echo $response->getOrder()->getOrderReturn()->getNumber() . PHP_EOL;
    }
    echo $response->getOrder()->getHid() . PHP_EOL;
    echo $response->getOrder()->getUser()->getEmail() . PHP_EOL;
    echo $response->getOrder()->getSender()->getName() . PHP_EOL;
    echo $response->getOrder()->getSender()->getCompany() . PHP_EOL;
    echo $response->getOrder()->getSender()->getAddress() . PHP_EOL;
    echo $response->getOrder()->getSender()->getPostalCode() . PHP_EOL;
    echo $response->getOrder()->getSender()->getCity() . PHP_EOL;
    echo $response->getOrder()->getSender()->getCountry()->getCode() . PHP_EOL;
    echo $response->getOrder()->getSender()->getCountry()->getName() . PHP_EOL;
    echo $response->getOrder()->getSender()->getState() . PHP_EOL;
    echo $response->getOrder()->getSender()->getPhone() . PHP_EOL;
    echo $response->getOrder()->getSender()->getEmail() . PHP_EOL;
    if (!empty($response->getOrder()->getSender()->getAccessPoint())) {
        echo $response->getOrder()->getSender()->getAccessPoint()->getCode() . PHP_EOL;
        echo $response->getOrder()->getSender()->getAccessPoint()->getName() . PHP_EOL;
        echo $response->getOrder()->getSender()->getAccessPoint()->getAddress() . PHP_EOL;
        echo $response->getOrder()->getSender()->getAccessPoint()->getPostalCode() . PHP_EOL;
        echo $response->getOrder()->getSender()->getAccessPoint()->getCity() . PHP_EOL;
        echo $response->getOrder()->getSender()->getAccessPoint()->getDescription() . PHP_EOL;
        echo $response->getOrder()->getSender()->getAccessPoint()->getOpenHours() . PHP_EOL;
    }
    if (!is_null($response->getOrder()->getOrderReturn())) {
        foreach ($response->getOrder()->getOrderReturn()->getAdditionalFields()->getAll() as $additionalField) {
            echo
                '"' . $additionalField->getName() . '";' .
                '"' . $additionalField->getTitle() . '";' .
                '"' . $additionalField->getValue() . '";' .
                PHP_EOL;
        }
    }
}

其中

  • NUMER_SLEDZENIA:包裹的跟踪号码或扫描在运单上的号码。
cURL
curl -X GET \
  https://api.allekurier.pl/order/trackingnumber/NUMER_SLEDZENIA \
  -H 'accept: application/json' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'authorization: BEARER TOKEN_AUTORYZACYJNY'

其中

  • TOKEN_AUTORYZACYJNY:认证令牌。
  • NUMER_SLEDZENIA:包裹的跟踪号码或扫描在运单上的号码。

获取当天发送的包裹

PHP
$request = new AlleKurier\ApiV2\Command\GetSentOrders\GetSentOrdersRequest(
    'DATA'
);

/** @var \AlleKurier\ApiV2\Command\Order\GetSentOrders\GetSentOrdersResponse|\AlleKurier\ApiV2\Lib\Errors\ErrorsInterface $response */
$response = $api->call($request);

if ($response->hasErrors()) {
    foreach ($response->getErrors() as $error) {
        echo $error->getMessage() . PHP_EOL;
        echo $error->getCode() . PHP_EOL;
        echo $error->getLevel() . PHP_EOL;
    }
} else {
    foreach ($response->getOrders() as $order) {
        if (!is_null($order->getOrderReturn())) {
            echo $order->getOrderReturn()->getNumber() . PHP_EOL;
        }
        echo $order->getHid() . PHP_EOL;
        echo $order->getStatus() . PHP_EOL;
        echo $order->getUser()->getEmail() . PHP_EOL;
        echo $order->getSender()->getName() . PHP_EOL;
        echo $order->getSender()->getCompany() . PHP_EOL;
        echo $order->getSender()->getAddress() . PHP_EOL;
        echo $order->getSender()->getPostalCode() . PHP_EOL;
        echo $order->getSender()->getCity() . PHP_EOL;
        echo $order->getSender()->getCountry()->getCode() . PHP_EOL;
        echo $order->getSender()->getCountry()->getName() . PHP_EOL;
        echo $order->getSender()->getState() . PHP_EOL;
        echo $order->getSender()->getPhone() . PHP_EOL;
        echo $order->getSender()->getEmail() . PHP_EOL;
        if (!empty($order->getSender()->getAccessPoint())) {
            echo $order->getSender()->getAccessPoint()->getCode() . PHP_EOL;
            echo $order->getSender()->getAccessPoint()->getName() . PHP_EOL;
            echo $order->getSender()->getAccessPoint()->getAddress() . PHP_EOL;
            echo $order->getSender()->getAccessPoint()->getPostalCode() . PHP_EOL;
            echo $order->getSender()->getAccessPoint()->getCity() . PHP_EOL;
            echo $order->getSender()->getAccessPoint()->getDescription() . PHP_EOL;
            echo $order->getSender()->getAccessPoint()->getOpenHours() . PHP_EOL;
        }
        if (!is_null($order->getOrderReturn())) {
            foreach ($order->getOrderReturn()->getAdditionalFields()->getAll() as $additionalField) {
                echo
                    '"' . $additionalField->getName() . '";' .
                    '"' . $additionalField->getTitle() . '";' .
                    '"' . $additionalField->getValue() . '";' .
                    PHP_EOL;
            }
        }
    }
}

其中

  • DATA:按Y-m-d格式指定的日期,根据该日期获取包裹列表。如果为null,则为今天。
cURL
curl -X GET \
  https://api.allekurier.pl/order/sent?date=DATA \
  -H 'accept: application/json' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'authorization: TOKEN_AUTORYZACYJNY'

其中

  • TOKEN_AUTORYZACYJNY:认证令牌。
  • DATA:按Y-m-d格式指定的日期,根据该日期获取包裹列表。如果为null,则为今天。