datalinx / dpd-php-sdk
DPD 斯洛文尼亚和克罗地亚的 PHP SDK
v0.1.4-alpha
2023-02-21 07:20 UTC
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.14
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-04 20:59:20 UTC
README
关于
本包实现了斯洛文尼亚和克罗地亚的 DPD EasyShip API。
每个地区似乎都有自己的版本,因此本包不适用于其他任何国家,其他任何实现也不适用于斯洛文尼亚和克罗地亚。
要求
- 支持的 PHP 版本:7.4 - 8.2
- 支持的操作系统:Linux 或 Windows
- 必需的 PHP 扩展:curl, json
注意:该包可在 PHP 8.2 上运行,但目前 CI 测试在 8.2 上失败,因为我们在测试中使用的 php-vcr 包尚不支持。
安装
使用 composer 下载
composer require datalinx/dpd-php-sdk
用法
目前,仅实现了 ParcelImport
端点。
// Set up the API $dpd = new \DataLinx\DPD\API(getenv('DPD_USERNAME'), getenv('DPD_PASSWORD'), getenv('DPD_COUNTRY_CODE')); // Prepare the request $request = new \DataLinx\DPD\Requests\ParcelImport($dpd); $request->name1 = 'Zdravko Dren'; $request->street = 'Partizanska'; $request->rPropNum = '44'; $request->city = 'Izola'; $request->country = 'SI'; $request->pcode = '6310'; $request->num_of_parcel = 1; $request->parcel_type = ParcelType::CLASSIC_COD; $request->cod_amount = 1234.56; $request->cod_purpose = 'CODREF001'; $request->predict = true; try { $response = $request->send(); // Get parcel numbers $parcel_no = $response->getParcelNumbers(); // $parcel_no is now an array with parcel numbers, e.g. ["16962023438943"] } catch (\DataLinx\DPD\Exceptions\ValidationException $exception) { // Handle request validation exception } catch (\DataLinx\DPD\Exceptions\APIException $exception) { // Handle API exception } catch (\Exception $exception) { // Handle other exceptions }
贡献
欢迎提交新端点实现的拉取请求。
如果您有改进此包的建议,请提交问题或更好的是,提交拉取请求。
如果您想做出贡献,请参阅DataLinx PHP 包模板中的开发指南。
运行测试
默认情况下,测试针对由 php-vcr 包捕获的静态测试用例运行。
如果您想更新测试用例或针对 DPD 提供的实时(但仍处于测试状态)API 运行测试,您需要用户名和密码来运行它们。您可以通过写信给it@dpd.si来获取它们。
一旦您有了凭证,您可以在 phpunit.xml
中设置它们。
之后,您还需要设置一个名为 LIVE
的环境变量,值为 1
。这将删除测试用例,在运行测试之前强制进行实时请求。
开发者资源
- DPD EasyShip 网站
- Web服务用户手册(PDF)
变更日志
本项目的所有重大更改都自动记录在CHANGELOG.md 文件中,基于 release-please GitHub 动作和发布工作流程。
格式基于 Keep a Changelog,本项目遵循 语义化版本控制。
为此,提交消息必须遵循 常规提交 规范,这同样由 Git 钩强制执行。