Здравствуйте!
Сломал уже мозг...
Для запроса расчёта стоимости одной из служб доставки используется SOAP
Делаю с помощью класса SoapClient
$SoapClient = new SoapClient(
'http://lk-test.cse.ru/1c/ws/web1c.1cws?wsdl',
array(
'trace' => 1,
'version' => 'SOAP_1_2'
)
);
$response = $SoapClient->Calc($calcParams);
Там есть метод Calc, в который нужно передать параметры запроса (если я правильно понял) Сломал голову как оформить массив параметров $calcParams Там куча повторяющихся ключей Fields... не пойму логики
Отправить нужно вот такой запрос:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header/>
<soap:Body>
<m:Calc xmlns:m="http://www.cargo3.ru">
<m:login>*****</m:login>
<m:password>*****</m:password>
<m:data>
<m:Key>Destinations</m:Key>
<m:List>
<m:Key>Destination</m:Key>
<m:Fields>
<m:Key>SenderGeography</m:Key>
<m:Value>cf862f56-442d-11dc-9497-0015170f8c09</m:Value>
<m:ValueType>string</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>RecipientGeography</m:Key>
<m:Value>cf862f56-442d-11dc-9497-0015170f8c09</m:Value>
<m:ValueType>string</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>TypeOfCargo</m:Key>
<m:Value>4aab1fc6-fc2b-473a-8728-58bcd4ff79ba</m:Value>
<m:ValueType>string</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>Weight</m:Key>
<m:Value>1</m:Value>
<m:ValueType>float</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>VolumeWeight</m:Key>
<m:Value>1</m:Value>
<m:ValueType>float</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>Volume</m:Key>
<m:Value>1</m:Value>
<m:ValueType>float</m:ValueType>
</m:Fields>
<m:Fields>
<m:Key>Qty</m:Key>
<m:Value>1</m:Value>
<m:ValueType>int</m:ValueType>
</m:Fields>
</m:List>
</m:data>
<m:parameters xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<m:Key>Parameters</m:Key>
<m:List>
<m:Key>ipaddress</m:Key>
<m:Value xsi:type="xs:string">10.0.0.1</m:Value>
<m:ValueType>string</m:ValueType>
</m:List>
</m:parameters>
</m:Calc>
</soap:Body>
</soap:Envelope>
Решил так:
$params = new stdClass();
$params->login = '*****';
$params->password = '*****';
$params->data->Key = 'Destinations';
$params->data->List->Key = 'Destination';
$params->data->List->Fields[0]->Key = 'SenderGeography';
$params->data->List->Fields[0]->Value = 'cf862f77-442d-11dc-9497-0015170f8c09';
$params->data->List->Fields[0]->ValueType = 'string';
$params->data->List->Fields[1]->Key = 'RecipientGeography';
$params->data->List->Fields[1]->Value = 'dc5eacd6-442c-11dc-9497-0015170f8c09';
$params->data->List->Fields[1]->ValueType = 'string';
$params->data->List->Fields[2]->Key = 'TypeOfCargo';
$params->data->List->Fields[2]->Value = '4aab1fc6-fc2b-473a-8728-58bcd4ff79ba';
$params->data->List->Fields[2]->ValueType = 'string';
$params->data->List->Fields[3]->Key = 'Weight';
$params->data->List->Fields[3]->Value = 1;
$params->data->List->Fields[3]->ValueType = 'float';
$params->data->List->Fields[4]->Key = 'VolumeWeight';
$params->data->List->Fields[4]->Value = 1;
$params->data->List->Fields[4]->ValueType = 'float';
$params->data->List->Fields[5]->Key = 'Volume';
$params->data->List->Fields[5]->Value = 1;
$params->data->List->Fields[5]->ValueType = 'float';
$params->data->List->Fields[6]->Key = 'Qty';
$params->data->List->Fields[6]->Value = 1;
$params->data->List->Fields[6]->ValueType = 'int';
$SoapClient = new SoapClient(
'http://lk-test.cse.ru/1c/ws/web1c.1cws?wsdl',
array(
'trace' => 1,
'version' => 'SOAP_1_2'
)
);
try {
$response = $SoapClient->Calc($params);
} catch (Exception $ex){
echo $ex;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как сделать загрузку функций более простой и быстрой? Необходим такой результат: