什么会导致shopify webhook的主体不包含';客户';阵列?

什么会导致shopify webhook的主体不包含';客户';阵列?,shopify,Shopify,我们订阅了shopify“订单完成”webhook。在过去的一个月里,我们对发布给我们的数据进行解析,并根据这些数据采取行动,一点问题都没有。特别是,每个请求都包含一个“customer”数组,由(至少)“email”、“first_name”和“last_name”组成 我们刚刚收到的数据没有“客户”阵列。从表面上看,该订单与我们处理过的任何其他订单都没有什么不同,因此没有明显的原因 我们收到的数据确实包含电子邮件、名和姓,但不在“客户”数组中。我们可以修改代码,在其他地方查看以提取这些数据,

我们订阅了shopify“订单完成”webhook。在过去的一个月里,我们对发布给我们的数据进行解析,并根据这些数据采取行动,一点问题都没有。特别是,每个请求都包含一个“customer”数组,由(至少)“email”、“first_name”和“last_name”组成

我们刚刚收到的数据没有“客户”阵列。从表面上看,该订单与我们处理过的任何其他订单都没有什么不同,因此没有明显的原因

我们收到的数据确实包含电子邮件、名和姓,但不在“客户”数组中。我们可以修改代码,在其他地方查看以提取这些数据,但我们不希望不理解为什么要进行更改

我们不知何故错过了数据商店化帖子的结构是否已经宣布改变


什么情况会导致“客户”数组不出现在发布的数据中?在发布的数据中是否有任何位置保证始终包含电子邮件、名字和姓氏,以便我们可以防止这种情况再次发生?

如果订单上的客户信息丢失,您的webhook处理程序应该处理这种情况。在合法情况下,如果客户被删除,则可能会发生这种情况,这可能由商户手动完成


具体来说,在您的案例中,问题是客户没有与订单关联。这是Shopify用于后台作业处理的库中的一个bug,它不会重试因内存不足而被内核杀死的作业。在这种情况下,作业将为新客户的订单创建一个客户。我已经修复了相关的bug,可以防止在这种情况下丢失后台作业。

我相信当响应是针对订单资源时,客户数据通常是散列的。听起来这可能是Shopify的一个竞赛条件。你注意到订单号了吗?如果您现在通过API获取订单,它现在会显示客户哈希吗?嗨!我刚刚通过使用shopifiapi::order.find请求order by id来测试了这一点,返回的订单仍然没有客户数据散列。如果有帮助的话,我可以将订单id和我们收到的YAML转储数据发送给Shopify的某个人?你可以直接通过电子邮件发送给我,john。duff@shopify.comThis自从API发布以来,它一直是Order WebHooks的一个特性。因此,你必须在客户散列中加入一个白痴检查。嗯-一个回答说它“正常”在那里,一个回答说它可能不在那里。。。如果这是我们需要做的,我很乐意去检查一下,但最好的办法是了解为什么有时会发生这种情况!我真的不想在不理解我们为什么要这样做的情况下将条件分支引入到我们的代码中…太好了-感谢您的修复。我们也很高兴知道为什么我们应该处理“客户数据丢失”案例——我们很乐意进行防御性的编程,但更愿意知道我们为什么这样做,而不仅仅是采取一些“货物崇拜”的后备措施。再次感谢你的帮助!同样,如果删除产品变体,我应该添加订单中第行项目上的变体id也可以是
null