/// <summary> /// Пример авторизации по сертификату /// получение данных по ИНН об организации-получателе /// отправка документа с подписью сертификатом пользователя /// отправка документ без подписания /// </summary> /// <param name="args"></param> private static void Main(string[] args) { var url = "https://service.synerdocs.ru/exchangeservice.svc"; var appId = new Guid().ToString(); var client = new Client(url, false, false, "", "WSHttpsBinding_IExchangeService"); // авторизация по логину и паролю (тут возможно использовать также // авторизацию по сертификату при необходимости) var login = "******"; var password = "******"; if (client.Authenticate(login, password)) { Console.WriteLine("Успешная авторизация, получен токен:"); Console.WriteLine(client.Token); } else { Console.WriteLine("Ошибка авторизации"); Console.ReadKey(); return; } // получение текущего ящика var currentBoxInfo = client.GetBoxes().FirstOrDefault(); if (currentBoxInfo == null) { Console.WriteLine("Ошибка при получении ящиков"); return; } // выбор текущего ящика - от него будем отправлять документы // в простом случае - у пользователя доступен только один ящик // а если пользователь состоит в нескольких организациях - ящиков может быть несколько var currentBox = currentBoxInfo.Address; // ранее сохраненный или полученный ИД документа внутри сообщения, доступного для текущего авторизованного пользователя: // ИД документа - может быть и в формате "50008423799c4c82944b5b82c38be02e" var documentId = "50008423-799c-4c82-944b-5b82c38be02e"; try { // получение тела (бинарного содержимого) документа var documentContent = client.GetDocumentContent(currentBox, documentId); Console.WriteLine("Получено содержимое документа NBytes=" + documentContent.Length); // запрос информации о документе с указаним того, какую информацию необходимо получить var docInfo = client.GetFullDocumentInfo(currentBox, documentId, new FullDocumentInfoRequestParams { GetCard = true, GetContent = false, GetRelatedDocuments = true, GetServiceDocuments = true, GetSigns = true }); if (docInfo != null) { Console.WriteLine("Получена информация о документе"); // получении информации о сообщении документооборота, в которое входит документ var messageId = docInfo.MessageId; var message = client.GetMessage(currentBox, messageId); if (message != null) Console.WriteLine("Получена информации о сообщении документооборота"); } // получение полной информации о документе включая информацию документооборотам и вхождениям, // с указаним того, какую информацию необходимо получить // результат метода дублирует информацию, которую можно получать из других методов API // например информацию о подписях и т.д. var flowDocumentInfo = client.GetFlowDocumentInfo(currentBox, documentId, new FlowDocumentInfoRequestParams { GetSigns = true, GetServiceDocuments = true, GetRelatedDocuments = true, FlowResult = DocumentFlowResultMode.FullInfo }); if (flowDocumentInfo != null) Console.WriteLine("Получена информация о документе с докуметооборотами"); } catch (Exception ex) { Console.WriteLine("Произошла ошибка" + ex.GetType() + " " + ex.Message); Console.ReadKey(); return; } Console.WriteLine("Для выхода нажмите enter"); Console.ReadLine(); }