c24toys/sdk-api-parcel-processing

GLS Web API 包裹处理 SDK

1.1.1 2023-01-20 13:18 UTC

This package is auto-updated.

Last update: 2023-08-24 13:56:58 UTC


README

GLS 包裹处理 API SDK 包提供以下网络服务的接口

  • 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 c24toys/gls-shipping-sdk-api

卸载

$ composer remove c24toys/gls-shipping-sdk-api

测试

$ composer test

功能

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']);