【发布时间】:2019-05-09 11:46:51
【问题描述】:
我正在尝试从 Exact Online API webhook 订阅中获得响应。这要求回调 URL 是 https。对 Exact 的正常 GET 和 POST 请求返回 XML 响应,并且我的站点接收这些响应没有问题,无论我指定的回调是 http 还是 https。在提交 webhook 订阅请求时,我应该会在 Exact Online 发布的 JSON 正文中收到 200 响应。
我没有看到这一点,但相信 Webhook 已正确创建,因为如果我重新提交请求,我会收到“错误:500。数据已存在”。 message,表示 webhook 已创建。但是,当我使用 file_get_contents('php://input') 获取响应时,会返回一个空字符串。
我在某处读到 SSL 证书可能是原因(我不记得我在哪里读到的),并且可能阻止了 JSON 有效负载。有什么方法可以测试,看看是否是证书设置导致了问题?
最初,我使用 Picqer 创建了 webhook 订阅 - file_get_contents('php://input') 返回一个空字符串。如果我重新提交请求,我会收到“错误 500。数据已存在”。信息。
然后,我使用 CURL 提交了订阅请求(将回调 url 和 Topic 作为 JSON 参数发送到 header 中)。我收到了一个字符串响应,其中包含 guid'#########' ID 的 webhook 订阅(即 webhook/WebhookSubscriptions 端点),但数据端点仍然没有(由主题字段给出)。
我的 Picqer 代码:
$subscription = new \Picqer\Financials\Exact\WebhookSubscription($connection);
$subscription->deleteSubscriptions();
$subscription->CallbackURL = $callback;
$subscription->Topic = $topic;
$subscription->save();
$input = file_get_contents('php://input');
var_dump($input);
我希望获得可以使用 file_get_contents('php://input') 访问的 JSON 响应。相反,我得到字符串(0)“”。当我尝试 print_r($_POST) 时,我得到了 Array()。
还有什么我可以尝试的吗?
【问题讨论】:
-
我也尝试将 PHP allow_url_fopen 更改为 ON,但没有成功...
标签: https webhooks file-get-contents exact-online