dhl / sdk-api-parcel-de
DHL Parcel DE 仓储API SDK
1.0.0
2024-05-24 10:06 UTC
Requires
- php: ^8.1.0
- ext-json: *
- league/openapi-psr7-validator: ^0.22.0
- netresearch/jsonmapper: ^4.0.0
- php-http/discovery: ^1.17.0
- php-http/httplug: ^2.2.0
- php-http/logger-plugin: ^1.2.1
- psr/http-client: ^1.0.1
- psr/http-client-implementation: ^1.0.0
- psr/http-factory: ^1.0.0
- psr/http-factory-implementation: ^1.0.0
- psr/http-message: ^1.0.0 || ^2.0.0
- psr/http-message-implementation: ^1.0.0 || ^2.0.0
- psr/log: ^1.1.0 || ^2.0.0 || ^3.0.0
Requires (Dev)
- fig/log-test: ^1.1.0
- nyholm/psr7: ^1.0.0
- php-http/mock-client: ^1.5.0
- phpstan/phpstan: ^1.5.0
- phpunit/phpunit: ^10.1.0
- rector/rector: *
- squizlabs/php_codesniffer: ^3.4
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用户指南)
- 应用提交一个消费者密钥头("API密钥"),该密钥必须在DHL API开发者门户中创建。
- 用户通过在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]);