ladromelaboratoire / chronopostws
Chronopost SOAP 网络服务模块,用于各种集成
Requires
- php: >=7.3
- ext-soap: *
README
本模块PHP提供了一个与Chronopost WebServices的集成。目标是能够生成运输标签并对其进行管理。
技术细节
模块接收一个与待创建标签相对应的数组。根据执行的请求,该数组被丰富为一个对象。
选择的工作方式
所有调用都被视为多包裹和多标签格式。为了具有统一的功能,所有标签都先进行预留,然后在第二次操作中获取。由于网络服务的构造,所有标签都包含在一个单独的文档中。因此,在这种情况下,无法将单个文档附加到跟踪号。
ShippingServices
- shippingMultiParcelV4
- getReservedSkybillWithTypeAndMode
TrackingServices
- searchPOD
- cancelSkybill
- trackSkybillV2
QuickcostServices
- quickCost
Chronopost的目标服务
注意,模块的运行满足特定需求。必须研究use-cases以定义模块调用策略,该模块仅进行基本的验证。它不能考虑每个用户Chronopost合同的特定性(过滤产品和服务,额外成本,海关操作)。
支持的函数
- 目前仅实现了Shipping部分并具有功能。
- 运输标签预订
- 1个收件人,1个寄件人,N个包裹
- N个收件人,N个寄件人,N个包裹
- N个收件人,1个寄件人,N个包裹(除A/R模式外)
- 多格式标签(PDF,ZPL等)
- 根据Chronopost文档验证每个数据的格式
- 整体一致性检查(就绪状态)
- 使用网络服务的响应丰富运输对象
- 将标签记录到磁盘
- 跟踪
- 取消运输信件
- 完整的调试模式(对象,请求和响应的转储)
- 如果应用程序以此方式运行,将生成PHP异常。
不支持或待优化(截至目前)
- 运输
- 确定国家名称规范化和根据国家代码进行邮政编码一致性控制的类
- 找到一种更优雅的方式来创建去/回标签
- 管理多包裹海关声明的情况
- 跟踪
- 待完成
- 获取交货证明
- 跟踪包裹
- 待完成
- Quickcost
- 待完成
- 获取运输成本
- 待完成
- 优化类和对象
- 编写真实文档
- 引入PHPUnit
用法
用于测试
使用 composer update 声明 namespace 并直接使用 ./tests 目录中的脚本。./tests/logs 目录包含3个在“调试”模式下成功的调用示例。.json 文件是对象的转储,.xml 文件是网络服务的调用和响应。其他文件是标签。
用于集成
一切基于composer。
所有对象都可以手动调用。然而,从其他地方加载准备好的数据表更简单。阅读Chronopost文档是强制性的,以了解需要提供的内容(列表很长)以及某些参数的含义。每个对象的 RFLCheck() 函数在调用网络服务之前确保明显的一致性。请注意,文档中存在所谓的可选参数,但在调用时如果缺失则阻止。
约定是输入的关联表使用webService期望的对象的属性的确切名称。每个元素将通过一个"setter"进行验证,尽可能精确地控制其形式。大量使用正则表达式(请参阅类wsregex.php)。
/src/wsdata目录包含处理单个对象转换到webService的所有类。/src/utils目录包含附加类。/src/exceptions目录包含异常处理类。
主要有3个类
/src/chronopost.php,用于处理对/从web-service的调用和响应/src/shipment.php,用于处理对ShipphingService服务的调用对象/src/tracking.php,用于处理对TrackingService服务的调用对象/src/quickcost.php,用于处理对QuickcostService服务的调用对象
开发者注意
web-service对发送的数据很敏感。RFLCheck()考虑了开发过程中看到的因素。然而,可能还存在其他特性。错误29是数据问题或SOAP调用形式的特征。提供的示例已测试有效。请以此为参考。
贡献
欢迎以文档化的单个PR或已记录的bug报告形式贡献。只有在我们有时间和这符合我们的意义时,才会处理功能请求。优先考虑PR。
免责声明
本模块按现状提供。可能存在Chronopost的更改,或与您的业务使用规则不匹配。尽管本模块旨在通用,但并非所有情况都可以集成。在依赖之前,强烈建议进行测试。功能添加可以通过贡献提出。