cakephp Shopify Webhook被多次调用

idv4meu8  于 2022-11-12  发布在  PHP
关注(0)|答案(2)|浏览(221)

在我的shopify商店,我已经设置了一个订单创建webhook。webhook指向一个Cakephp操作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调用?

piok6c0g

piok6c0g1#

是的,您需要在短时间内5秒内向Shopify发送一个200的响应,否则Shopify会在短时间内发送一个请求。
官方指南建议你存储webhook数据,然后用队列、线程或任何你喜欢的方式来处理它,之后,你会立即返回一个200的响应给Shopify。
如果有很多webhook请求发送给你,最好把webhook接收器和你的应用服务器分开。你可以用AWS Lambda或者Docker Swarm来做,这样webhook请求就不会破坏你的应用服务器。
资料来源:
1.时限:enter link description here
1.使用AWS Lambda的网钩:enter link description here

wb1gzix0

wb1gzix02#

只是为了澄清其他人,你必须明确返回一个2XX HTTP代码,否则它将在48小时内重试19次,然后删除你的webhook,如果它超过了。

相关问题