allekurier / api_v2
v1.0.1
2022-08-30 10:05 UTC
Requires
- php: >=7.4.0
- ext-json: *
- guzzlehttp/guzzle: ^7.4.1
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-29 05:49:15 UTC
README
需求
该库有以下需求
- 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
:错误级别:可用的级别有notice
、warning
、critical
。
示例
{ "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,则为今天。