Работа с сервисом выпуска сертификатов Контур

Проинициализированный сервис IKonturIssuesService можно получить стандартным образом из контекста объектов. Если сервис был добавлен именно в ObjectContent — не используется DI:

var issuesService = context.GetService<IKonturIssuesService>();

Создание заявки на выпуск сертификата

Прежде всего необходимо создать заявку на выпуск сертификата:

var employee = GetReceivingCertificateEmployee(); (1)
var inn = GetReceivingCertificateInn(); (2)
var result = issuesService.CreateCertificateIssue(employee, inn);
1 employee — сотрудник (типа StaffEmployee), для которого формируется заявка на выпуск сертификата.
2 inn — ИНН сотрудника

Метод CreateCertificateIssue вернёт результат операции с ID заявки на выпуск сертификата. Результат операции необходимо проверить на успешность завершения и, при необходимости, самостоятельно вернуть исключение, либо иным образом обработать ошибку:

if (result.Success) (1)
 return result.Data.Id; (2)
throw new ApplicationException(result.Message);
1 Если успешно — возвращается ID заявки
2 Иначе сгенерируем исключение с ошибкой, которую вернул УЦ Контур

Аналогичным образом необходимо обрабатывать результаты других методов сервиса IKonturIssuesService.

Возврат OperationResult не гарантирует обработку всех ошибок внутри метода — используйте try/catch при вызове методов.

Обратите внимание, в карточке сотрудника должны быть заполнены следующие поля:

  • employee.LastName

  • employee.FirstName

  • employee.MiddleName

  • employee.Email

  • employee.Phone

Проверка статуса актуализации заявки

После внесения любых изменений в заявку необходимо проверять статуса её актуализации, иначе следующий запрос к API УЦ Контур может завершиться ошибкой. Проверка статуса актуализации выполняется следующим способом:

var result = issuesService.GetIssue(GetIssueId());
if (!result.Success)
 throw new ApplicationException(result.Message);
return result.Data.Actualized;

Метод GetIssueId возвращает ИД заявки, для которой выполняется операция.

После выполнения любой операции с заявкой всегда проверяйте её статус Actualized и выполняйте следующий запрос только если Actualized в значении true.

Добавление подтверждающего документа в заявку

После создания заявки необходимо добавить в неё подтверждающий документ, например, паспорт РФ:

            var result = issuesService.AddDocumentRequisites(GetIssueId(),
                new IdentityDocument (1)
                {
                    DocumentType = DocumentTypes.Passport,
                    Series = PassportSeries.Text,
                    Number = PassportNumber.Text,
                    IssuerCode = PassportIssuer.Text,
                    IssueDate = PassportDate.SelectedDate.Value
                });

            if (result.Success)
                throw new ApplicationException(result.Message);
1 Устанавливается тип документа и заполняются данные документа.

Прикладывание скан документа к заявке

После добавления данных документа нужно приложить его скан:

            var scanData = new SendingFileInfo (1)
            {
                Data = Resource.passport,
                Name = "Паспорт.pdf",
                FileId = Guid.NewGuid(),
                LongSize = Resource.passport.LongLength
            };

            var result = issuesService.SendDocumentScan(GetIssueId(), scanData, DocumentTypes.Passport);
            if (!result.Success)
            else
                throw new ApplicationException(result.Message);
1 В scanData записываются бинарные данные отправляемого файла, его имя и размер.

Получение заявления на выпуск сертификата

Пользователю необходимо подписать заявление на выпуск сертификата. Получить печатную форму заявления можно:

            var result = issuesService.GenerateRequestTemplate(GetIssueId(), TemplateType.ReleaseStatement);
            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Заявление_{issueId}.pdf"); (1)

            if (result.Success)
                File.WriteAllBytes(path, result.Data);
            else
                throw new ApplicationException(result.Message);
1 Бинарные данные файла заявления записываются в файл Заявление_{issueId}.pdf.

Отправка скана заявления на выпуск сертификата

Пользователь должен подписать заявление. Далее скан документа требуется отправить в Контур УЦ с помощью рассмотренных ранее методов AddDocumentRequisites и SendDocumentScan:

            var result = issuesService.AddDocumentRequisites(GetIssueId(), new IdentityDocument { DocumentType = DocumentTypes.ReleaseStatement });
            if (!result.Success)
                throw new ApplicationException(result.Message);
            var sendResult = issuesService.SendDocumentScan(GetIssueId(), scanData, DocumentTypes.ReleaseStatement);
            if (!sendResult.Success)
                throw new ApplicationException(sendResult.Message);