Основная проблема, которая вызвала затруднения при создании скрипта для интеграции с поставщиком и загрузки данных о товарах - плохое методическое описание, и отсутствие примеров на PHP у программистов поставщика.
В сети интернет, несмотря на то, что технология SOAP уже далеко не новая, количество полезной информации очень мало. На PHP.net все изложено достаточно скудно и примеры фактически отстутствуют.
Существующие примеры в сети, которые разъясняют устройство и принцип работы, больше напоминают учебные задания, которые выполнены в виде курсовых или лабораторных работ. Причем сервер и клиент реализованы на PHP.
В нашем случае, не было возможности тестировать поступающую на сервер поставщика информацию, и не было никаких примеров удачно работающих с сервером поставщика сриптов. А это сильно усложнило задачу, заставив экспериментировать с различными операторами и функциями PHP, которые позволяют создавать SOAP запросы к серверу.
При создании объекта данных для запроса к серверу используется объект XMLWriter (см. строки скрипта 4-32). Структура объекта данных должна была соответствовать заданной поставщиком схеме:
В схеме, к сожалению, не было учтено, что требуется обертка "Request" (см. строка скрипта 7) для параметров данных, что также вызвало определенную проблему в разработке.
Несмотря на то, что в мануале PHP.net указано использование функции __soapCall в режиме отличном от WSDL, в нашем случае, использование именно этой функции в режиме WSDL позволило создать работоспособное обращение к серверу (см. строка скрипта 39).
Значение параметра 'soapaction' (см. строка скрипта 41) было взята из соответствующего раздела файла WSDL:
Скрипт запускался из консоли, туда же выводились данные запроса к серверу и ответа от него (см. строки скрипта 44-48)
Код скрипта: