shipstream/magento2-shipstream-sync

ShipStream Magento 2 插件对应的 Magento 2 伴随模块

0.0.1 2024-07-26 20:00 UTC

This package is auto-updated.

Last update: 2024-08-26 20:10:50 UTC


README

这是一个为 Magento2 开发的扩展,它促进了 Magento2/Magento 和 ShipStream Magento2/Magento 插件 之间的库存、订单和跟踪信息的高效同步。此扩展在 ShipStream 中配置相应的插件订阅之前不会产生任何效果。

此扩展为我的 Magento2/Magento 店铺添加了哪些功能?

  • 添加了 Stores-> Settings-> Configuration-> (部分) Services > ShipStream Sync
    • 通用 > 启用实时订单同步
    • 通用 > 发送新的装运电子邮件
  • 添加了三个新的订单状态:“准备发货”、“提交失败”和“已提交”
  • 添加了 API 端点 shipStreamSyncShipStreamInfoV1Infos:shipStreamSyncShipStreamInfoV1
  • 添加了 API 端点 shipStreamSyncShipStreamManagementV1SetConfig:shipStreamSyncShipStreamManagementV1
  • 添加了 API 端点 shipStreamSyncShipStreamManagementV1SyncInventory:shipStreamSyncShipStreamManagementV1
  • 添加了 API 端点 shipStreamSyncShipStreamStockAdjustV1StockAdjust:shipStreamSyncShipStreamStockAdjustV1
  • 添加了 API 端点 shipStreamSyncShipOrderInfoV1Info:shipStreamSyncShipOrderInfoV1
  • 添加了 API 端点 shipStreamSyncShipStreamOrderShipmentV1CreateWithTracking:shipStreamSyncShipStreamOrderShipmentV1
  • sales_order_save_commit_after 添加了事件观察者,以在订单保存时触发订单同步
  • 添加了一个每小时进行一次完整库存同步的计划任务(带有短暂的随机休眠时间)
  • 将 ShipStream 远程 URL 存储在 core_flag 表中

为什么需要这个扩展?Magento2/Magento 已经有了 API 吗?

是的,但这个扩展解决了几个缺陷

  1. 在通过基本的 HTTP 协议同步远程系统时,库存数量已知和更新之间没有锁定,因此设置精确的库存水平容易受到竞争条件的影响。添加“调整”方法允许 ShipStream 推送库存调整(例如 +20 或 -10),而不是绝对值,这大大减少了由竞争条件引起的错误。
  2. Magento2 目录库存 API 没有使用数据库级别的锁定,因此也容易受到本地竞争条件的影响。
  3. 此模块实现了一个“拉取”机制,因此 Magento2 可以在本地和远程锁定库存,然后在一个数据库事务中同步库存数量。这确保了库存不会由于竞争条件而漂移或跳动。对于高流量店铺,这些问题比您想象的要频繁得多。
  4. Magento2 API shipment.info 方法返回的 SKU 不反映 ShipStream 使用的简单产品 SKU。此扩展返回 WMS 可以使用的适当的 SKU。
  5. 使用 shipStreamSyncShipStreamOrderShipmentV1CreateWithTracking:shipStreamSyncShipStreamOrderShipmentV1 方法可以将四个或更多的 API 调用减少到一个,该方法还允许轻松定制(例如接收和存储序列号或批号数据)。

API 端点是使用 Magento 提供的 SOAP/XML-RPC API 实现的,因此这些端点不会造成任何额外的安全漏洞暴露。

新状态有什么意义?

如果没有“处理中”和“完成”之间的状态,否则很难判断订单是否已准备好提交给仓库,是否已成功提交给仓库,或者订单是否已在仓库中处理。

“准备发货”状态可以手动或通过程序(使用一些自定义代码和自己的业务逻辑)设置,以指示订单何时可以发货。如果您不想使用此状态,只需忽略它,并将ShipStream配置为从“处理中”状态拉取订单。

“提交失败”状态表示在尝试在仓库创建订单时出现了错误。

“已提交”状态表示已成功提交给仓库,但尚未完全发货。一旦完全发货,订单状态将自动升级为“完成”。

注意:您可以随意更改这些新状态的状态标签,但请不要更改状态代码,以避免破坏集成。

如果ShipStream插件配置为同步“准备发货”状态的订单,订单状态进展将如图所示。请注意,这需要用户或某些自定义代码在同步之前将订单状态从“处理中”升级到“准备发货”。

如果ShipStream插件配置为同步“处理中”状态的订单,订单状态进展将如图所示。此配置将在收到付款后自动同步订单,无需任何用户交互。

还可以配置ShipStream插件以使用任何其他状态,以便创建自定义工作流程。

安装

使用composer安装此扩展

composer require shipstream/magento2-shipstream-sync
bin/magento module:enable ShipStream_Sync
bin/magento setup:upgrade

设置

安装此扩展并刷新Magento缓存后,您只需执行三个步骤

  1. 在Magento2/Magento中配置插件
  2. 创建API角色和API用户
  3. 在ShipStream中设置插件订阅

以下提供每个步骤的更多详细信息。

配置

根据需要调整系统 > 配置 > 服务 > ShipStream同步 > 通用部分中的配置。

创建API用户

此扩展不需要除创建API角色和API用户之外的其他设置。

在Magento 2中创建用户:转到系统 > 权限 > 所有用户以管理管理员用户。添加新Shipstream用户

分配用户角色:系统 > 权限 > 用户角色。复制Shipstream角色的用户admin/pass到local.xml <admin_login>shipstream_user</admin_login> <admin_pass>shipstream_pass</admin_pass>

角色资源:商店->设置->配置->ShipStream同步

获取AuthToken

  1. 转到系统 > 集成 > 添加新集成
  2. 输入名称“ShipStream同步”和您的电子邮件地址
  3. 在左侧点击“API”标签并检查以下资源
    • 销售 > 操作 > 订单 > 操作 > 查看
    • 销售 > 操作 > 订单 > 操作 > 发货
    • 销售 > 操作 > 订单 > 操作 > 评论
    • 销售 > 操作 > 发货
    • 目录 > 库存 > 产品
  4. 在集成网格上返回,点击新集成上的“激活”并“接受”确认
  5. 复制集成的令牌并将其粘贴到ShipStream插件配置中

获取访问令牌并将其复制到Shipstream插件local.xml <access_token>访问令牌</access_token> <api_login>消费者密钥</api_login> <api_password>访问令牌密钥</api_password>

必需的API角色资源

以下角色资源对于与ShipStream插件的最佳操作是必需的

  • 销售 / 订单 / 更改状态,添加评论
    • 在履行后设置订单状态为完成是必需的
  • 销售 / 订单 / 获取订单信息
    • 获取与履行相关的基本订单信息是必需的
  • ShipStream同步
    • 使用此扩展添加的自定义API方法

ShipStream 设置

ShipStream 插件需要以下信息

  • 您的商店的API URL,应该是 Magento2 管理网站基本URL加上 /soap/default/
  • API 用户和 API 密码(在上述步骤中创建)
  • 管理员用户名和密码(在上述步骤中创建)
  • 访问令牌(在上述步骤中创建)
  • 用于自动导入的订单状态名称(例如:“正在处理”或“准备发货”)

分配源/库存

我们应在后台将模块创建的新源和库存分配为基本设置。

自定义

请随意修改此源代码以满足您的特定需求。

支持

如需帮助,请通过电子邮件发送至 help@shipstream.io