在我的shopify商店中,我已经设置了订单创建webhook。 webhook指向Cakephp操作URL,该URL从webhook接收数据如下: -
$content = file_get_contents ( "php://input" );
之后,它将此订单数据保存到应用程序数据库: -
$orderData =array('order'=>$data['order_number'],'details'=>$content);
$orders = new Order ();
$orders->saveall($orderData);
现在的问题是,对于创建的每个单个订单,多次调用webhook。尽管它在第一次尝试中执行必要的操作,但Shopify无法识别呼叫成功并且一次又一次地调用它直到达到限制。达到限制后,webhook将从商店中删除。
我的问题是,在执行必要的操作后,我们是否需要向webhook调用发送任何类型的状态或响应。因为shopify webhook文档不是很清楚。他们声明webhook调用成功是根据HTTP状态200确定的。如何检查webhook调用返回的状态是什么?如何通过我的应用程序代码确保Shopify通知webhook成功,并且它不会调用对webhook的进一步调用?
答案 0 :(得分:0)
为了澄清其他问题,您必须显式返回2XX HTTP代码,否则它将在48小时内重试19次,然后删除超出此范围的webhook。
答案 1 :(得分:0)
是的,您需要在5秒钟内向Shopify发送200条响应。否则,Shopify将在短时间内发送请求。
官方指南建议您存储Webhook数据并使用队列,线程或您喜欢的任何方式对其进行处理。之后,您会立即向Shopify返回200响应。
IMO,如果有许多Webhook请求发送给您,最好将Webhook接收者与应用服务器分开。您可以使用AWS Lambda或docker swarm进行此操作,以使webhook请求不会中断您的应用服务器。
来源: