public SendMessage ( Message message ) : SentMessage | ||
message | Message | |
리턴 | SentMessage |
/// <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 certificate = TryInstallOrGetCertificate(); if (certificate == null) return; Console.WriteLine("Успешно получен сертификат с отпечатком: " + certificate.Thumbprint); // авторизуемся по сертификату if (client.AuthenticateWithCertificate(certificate.Thumbprint, appId)) { Console.WriteLine("Успешная авторизация по сертификату, получен токен:"); Console.WriteLine(client.Token); } else { Console.WriteLine("Ошибка авторизации по сертификату"); } // ИНН организации-получателя var inn = "1839839904"; // не знаем КПП, при пустом значении - должно найти головное подразделение организации var kpp = ""; // поиск организации получателя по атрибутам var organizations = client.GetOrganizationListByInnKpp(inn, kpp); foreach (var organization in organizations) Console.WriteLine(organization.Name); // получаем содержимое неформализованного документа из файла на локальном компьютере var filesDir = "../../../../.."; // пример подписи файлов с локального компьютера var filePath = filesDir + "/Documents/Untyped 3.txt"; var filePath2 = filesDir + "/Documents/Untyped 1.png"; var fileBytes = File.ReadAllBytes(filePath); var fileBytes2 = File.ReadAllBytes(filePath2); // создание подписей к бинарному содержимому файлов, подписание с помощью выбранного ранее сертификата var signature = CryptoApiHelper.Sign(certificate, fileBytes, true); var signature2 = CryptoApiHelper.Sign(certificate, fileBytes2, true); // получение текущего ящика var boxInfo = client.GetBoxes().FirstOrDefault(); if (boxInfo == null) { Console.WriteLine("Ошибка при получении ящиков"); return; } var currentBox = boxInfo.Address; // создание документа var document = new Document { Id = Guid.NewGuid().ToString(), DocumentType = DocumentType.Untyped, UntypedKind = null, FileName = Path.GetFileName(filePath), Content = fileBytes, Card = null, NeedSign = false }; // создание еще одного документа (опционально) var document2 = new Document { Id = Guid.NewGuid().ToString(), DocumentType = DocumentType.Untyped, UntypedKind = null, FileName = Path.GetFileName(filePath2), Content = fileBytes2, Card = null, NeedSign = false }; // создаем сообщение для отправки var message = new Message { // генерируем уникальный идентификатор для сообщения Id = Guid.NewGuid().ToString(), // указываем свой текущий ящик (ящик отправителя) From = currentBox, // документы Documents = new[] { document, document2 }, // получатели Recipients = organizations.Select(x => new MessageRecipient { OrganizationBoxId = x.BoxAddress }).ToArray(), // прикрепляем подписи Signs = new[] { new Sign { Id = Guid.NewGuid().ToString(), DocumentId = document.Id, Raw = signature }, new Sign { Id = Guid.NewGuid().ToString(), DocumentId = document2.Id, Raw = signature2 } } }; SentMessage result; try { result = client.SendMessage(message); } catch (Exception ex) { Console.WriteLine("Ошибка при отправке документов: " + ex.Message); Console.ReadKey(); return; } Console.WriteLine("Успешно отправлено исходящее сообщение MessageId = {0}", result.MessageId); Console.WriteLine("Для выхода нажмите enter"); Console.ReadLine(); }