shipstream/openmage-sync

ShipStream Sync 扩展程序,用于 Magento 1 和 OpenMage

安装: 14

依赖项: 0

建议者: 0

安全性: 0

星级: 1

关注者: 3

分支: 2

开放问题: 0

类型:magento-module

1.2.1 2022-05-11 18:36 UTC

This package is auto-updated.

Last update: 2024-09-20 00:54:35 UTC


README

这是一个适用于 OpenMage 和 Magento 1 (CE 或 EE) 的扩展程序,它简化了 OpenMage/Magento 与 ShipStream OpenMage/Magento 插件 之间的库存、订单和跟踪信息同步。此扩展程序在未在 ShipStream 中配置相应的插件订阅之前将没有任何效果。

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

  • 在“服务”>“ShipStream 同步”中添加了一个“系统”>“配置”部分
    • 常规 > 启用实时订单同步
    • 常规 > 发送新运货邮件
  • 添加了三个新的订单状态:“准备发货”、“提交失败”和“已提交”
  • 添加了 API 端点 shipstream.info
  • 添加了 API 端点 shipstream.set_config
  • 添加了 API 端点 shipstream.sync_inventory
  • 添加了 API 端点 shipstream_stock_item.adjust
  • 添加了 API 端点 shipstream_order_shipment.info
  • 添加了 API 端点 shipstream_order_shipment.createWithTracking
  • 添加了对 sales_order_save_commit_after 事件的观察者,以便在订单保存时触发订单同步
  • 添加一个 cron 作业,每小时进行一次完整的库存同步(带短随机睡眠时间)
  • 将 ShipStream 远程 URL 存储在 core_flag 表中

为什么需要这个?OpenMage/Magento 不是已经有了 API 吗?

是的,但这个扩展程序解决了几个不足之处

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

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

新状态的意义是什么?

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

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

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

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

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

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

Status State Diagram

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

Status State Diagram

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

安装

您可以使用Composer、modman、zip文件或tar文件安装此扩展。

安装后,刷新OpenMage缓存以激活扩展。

modman

$ modman init
$ modman clone https://github.com/ShipStream/openmage-sync

Composer

运行 composer require 将扩展拉入您的Composer环境。

$ composer require shipstream/openmage-sync

Zip文件

  1. 发布页面下载最新版本,或点击这里获取最新的夜间构建。
  2. 将下载文件的文件内容提取到干净的目录中。
  3. openmage-sync-master/app目录中的文件移动到您的OpenMage/Magento根目录的app目录。

Linux命令行(tar文件)

cd <your-Magento-root>
curl -fsSL -o /tmp/openmage-sync-master.tar.gz https://github.com/ShipStream/openmage-sync/archive/refs/heads/master.tar.gz
tar -xzv openmage-sync-master/app --strip-components=1 -f /tmp/openmage-sync-master.tar.gz
rm /tmp/openmage-sync-master.tar.gz

设置

一旦安装此扩展并刷新了Magento缓存,您只需进行三个步骤

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

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

配置

在“系统 > 配置 > 服务 > ShipStream同步 > 通用”部分调整配置以满足您的需求。

创建API用户

此扩展除了创建ShipStream插件的API角色和API用户之外,无需进行其他设置。

  1. 导航到“系统 > 网络服务 > SOAP/XML-RPC - 角色”
  2. 点击“添加新角色”
  3. 提供名称“ShipStream”和您当前的管理员密码
  4. 点击“角色资源”选项卡,并选择以下部分中列出的资源
  5. 点击“保存角色”
  6. 导航到“系统 > 网络服务 > SOAP/XML-RPC - 用户”
  7. 点击“添加新用户”
  8. 填写表单字段,选择安全的API密钥,并记录“用户名”和“API密钥”以供以后使用
  9. 点击“用户角色”选项卡,并选择之前步骤中创建的“ShipStream”角色
  10. 点击“保存用户”
  11. 将用户名和API密钥提供给ShipStream订阅配置中的ShipStream

所需的API角色资源

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

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

ShipStream设置

ShipStream插件需要以下信息

  • 您的商店的API URL,应为Magento管理站点基础URL加上/api/soap/
  • API用户名和API密码(在上一步中创建)
  • 用于自动导入的订单状态名称(例如,“处理中”或“准备发货”)

自定义

请随意修改此源代码以适应您的特定需求。例如,如果您有多个履行提供商,您可能想向订单添加一些元数据,这样它们就不会自动导入。

支持

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