Ответ на вопрос, который вы не задавали, вероятно: заменить обратные кавычки (`) на одинарные кавычки (')
- Правка.Это не было проблемой.
Вот случай.МЫЛО может быть боль, чтобы начать.Мой опыт заключается в том, чтобы использовать хороший класс мыла или просто не-wsdl режим.Читайте об этом в документах: https://www.php.net/manual/en/soapclient.soapcall.php
Так что не делайте этого:
$return = $soapClient->functionName($data);
Но это:
$return = $soapClient->__SoapCall('functionName', $data);
Также получите контроль надчто хочет сервер, загрузите URL WSDL в клиент, такой как SoapUI https://www.soapui.org/ (это бесплатно).Это позволяет вам проверить, работает ли SoapServer и как вам следует подойти к нему с помощью вашего вызова.
В вашем случае WSDL утверждает следующее:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:pos="http://schemas.datacontract.org/2004/07/PostaWebClient">
<soapenv:Header/>
<soapenv:Body>
<tem:Pickup_Cancel>
<!--Optional:-->
<tem:CLIENTINFO>
<!--Optional:-->
<pos:CodeStation>asd</pos:CodeStation>
<!--Optional:-->
<pos:Password>asd</pos:Password>
<!--Optional:-->
<pos:ShipperAccount>asd</pos:ShipperAccount>
<!--Optional:-->
<pos:UserName>asd</pos:UserName>
</tem:CLIENTINFO>
<!--Optional:-->
<tem:PickupNumber>asd</tem:PickupNumber>
<!--Optional:-->
<tem:Reason>asd</tem:Reason>
</tem:Pickup_Cancel>
</soapenv:Body>
</soapenv:Envelope>
Что переводится в этот код PHP:
$client = new SoapClient("https://etrack.postaplus.net/APIService/PostaWebClient.svc?singleWsdl");
$params = [
'Pickup_Cancel' => [
'CLIENTINFO' => [
'Password' => 'sss',
'ShipperAccount' => 'acc',
'UserName' => 'acc',
'CodeStation' => '',
],
'PickupNumber' => '',
'Reason' => '',
],
];
$client->__SoapCall("Pickup_Cancel", $params);
Посмотрите, как массив соответствует формату WSDL xml?
Это также должно дать вам обратную связь, необходимую для продолжения.Если нет, то, вероятно, пришло время получить «настоящую» помощь :) Goodluck.