mothership-ec/cog-mothership-fedex

此包已被废弃,不再维护。未建议替换包。

Fedex配送模块

3.0.1 2015-06-02 12:28 UTC

This package is not auto-updated.

Last update: 2021-03-22 11:07:37 UTC


README

Message\Mothership\Fedex cogule提供了Fedex集成以进行订单配送。它还为此提供了新的配送方法。

安装

使用Composer安装此包。包名为mothership-ec/cog-mothership-fedex

配送方法

此cogule提供了两种配送方法,它们被添加到order.dispatch.methods服务中

  • FedEx Express (fedex-express)
  • FedEx UK (fedex-uk)

自动配送

此cogule与Fedex Express API集成,并启用使用类型fedex-express的任何配送的自动配送。

需要注意的是,与FedEx UK没有集成,因为它们是完全不同的实体,并且在撰写本文时,没有合适的API用于提交货物。

API

此cogule包含一个小型库,用于与Fedex的SOAP API交互。

配置

为此cogule提供了一个配置固定装置。要连接到Fedex API,您需要在其中输入一些认证详细信息。基本要求是

  • api-key - FedEx提供的API密钥
  • api-password - FedEx提供的API密码
  • meter-number - 用于计费货物的计费表号
  • account-number - 负责货物的账户号

对于测试,您可以在Fedex开发者网站上创建一个账户并生成这些详细信息。

API库概述

API库由三个主要部分组成

  • 请求:这些详细说明了要发送到Fedex API的请求和请求数据。
  • 响应:这些详细说明了Fedex API对请求的响应。它们由相应的请求定义。
  • 调度器:负责处理请求,将它们发送到Fedex API并返回相关响应或抛出错误异常。
  • 服务:Fedex将API分组到不同的“服务”。每个都有自己的WSDL端点。请求定义了应使用哪个服务。

您也可能注意到一些关于所谓的PreparedRequest的引用。这是API消费者不需要关心的实现细节,但它基本上是存在的,这样API认证和其他顶级通用请求数据就不需要属于每个单个Request类。

事件

在发出API请求之前,会发出fedex.api.request事件。事件是Message\Mothership\Fedex\Api\Event\RequestEvent的实例,因此监听器可以检查请求并对其调用方法。这发生在请求验证之后。

一旦收到响应并经过验证和初始化后,将触发 fedex.api.response 事件。该事件是 Message\Mothership\Fedex\Api\Event\ResponseEvent 的一个实例,因此监听器可以检查响应。

上传文件

存在一个 UploadDocuments 请求,允许您将任何文件上传到 FedEx API 并将其附加到稍后可以提交的运输中。文件必须被包裹在 API 的 Document 类中,以便可以检索 FedEx 文档标识符。

当响应由 Dispatcher 成功分发后,返回的 Response 将包含文档,并将标识符设置为它们。

然后,您可以使用 addDocument() 将这些 Document 实例添加到您即将提交的 Shipment 中。

生成的商业发票

您可以要求 FedEx 为您的运输生成商业发票。这要求托运商已注册 ETD(电子贸易文件),但通常这是一个很好的主意,因为它可以节省很多纸张,并节省我们制作自己的商业发票的时间。

Mothership 还未生成商业发票,因此启用此功能很重要。

为此,只需在您的 Shipment 实例上调用 requestGeneratedCommercialInvoice(true) 即可。

WSDL 文件

每个服务都需要自己的 .wsdl 文件,这些文件由 FedEx 在他们的 开发者网站 提供。这些文件存储在 /resources/wsdl 中,并由相关的服务类(Message\Mothership\Fedex\Api\Service\ServiceInterface 的实例)引用。

端点会根据 fedex 配置组中 test-mode 属性的值自动更改。在 getWsdlEndpoint() 方法中设置服务类上的实时和测试端点。当添加新的服务或 .wsdl 文件时,您可以通过查看文件的底部并找到 service->port->address 的 location 属性的值来获取这些端点。实时 URI 将位于 ws.fedex.com 主机上,测试 URI 将位于 wsbeta.fedex.com 主机上。