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