akxxiv
Новичок
Есть такой WSDL https://testservice.synerdocs.ru/ExchangeService.svc?singlewsdl
Я скармливаю SOAP данные, он формирует XML, на который сервис ругается. А именно н отсутствие атрибута у тега, который SOAP упорно отказывается проставлять. Возможно я какие-то настройки пропустил, или данные не той структуры передал:
Передаю данные (урезанный вариант)
Предполагаю получить (вариант из примера в мануале):
А получаю:
Т.е. в ноде <ns1:Consignor> отсутствует атрибут i:type="d4p1:LegalEntityCounterparty" на что сервис и ругается. А вот как его туда прописать (если конечно не вручную XML формировать, не могу понять. Есть варианты как это сделать?
-------------
И еще один вопрос до кучи. Как правильно передавать значение типа EnumValue, дело в том, что <address> содержит в семе параметр AddressLocationType такого типа, который может иметь следующие значения https://help.synerdocs.ru/index.html?om_addresslocationtype_tip_zapisi_adresa.htm но как их передать в SOAP? Я пробовал:
Но в первых 2-х случаях сервис ругался, а в 3-м просто генерировал путой <ns1:AddressLocationType></ns1:AddressLocationType>
Я скармливаю SOAP данные, он формирует XML, на который сервис ругается. А именно н отсутствие атрибута у тега, который SOAP упорно отказывается проставлять. Возможно я какие-то настройки пропустил, или данные не той структуры передал:
Передаю данные (урезанный вариант)
PHP:
$data['Consignee']['Address']['CountryCode'] = 643;
$data['Consignee']['Address']['ForeignStreetAddress'] = 'Просвещения пр. д. 80 корп. 2';
$data['Consignee']['Inn'] = '4703058668';
$data['Consignee']['OrganizationName'] = 'ООО "О`КЕЙ"';
XML:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GenerateTransportWaybillConsignorTitle xmlns="http://synerdocs.ru">
<credentials xmlns:d4p1="http://schemas.datacontract.org/2004/07/Midway.ObjectModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:AuthToken>d6f491bd-3b1d-454a-8d4a-576bd78175d7</d4p1:AuthToken>
</credentials>
<request xmlns:d4p1="http://schemas.datacontract.org/2004/07/Midway.ObjectModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:Model>
.......
<!--Данные о грузоотправителе (1 раздел ТрН), в данном случае ЮЛ-->
<d4p1:Consignor i:type="d4p1:LegalEntityCounterparty">
<!--Адрес грузоотправителя-->
<d4p1:Address>
<d4p1:CountryCode>643</d4p1:City>
<d4p1:ForeignStreetAddress>Просвещения пр. д. 80 корп. 2</d4p1:District>
</d4p1:Address>
<d4p1:Inn>4703058668</d4p1:Inn>
<d4p1:OrganizationName>ООО "О`КЕЙ"</d4p1:OrganizationName>
</d4p1:Consignor>
.....
</request>
</GenerateTransportWaybillConsignorTitle>
</s:Body>
</s:Envelope>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://schemas.datacontract.org/2004/07/Midway.ObjectModel"
xmlns:ns2="http://synerdocs.ru">
<SOAP-ENV:Body>
<ns2:GenerateTransportWaybillConsignorTitle>
<ns2:credentials>
<ns1:AuthToken>78dcc9a9-a0b1-439f-83c2-aa7706b47cb0</ns1:AuthToken>
</ns2:credentials>
<ns2:request>
<ns1:Model>
....
<ns1:Consignor>
<ns1:Address>
<ns1:CountryCode>643</ns1:CountryCode>
<ns1:ForeignStreetAddress>Просвещения пр. д. 80 корп. 2</ns1:ForeignStreetAddress>
</ns1:Address>
<ns1:Inn>4703058668</ns1:Inn>
<ns1:OrganizationName>ООО "О`КЕЙ"</ns1:OrganizationName>
</ns1:Consignor>
....
</ns2:request>
</ns2:GenerateTransportWaybillConsignorTitle>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
-------------
И еще один вопрос до кучи. Как правильно передавать значение типа EnumValue, дело в том, что <address> содержит в семе параметр AddressLocationType такого типа, который может иметь следующие значения https://help.synerdocs.ru/index.html?om_addresslocationtype_tip_zapisi_adresa.htm но как их передать в SOAP? Я пробовал:
PHP:
# 1. Так:
$data['Consignor']['Address']['AddressLocationType'] = 1;
# 2. И так:
$data['Consignor']['Address']['AddressLocationType'] = 'UnstructuredAddress';
# 3. И даже так:
$data['Consignor']['Address']['AddressLocationType']['UnstructuredAddress'] = 1;