glsgroup / sdk-api-parcel-processing

此包已 废弃 并不再维护。未建议替代包。

GLS 物流处理 Web API SDK

1.1.0 2022-05-17 09:56 UTC

This package is auto-updated.

Last update: 2022-07-31 08:36:36 UTC


README

GLS 物流处理 API SDK 包提供了以下 Web 服务的接口

  • GLS 物流处理 Web API
  • GLS 物流取消 Web API

要求

系统要求

  • PHP 7.2+ 以及 JSON 扩展

包要求

  • netresearch/jsonmapper: 将 JSON 响应消息反序列化为 PHP 对象的映射器
  • php-http/discovery: HTTP 客户端和消息工厂实现的发现服务
  • php-http/httplug: 可插拔的 HTTP 客户端抽象
  • php-http/logger-plugin: HTTPlug 的 HTTP 客户端记录插件
  • psr/http-client: PSR-18 HTTP 客户端接口
  • psr/http-factory: PSR-7 HTTP 消息工厂接口
  • psr/http-message: PSR-7 HTTP 消息接口
  • psr/log: PSR-3 记录接口

虚拟包要求

  • psr/http-client-implementation: 提供兼容 PSR-18 的 HTTP 客户端的任何包
  • psr/http-factory-implementation: 提供兼容 PSR-7 的 HTTP 消息工厂的任何包
  • psr/http-message-implementation: 提供兼容 PSR-7 的 HTTP 消息的任何包

开发包要求

  • nyholm/psr7: PSR-7 HTTP 消息工厂及实现
  • phpunit/phpunit: 测试框架
  • php-http/mock-client: HTTPlug 模拟客户端实现
  • phpstan/phpstan: 静态分析工具
  • squizlabs/php_codesniffer: 静态分析工具

安装

$ composer require glsgroup/sdk-api-parcel-processing

卸载

$ composer remove glsgroup/sdk-api-parcel-processing

测试

$ ./vendor/bin/phpunit -c test/phpunit.xml

特性

GLS 物流处理 API SDK 支持以下特性

  • 带有标签创建货运单
  • 取消包裹

创建货运单

使用一个或多个包裹创建货运单并获取货运标签。每个包裹可以单独订购增值服务。可以单独请求退货标签(“仅退货”)或与常规“到货”标签一起请求。

公共 API

适合消费的库组件包括

  • 服务
    • 服务工厂
    • 货运服务
    • 数据传输对象构建器
  • 数据传输对象
    • 带包裹的货运
  • 异常

使用方法

$logger = new \Psr\Log\NullLogger();
$serviceFactory = new \GlsGroup\Sdk\ParcelProcessing\Service\ServiceFactory();
$service = $serviceFactory->createShipmentService('basicAuthUser', 'basicAuthPass', $logger, $sandbox = true);

// REGULAR SHIPMENT
$requestBuilder = new \GlsGroup\Sdk\ParcelProcessing\RequestBuilder\ShipmentRequestBuilder();
$requestBuilder->setShipperAccount($shipperId = '98765 43210');
$requestBuilder->setRecipientAddress(
    $country = 'DE',
    $postalCode = '36286',
    $city = 'Neuenstein',
    $street = 'GLS-Germany-Straße 1 - 7',
    $name = 'Jane Doe'
);
$requestBuilder->addParcel($parcelWeightA = 0.95);
$requestBuilder->addParcel($parcelWeightB = 1.2);
$request = $requestBuilder->create();

$shipment = $service->createShipment($request);

// work with the web service response, e.g. persist label
foreach ($shipment->getLabels() as $i => $label) {
    file_put_contents("/tmp/{$shipment->getConsignmentId()}-{$i}.pdf", $label);
}

// RETURN SHIPMENT
$requestBuilder = new \GlsGroup\Sdk\ParcelProcessing\RequestBuilder\ReturnShipmentRequestBuilder();
$requestBuilder->setShipperAccount($shipperId = '98765 43210');
$requestBuilder->setShipperAddress(
    $country = 'DE',
    $postalCode = '36286',
    $city = 'Neuenstein',
    $street = 'GLS-Germany-Straße 1 - 7',
    $name = 'Jane Doe'
);
$requestBuilder->setRecipientAddress(
    $country = 'DE',
    $postalCode = '36286',
    $city = 'Neuenstein',
    $street = 'GLS Germany-Straße 1 - 7',
    $company = 'GLS Germany'
);
$requestBuilder->addParcel($weight = 0.95, $qrCode = true);
$request = $requestBuilder->create();

$shipment = $service->createShipment($request);

取消包裹

取消一个或多个包裹。

公共API

适合消费的库组件包括

  • 服务
    • 服务工厂
    • 取消服务
  • 异常

使用方法

$logger = new \Psr\Log\NullLogger();
$serviceFactory = new \GlsGroup\Sdk\ParcelProcessing\Service\ServiceFactory();
$service = $serviceFactory->createCancellationService('basicAuthUser', 'basicAuthPass', $logger, $sandbox = true);

$cancelledIds = $service->cancelParcels([$parcelIdA = '12345', $parcelIdB = '54321']);