Извините, у вас так много проблем с функцией webhook.Надеюсь, этот ответ будет полезным.
1.Попробуйте тестовую программу PHP для проверки подключения и т. Д .:
<?php
header('Content-Type: text/html');
echo "OK!";
$h = fopen('/tmp/listener_access.log', 'a');
if ($h) {
$now = DateTime::createFromFormat('U.u', microtime(true), new DateTimeZone('UTC'));
fwrite ($h, $now->format ("Y-m-d_l.h.i.s.v "));
fwrite($h, $_SERVER["REMOTE_ADDR"] . " " . $msg . "\n");
fclose($h);
} else {
error_log ("### Could not open log file!");
}
Сохраните ее как ok.php
в каталоге вашего веб-сервера.Затем попробуйте (из браузера в другой сети) набрать https://yourserver.company.com/ok.php
. Вы должны увидеть «ок» в окне браузера.
Затем используйте тот же URL-адрес в разделе eventNotification
вашего конверта :: createпозвоните, чтобы увидеть, все ли работает.Вы должны увидеть успех в журнале подключений и т. Д.
2.Пошаговая отладка вашего прослушивателя PHP
Существует ряд проблем, которые нужно исключить (как говорят диагносты) с вашим приложением php listener.
- Основные возможности подключения к слушателю.Поскольку DocuSign получает 400 ошибок от вашего приложения, подключение в порядке.
Ошибки платформы с вашим приложением.Это проблема с настройкой стека программного обеспечения PHP, из-за которой стек (а не ваше приложение PHP) отклоняет запрос.
Обычным показателем для этого является журнал ошибок вашего веб-сервера.Вы смотрели на это?Что находится в строке регистрации, где вы видите ответ 400 от вашего сервера на DocuSign?Если вы не видите ответ 400 на DocuSign, значит, что-то не так с настройкой вашего веб-сервера.
Общая ошибка платформы с PHP и другими стеками при использовании настроек по умолчанию - Maximum_post_size_exceeded.Это происходит, если вы запросили, чтобы DocuSign включил документы вашего конверта в сообщение с уведомлением.
Хорошим тестом является временное изменение кода создания конверта, чтобы он не включал документы в уведомления.
Исправления: хорошее исправление - не включает документы конвертав уведомлении.Вместо этого после получения сообщения выполните отдельные вызовы API для получения документов.
Другое исправление заключается в увеличении максимального размера тела сообщения.Возможно, вам придется увеличить его как в настройках PHP , так и в настройках базового веб-сервера.(Кстати, какой веб-сервер вы используете?)
Вы обрабатываете входящее уведомление в ветке ответов вашего приложения server / php.Это действительно не лучший метод (я буду обновлять страницу примера DocuSign в будущем с этой информацией.)
Лучший метод - использовать следующий шаблон:
1. Receive the incoming notification message from DocuSign
2. Put the message onto a reliable FIFO queue
3. Respond to DocuSign with a 200 response.
Then, in a separate thread of execution, a
different software application "works off" the
entries in the queue.
Ваш веб-сервер, например, может отключать вашу PHP-программу.Это, вероятно, не происходит в вашем случае, но другие могут испытать это.
Я думаю, что затем я добавлю больше отладочных операторов в вашу PHP-программу, чтобы попытаться понять, что с ней происходит.Вы можете сделать это с помощью error-log или скопировать метод из моего примера (выше) и записать в файл в / tmp.(Предполагая сервер Linux.)
Другим вариантом является повышение уровня отладки самого стека php или вашего веб-сервера, или обоих.
3,Последние мысли
400 в журналах DocuSign обычно указывают на то, что DocuSign достиг вашего сервера и вернул код состояния 400.Это можно подтвердить, изучив журнал вашего сервера (обычный или с ошибкой), там должна быть соответствующая запись.
Если в журнале вашего сервера нет записи, но программа «ok.php», описанная выше, работает, то пришло время закомментировать большие куски кода из вашей программы PHP, а затемсделать еще один тест от DocuSign.В конце концов, используя метод бинарного поиска (см. Шаг 8 в статье), вы найдете код, который вызывает проблему.
Комментирование кода как часть бинарного поиска длянайти ошибку - очень распространенная и мощная техника отладки.
HTH, Larry