如何在WordPress中创建适配Clickfunnels的自定义webhook端点
问题排查与修正方案
你遇到的问题由多个配置错误共同导致,对应修复方案如下:
存在的问题点
- 端点路径不匹配:官方要求的路径是根目录下的
/funnel_webhooks/test,你当前使用的是WordPress默认REST API前缀的/wp-json/funnel-webhooks/test,路径不一致导致Clickfunnels无法找到端点 - 重复序列化JSON:
WP_REST_Response会自动将数组转为JSON格式,你两次调用json_encode会导致返回内容是双重转义的字符串,不符合JSON对象要求 - 时间格式错误:你用
gmdate('Y-m-d H:i:s e')生成的时间后缀为时区偏移量(如+00:00),官方要求后缀为固定UTC字符串 - 签名计算规则错误:你拼接的内容缺少URL的
https://前缀,且要求是完整URL + 完整payload JSON字符串计算MD5,你当前仅拼接了time字段的值,签名不匹配 - 未显式声明Content-Type头:部分服务器配置可能修改WordPress默认返回头,需要显式指定避免异常
修复代码示例
推荐使用更稳定的直连路径方案,不需要依赖WordPress REST API规则:
add_action('template_redirect', 'ffalcon_funnel_webhooks_test'); function ffalcon_funnel_webhooks_test() { // 精准匹配官方要求的路径 if ($_SERVER['REQUEST_URI'] !== '/funnel_webhooks/test') { return; } // 生成符合格式的UTC时间 $time_str = gmdate('Y-m-d H:i:s') . ' UTC'; $payload = [ 'time' => $time_str ]; $payload_json = json_encode($payload); // 拼接完整请求URL $full_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // 计算符合要求的签名 $delivery_id = md5($full_url . $payload_json); // 输出响应头 header('Content-Type: application/json'); header('X-Clickfunnels-Webhook-Delivery-Id: ' . $delivery_id); // 输出响应体 echo $payload_json; exit; }
注意事项
添加代码后可先通过curl工具本地测试返回的头信息、body格式是否符合要求,确认无误后再到Clickfunnels后台触发测试。
内容的提问来源于stack exchange,提问作者Francisco Javier Falcon Ortiz
相关产品推荐
相关产品推荐

