WooCommerce webhooks 发送空体

WooCommerce webhooks sending an empty body

当 webhook 触发时,我可以在另一端看到请求的正文是空的。 然后我启用了 WP_DEBUG,拍摄了另一个 API-call 并检查了日志文件(WooCommerce >> Status >> Logs >> Log-file for the given day),并且可以看到它确实是空的。所以这不是去往目的地的数据 'falling off the truck'。

我在代码中找到了拍摄的位置,它看起来像这样:

do_action( 'my_custom_webhook', $order->id, [], $order );

所以我将其更改为:

error_log( $order );
do_action( 'my_custom_webhook', $order->id, [], $order );

并且可以看到 $order 不是空的。

奇怪!

采取的调试步骤

1. Webhooks 定义正确

我花了很多时间,深入研究 webhook,看看它是否存在,但设置不正确。或者一些已被弃用的遗留代码。

2。错误日志

我多次浏览错误日志。假设它是一些错误代码,在发送 API 调用之前遇到错误。但这没有任何意义,因为这很可能会阻止 API-call 完全触发。嗯!

3。 Webhook 自动停用

我打的API也返回错误500,当body是空的。所以 webhooks 自己停用了。每当我尝试重新激活它们时,我仍然遇到错误(这两个错误之一):

但我无法更改 API。所以没有什么好的办法。

我最终意识到,尽管我遇到了那个错误,但 webhook 仍然被激活......并且有效!

所以我完全忽略了那个错误并继续前进。

4.权限

我想这可能是关于权限的问题,因为我会看到我遇到了 woocommerce_rest_cannot_view-错误。

系统详细信息

在此处找到解决方案:https://github.com/woocommerce/woocommerce/issues/24533#issuecomment-551148570

只需删除 webhook,然后使用完全相同的内容再次创建 it/them。

¯\_(ツ)_/¯