Ошибка "Could not connect to host" при интеграции с ГИС ЖКХ (Laravel 8, php 7)

Доброго времени суток!

Перед мной стоит задача настроить интеграцию с ГИС ЖКХ с помощью SOAP API. Я использую фреймворк Laravel 8 на php 7.

Для начала я хотел просто подключиться к серверу и получить от него ответ в виде ошибок авторизации или Bad Request 404.

Я нашел на офф сайте документацию API в форматах WSDL и XSD. Так как ссылки на WSDL нет, я предположил, что всю папку необходимо скопировать в проект и обращаться к локальному WSDL файлу на сервере.

$client = new SoapClient(realpath(storage_path($this->wsdl)));

return $client->exportDebtRequests([]);

При попытке отправки запроса в строке

return $client->exportDebtRequests([]);

Возникает ошибка "Could not connect to host".

К сожалению в открытом доступе мне удалось найти только один хороший пример на Yii (php), попытался реализовать подключение аналогичным образом, но это не помогло. Надеялся на то, что указание дополнительных полей в options и headers поможет, но я так понимаю, что дело вообще не в этом.

$wsdl = "gis_api/debt-requests/hcs-debt-requests-service-async.wsdl";
$location = "https://api.dom.gosuslugi.ru/ext-bus-debtreq-service/services/DebtRequestsAsync";
//    $location = "https://sit01.dom.test.gosuslugi.ru:10081/ext-bus-debtreq-service/services/DebtRequestsAsync"; // тестовый location из документации

set_time_limit(0); // снятие ограничения по времени ожидания

        $client = new SoapClient(
            realpath(storage_path($this->wsdl)),
            [   "wsdl" =>realpath(storage_path($this->wsdl)), // путь к wsdl
                "username" => '******************',
                "password" => '******************',
                "location" => $this->location, // location сервера, который был взят из указанного wsdl файла
                "sslKey" => realpath(storage_path('gis_api/cert.key')), // ssl ключ
                "sslCert" => realpath(storage_path('gis_api/cert.pem')), // ssl сертификат
                "caInfo" => realpath(storage_path($this->caInfo)), // путь к файлу Квалифицированного сертификата ключей проверки электронной подписи ИС

                "debug_handle" => null,
                "senderId" => "********-****-****-****-************", // Идентификатор поставщика данных
                "orgPPAGUID" => "********-****-****-****-************" // Дата отправки пакета
            ]);


        // объект $header содержит 5 полей в соответствии с документацией
        $header = new RequestHeader(); // отдельный класс для заголовков
        $header->IsOperatorSignature = true; // Используется подпись оператора ИС
        $header->SenderID = '********-****-****-****-************'; // Идентификатор поставщика данных
        $header->orgPPAGUID = '********-****-****-****-************'; // Идентификатор зарегистрированной организации
        $header->MessageGUID = Helper::guid(); // Идентификатор сообщения
        $header->Date = (new \DateTime())->format(\DateTime::ATOM); // Дата отправки пакета


        $client->__setSoapHeaders(new \SoapHeader("http://dom.gosuslugi.ru/schema/integration/base/", 'RequestHeader', $header));

        return $client->exportDebtRequests([]); // ошибка возникает именно в момент запроса

Подскажите, пожалуйста, в чем может быть проблема? Если кто-то уже интегрировался с ГИС ЖКХ, посмотрите, пожалуйста, правильно ли указаны wsdl и location? Что интересно, если использовать тестовый location запрос проходит медленнее, но результат тот же, то есть какие-то попытки подключения все же происходят.

Раньше аналогичным образом подключались к РТС тендеру проблем не возникало. Только в случае с РТС передавали основную информацию в теле запроса.


Ответы (0 шт):