【问题标题】:Can I determine if it is my SSL certificate which is blocking a JSON API response我能否确定是否是我的 SSL 证书阻止了 JSON API 响应
【发布时间】: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


【解决方案1】:

我的 webhook 运行良好。由于回调 URL 处的代码自动运行,因此使用 var_dump($input) 不是查看输出的明智方法。我将其替换为以下内容:

// var_dump($input);
// Replaced the above with:
$fp = fopen('MyWHLogs.txt', 'w');
fwrite($fp, $input);
fclose($fp);

我现在可以查看 MyWHLogs.txt 以查看 webhook 响应。

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2019-11-07
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多