shipstream / magento2-shipstream-sync
ShipStream Magento 2 插件对应的 Magento 2 伴随模块
Requires
- php: >=7.4.0
- ext-json: *
- ext-pcre: *
Requires (Dev)
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 吗?
是的,但这个扩展解决了几个缺陷
- 在通过基本的 HTTP 协议同步远程系统时,库存数量已知和更新之间没有锁定,因此设置精确的库存水平容易受到竞争条件的影响。添加“调整”方法允许 ShipStream 推送库存调整(例如 +20 或 -10),而不是绝对值,这大大减少了由竞争条件引起的错误。
- Magento2 目录库存 API 没有使用数据库级别的锁定,因此也容易受到本地竞争条件的影响。
- 此模块实现了一个“拉取”机制,因此 Magento2 可以在本地和远程锁定库存,然后在一个数据库事务中同步库存数量。这确保了库存不会由于竞争条件而漂移或跳动。对于高流量店铺,这些问题比您想象的要频繁得多。
- Magento2 API
shipment.info
方法返回的 SKU 不反映 ShipStream 使用的简单产品 SKU。此扩展返回 WMS 可以使用的适当的 SKU。 - 使用
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缓存后,您只需执行三个步骤
- 在Magento2/Magento中配置插件
- 创建API角色和API用户
- 在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
- 转到系统 > 集成 > 添加新集成
- 输入名称“ShipStream同步”和您的电子邮件地址
- 在左侧点击“API”标签并检查以下资源
- 销售 > 操作 > 订单 > 操作 > 查看
- 销售 > 操作 > 订单 > 操作 > 发货
- 销售 > 操作 > 订单 > 操作 > 评论
- 销售 > 操作 > 发货
- 目录 > 库存 > 产品
- 在集成网格上返回,点击新集成上的“激活”并“接受”确认
- 复制集成的令牌并将其粘贴到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!