Работа с сервисом выпуска сертификатов Контур
Проинициализированный сервис 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);