Shopify webhook products/update 前后

Shopify webhook products/update before after

我需要在 Shopify 产品上同步另一家商店。 我需要保持同步内容(包括图片)、库存和价格。

为此,我使用了 products/update 网络钩子。 当产品更新时,我会在另一家商店重新同步整个产品。

问题是,当我收到 webhook 对象时,它不包含任何关于更改内容的信息。

因此,例如,如果我有一个具有 20 个变体的产品并且我更新了 20 个价格,我会同步所有变体 20 次,因为 API 不会告诉我哪个字段已更改或哪个变体被修改。

有什么办法可以知道发生了什么变化吗?我可以比较其他商店的数据,但实际上它比覆盖更复杂(想想图片......)。

变体上没有“上次编辑”字段,因此我无法检查它是否是最近的。

我为您提供的答案非常简单,也是我在生产中一直使用的答案。带上它,运行 带上它,我希望它对你有用,对我也有用。

当您收到新更新产品的 webhook 时,您确实没有得到任何差异或关于更改内容的报告。但是,使用一个简单的函数从产品对象中删除所有 ID 键是微不足道的。现在,结果是一个裸产品,所有细节,但 none 的标识。所以它是素数!

现在在您的其他商店打开一个 API 会话,使用句柄调用产品更新来匹配其他产品,并提供新的 ID-less 对象作为您的数据。

结果是在其他商店完美更新,而你几乎什么都没做!

试试吧。你可能会喜欢!

没有实际的解决方案。 我使用的解决方案是节流。

当我收到 product/update 挂钩时,我将变体 ID 保存在 table 上(其中 variant_id 是唯一的)。

在一个单独的进程中,我每隔几分钟处理 table 中的所有(实际上 一些)变体 ID。这样,如果重复 variant_id,我每隔几分钟只处理一次。

这不会避免处理未经编辑的变体,但我找不到任何方法来丢弃这些变体。