SOAP из 1С без WS ссылки

1. Lionlan 03.09.20 10:16 Сейчас в теме
Добрый день, подскажите начинающему. Интеграция с платежным сервисом А-3 их WSDL ссылка в 1с не подгружается ругается на формат данных обмен у них только по SOAP. пытаюсь без подгрузки ссылки WS.
возможен ли такой вариант поключения?
Этот запрос выдаёт 301 ошибку с пустым описанием

Хост = "apidev.a-3.ru";
	Логин = "*******mail.ru"; 
	Пароль = "******";
 	ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
	Новый СертификатКлиентаФайл("D:\Сертификат\vashdomen.p12")
	Новый СертификатыУдостоверяющихЦентровWindows);
	
	HTTPСоединение = Новый HTTPСоединение("apidev.a-3.ru", , Логин, Пароль, , 100, ssl1);    
	
	ЗаголовокЗапросаHTTP = Новый Соответствие();
	ЗаголовокЗапросаHTTP.Вставить("Content-Type", "text/xml");
   	HTTPЗапрос = Новый HTTPЗапрос("https://apidev.a-3.ru/v1/lightapi/paySysEcho/soap/",ЗаголовокЗапросаHTTP);
	HTTPЗапрос.УстановитьТелоИзСтроки("
 	|<ser:paySysEchoRequest xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:ser=""http://www.a-3.ru/partners/services/"">
    |	<authKey>LionLan*mail.ru</authKey>
    |	<requestTime>02.09.2020 11:05</requestTime>
	|</ser:paySysEchoRequest>");
	Результат = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Показать



У меня сомнения с первым параметром:
Новый HTTPЗапрос("https://apidev.a-3.ru/v1/lightapi/paySysEcho/soap/";)

Что тут должно стоять в первом параметре?

На сайте пример запроса выглядит так:
<ser:paySysEchoRequest xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:ser="http://www.a-3.ru/partners/services/">;
<authKey>partner_auth_key</authKey>
<requestTime>15.09.2019 11:05</requestTime>
</ser:paySysEchoRequest>

ссылка на WS:
https://dev.a-3.ru:8002/a3pay_ext/frontSupport/soA3PaymentGate?WSDL

тех описание:
https://tech.a-3.ru/protokol-soa3gate-light-api/tehnicheskoe-opisanie-protokola#paySysEcho
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. voloom 42 03.09.20 14:46 Сейчас в теме
Добрый день,

Через WS ссылки может получиться проще, их можно использовать, чтобы получить типы данных, которые необходимо передавать и получать в качестве результата. Создать объект в конфигураторе WSСсылка и вставить путь к WSDL и система покажет структуру данных. Сохранять не обязательно, просто использовать как подсказку. Я попробовал на вашем примере, требует сертификат для SSL, возможно, в этом причина.

Я делал так на примере EDI:

WSОпределение = Новый WSОпределения("https://edi-ws.esphere.ru/edi.wsdl");
	Прокси = Новый WSПрокси(WSОпределение, "http://edi-express.esphere.ru/", "EdiExpressTransportService", "RelationshipsEndpointPort");
	
	ТипRelationsInput = Прокси.ФабрикаXDTO.Пакеты.Получить("http://edi-express.esphere.ru/").Получить("RelationsInput");
	
	RelationsInput	   = Прокси.ФабрикаXDTO.Создать(ТипRelationsInput);
	RelationsInput.Name	= "login";
	RelationsInput.Password	= "password";
		
	Возврат Прокси.process(RelationsInput);
Показать
3. Lionlan 04.09.20 15:20 Сейчас в теме
С сертификатими все ок, просто формат ссылки не для 1с, поэтому получилось вот так:

	ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
	Новый СертификатКлиентаФайл("D:\Сертификат\vashdomen.p12"),//, "***"),
	Новый СертификатыУдостоверяющихЦентровWindows);
	
	HTTPСоединение = Новый HTTPСоединение("apidev.a-3.ru", , Логин, Пароль, , 100, ssl1);    
	ЗаголовокЗапросаHTTP = Новый Соответствие();
	ЗаголовокЗапросаHTTP.Вставить("Content-Type", "text/xml");
	
	
	HTTPЗапрос = Новый HTTPЗапрос("v1/lightapi/"+Метод+"/xml",ЗаголовокЗапросаHTTP);
 	
	HTTPЗапрос.УстановитьТелоИзСтроки("
	 |<request>
	 |    <authKey>5674567нукен</authKey>
	 |    <requestTime>2020-09-02T11:05:00</requestTime>
	 |</request> ");
	
	Результат = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот