Могу ли я определить, является ли мой SSL-сертификат блокирующим ответ JSON API - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь получить ответ от подписки Exact Online API webhook. Для этого необходимо, чтобы URL обратного вызова был https. Обычные запросы GET и POST для Exact возвращают XML-ответы, и у моего сайта нет проблем с их получением, независимо от того, был ли указан обратный вызов http или https. При отправке запроса на подписку на webhook я должен получить ответ 200 в составе тела JSON, опубликованного Exact Online.

Я не вижу этого, но считаю, что веб-крючок создан правильно, потому что, если я повторно отправляю запрос, я получаю «Ошибка: 500. Данные уже существуют». сообщение, которое означает, что webhook был создан. Однако когда я использую file_get_contents ('php: // input') для получения ответа, возвращается пустая строка.

Я где-то читал, что причиной может быть сертификат SSL (я не могу вспомнить, где я это читал), и он может блокировать полезную нагрузку JSON. Можно ли как-нибудь проверить, не вызывает ли проблема проблема с настройкой сертификата?

Изначально я создал подписку webhook с помощью Picqer - file_get_contents ('php: // input') вернул пустую строку. Если я повторно отправил запрос, я получил «Ошибка 500. Данные уже существуют». сообщение.

Затем я отправил запрос на подписку с помощью CURL (отправив в заголовке параметры обратного вызова и тему как JSON-параметры). Я получил строковый ответ с идентификатором guid '#########' для подписки webhook (т. Е. Для конечной точки webhook / WebhookSubscription), но все еще ничего для конечной точки данных (заданной полем Topic).

Код моего 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);

Я ожидаю получить ответы JSON, к которым я могу получить доступ с помощью file_get_contents ('php: // input'). Вместо этого я получаю строку (0) "". Когда я попробовал print_r ($ _ POST), я получил Array ().

Могу ли я попробовать еще что-нибудь?

1 Ответ

0 голосов
/ 12 мая 2019

Мой 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.

...