dhl/sdk-api-parcel-de

DHL Parcel DE 仓储API SDK

1.0.0 2024-05-24 10:06 UTC

This package is auto-updated.

Last update: 2024-08-28 10:18:57 UTC


README

DHL Parcel DE 仓储API SDK包提供了以下Web服务的接口

要求

系统要求

  • PHP 8.1+,带有SOAP和JSON扩展

包要求

  • league/openapi-psr7-validator: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消息的包

开发包要求

  • fig/log-test:用于测试的PSR-3记录器实现
  • nyholm/psr7:PSR-7 HTTP消息工厂和消息实现
  • phpunit/phpunit:测试框架
  • php-http/mock-client:HTTPlug模拟客户端实现
  • phpstan/phpstan:静态分析工具
  • rector/rector:自动重构工具,有助于PHP升级
  • squizlabs/php_codesniffer:静态分析工具

安装

$ composer require dhl/sdk-api-parcel-de

卸载

$ composer remove dhl/sdk-api-parcel-de

测试

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

功能

DHL Parcel DE 仓储API SDK支持以下功能

  • 验证运输
  • 创建运输订单
  • 删除运输订单

身份验证

DHL Parcel DE 仓储API需要二级身份验证(见API用户指南

  1. 应用提交一个消费者密钥头("API密钥"),该密钥必须在DHL API开发者门户中创建。
  2. 用户通过在DHL商业客户门户中配置的凭据通过HTTP基本身份验证进行识别。

这些凭据通过\Dhl\Sdk\ParcelDe\Shipping\Api\Data\AuthenticationStorageInterface传递给SDK。创建自己的或使用默认实现

$authStorage = new \Dhl\Sdk\ParcelDe\Shipping\Auth\AuthenticationStorage('apiKey', 'user', 'password');

验证运输

验证DHL Paket的运输,包括相关运输文件。

公共API

适用于消费的库组件包括

  • 服务
    • 服务工厂
    • 运输服务
    • 数据传输对象构建器
  • 数据传输对象

使用方法

$logger = new \Psr\Log\NullLogger();

$serviceFactory = new \Dhl\Sdk\ParcelDe\Shipping\Service\ServiceFactory();
$service = $serviceFactory->createShipmentService($authStorage, $logger, $sandbox = true);

$requestBuilder = new \Dhl\Sdk\ParcelDe\Shipping\RequestBuilder\ShipmentOrderRequestBuilder();
$requestBuilder->setShipperAccount($billingNumber = '33333333330101');
$requestBuilder->setShipperAddress(
    company: 'DHL',
    country: 'DEU',
    postalCode: '53113',
    city: 'Bonn',
    street: 'Charles-de-Gaulle-Straße',
    streetNumber: '20'
);
$requestBuilder->setRecipientAddress(
    recipientName: 'Jane Doe',
    recipientCountry: 'DEU',
    recipientPostalCode: '53113',
    recipientCity: 'Bonn',
    recipientStreet: 'Sträßchensweg',
    recipientStreetNumber: '2'
);
$requestBuilder->setShipmentDetails(productCode: 'V01PAK', shipmentDate: new \DateTimeImmutable('2023-02-23'));
$requestBuilder->setPackageDetails(weightInKg: 2.4);

$shipmentOrder = $requestBuilder->create();
$result = $service->validateShipments([$shipmentOrder]);

创建运输订单

创建DHL Paket的运输,包括相关运输文件。除了主要运输数据(发货人、收件人等)外,还可以通过订单配置对象定义每个请求的进一步设置,包括标签打印尺寸、配置文件等。

公共API

适用于消费的库组件包括

  • 服务
    • 服务工厂
    • 运输服务
    • 数据传输对象构建器
  • 数据传输对象

使用方法

$logger = new \Psr\Log\NullLogger();

$serviceFactory = new \Dhl\Sdk\ParcelDe\Shipping\Service\ServiceFactory();
$service = $serviceFactory->createShipmentService($authStorage, $logger, sandbox: true);

$orderConfiguration = new \Dhl\Sdk\ParcelDe\Shipping\Service\ShipmentService\OrderConfiguration(
    mustEncode: true,
    combinedPrinting: null,
    docFormat: \Dhl\Sdk\ParcelDe\Shipping\Api\Data\OrderConfigurationInterface::DOC_FORMAT_PDF,
    printFormat: \Dhl\Sdk\ParcelDe\Shipping\Api\Data\OrderConfigurationInterface::PRINT_FORMAT_A4
);

$requestBuilder = new \Dhl\Sdk\ParcelDe\Shipping\RequestBuilder\ShipmentOrderRequestBuilder();
$requestBuilder->setShipperAccount(billingNumber: '33333333330101');
$requestBuilder->setShipperAddress(
    company: 'DHL',
    country: 'DEU',
    postalCode: '53113',
    city: 'Bonn',
    streetName: 'Charles-de-Gaulle-Straße',
    streetNumber: '20'
);
$requestBuilder->setRecipientAddress(
    name: 'Jane Doe',
    countryCode: 'DEU',
    postalCode: '53113',
    city: 'Bonn',
    streetName: 'Sträßchensweg',
    streetNumber: '2'
);
$requestBuilder->setShipmentDetails(productCode: 'V01PAK', shipmentDate: new \DateTimeImmutable('2023-02-23'));
$requestBuilder->setPackageDetails(weightInKg: 2.4);

$shipmentOrder = $requestBuilder->create();
$shipments = $service->createShipments([$shipmentOrder], $orderConfiguration);

删除运输订单

取消之前创建的运输。

公共API

适用于消费的库组件包括

  • 服务
    • 服务工厂
    • 运输服务
  • 数据传输对象
    • 身份验证存储

使用方法

$logger = new \Psr\Log\NullLogger();

$serviceFactory = new \Dhl\Sdk\ParcelDe\Shipping\Service\ServiceFactory();
$service = $serviceFactory->createShipmentService($authStorage, $logger, sandbox: true);

$shipmentNumber = '333301011234567890';
$cancelled = $service->cancelShipments([$shipmentNumber]);