Работа с входящими документооборотами
Работа с входящими документооборотами от СФР состоит из нескольких этапов:
Поиск входящих документооборотов от СФР.
Запрос на получение документов в СФР.
Отправка ответных документов.
Особенности документооборотов в СЭДО
Для получения документов от СФР нужно выполнить подписку оператора на организацию по РНС.
Входящие документообороты от СФР в статусе received не содержат документов. Чтобы их получить и поменять статус документооборотов, нужно сформировать запрос на получение документов.
Все отправляемые в СЭДО документы являются SOAP-запросами.
Запросы должны быть подписаны подписью в формате XMLDsig.
Поиск входящих документооборотов от СФР
Найдите входящие документообороты от СФР: GET Docflows. В запросе укажите фильтр type
и тип нужного ДО согласно спецификации, например, type=fss-sedo-pvso-notification&type=fss-sedo-sick-report-change-notification&type=fss-sedo-error
.
Важно
В результатах поиска не будет документооборотов с типами fss-sedo-*
, если их тип не был указан в параметре type
.
Новые документообороты будут отображаться в статусе received. Для получения документов и смены статуса ДО нужно отправить запрос на получение документов от СФР. Далее работайте с каждым ДО по отдельности.
Запрос на получение документов от СФР
Если в веб-интерфейсе Контур.Экстерн, в Реквизитах плательщика выбран способ получения входящих документов из СЭДО автоматически с помощью сертификата оператора, то запросы на получения документов через API отправлять не нужно. Входящие документы автоматически будут подгружены в документообороты и в них будут ссылки на reply.
В остальных случаях для получения документов от СФР нужно сформировать, подписать и отправить запрос. Для этого используйте методы генерации запроса в СЭДО СФР:
Создайте запрос на получение документов от СФР: POST GenerateDocumentsRequest. В запросе укажите id найденного входящего документооборота. В ответе метод вернет шаблон запроса и хэш для подписи.
Подпишите хэш, который вернется в параметре
DataToSign
в формате byte[].Добавьте необработанную подпись к запросу: PUT SaveDocumentsRequestSignature.
Отправьте запрос на получение документов в СФР: POST SendDocumentsRequest.
Когда СФР обработает запрос, он отправит запрошенный документ и статус ДО поменяется:
Для следующих документооборотов документы появятся только во входящих ДО:
urn:docflow:fss-sedo-pvso-notification – извещение ПВСО;
urn:docflow:fss-sedo-sick-report-change-notification – уведомление об изменении статуса ЭЛН;
urn:docflow:fss-sedo-demand – требование СФР.
Статус ДО поменяется на response-arrived. Для данных документооборотов потребуется отправка ответных документов: «Отметка о прочтении» и «Извещение о прочтении».
Для остальных входящих документооборотов статус поменяется на response-arrived. Документы будут только во входящем ДО. Для данных документооборотов потребуется отправка ответного документа «Отметка о прочтении».
Примечание
Рекомендуем для дальнейшей работы каждый документооборот вычитать отдельно методом GET Docflow.
Отправка ответных документов
Отметка о прочтении
Найдите в поле
documents
полученного ДО документ с соответствующим типом:
Чтобы получить файл документа, возьмите идентификатор
content-id
в метаинформации документа, в моделиdocflow-document-contents
и скачайте документ из Сервиса контентов.Создайте ответный документ «Отметка о прочтении» к полученным документам. Это можно сделать несколькими способами:
Сгенерирйте ответный документ: POST CreateReplyDocument. Используйте идентификатор найденного документа для поля
documentId
. Укажите в полеdocumentType
тип документа для нужного ДО из таблицы ниже.Перейдите по ссылке из поля
links
в параметреrel
, содержащей тип нужного ответного документа.
Типы ответных документов для генерации отметки о прочтении:
Подписывать «Отметку о прочтении» не нужно.
Отправьте ответный документ: POST SendReplyDocument. После отправки отметки о прочтении статус документооборота поменяется на finished.
Извещение о прочтении
Помимо отметки о прочтении для документооборотов urn:docflow:fss-sedo-pvso-notification, urn:docflow:fss-sedo-sick-report-change-notification и urn:docflow:fss-sedo-demand нужно дополнительно создать, подписать и отправить в СФР ответный документ «Извещение о прочтении».
Создайте ответный документ. Это можно сделать несколькими способами:
Сгенерируйте ответный документ: POST CreateReplyDocument. При запросе указывает в поле
documentType
тип документа, который имеет видfss-sedo-*-receipt-notification-message
, где * - наименование документооборота.Перейдите по ссылке из поля
links
в параметреrel
, содержащей тип нужного ответного документа.
Возьмите контент подписи из метаинформации созданного документа в параметре
data-to-sign
.Подпишите эти данные необработанной (raw) подписью.
Добавьте подпись к ответному документу: PUT ReplyDocumentSignature.
Отправьте ответный документ: POST SendReplyDocument. После отправки отметки о прочтении статус документооборота поменяется на finished.
Результат принятия извещения о прочтения появится в текущем и во входящем документообороте urn:docflow:fss-sedo-receipt-notification-result – результат подтверждения прочтения.
Работа с ошибками
Если в ходе документооборота с СЭДО СФР появится ошибка, то она может поступить в виде документа в исходном ДО. В этом случае статус документооборота поменяется на finished. Типы документов об ошибке будут иметь вид fss-sedo-*-exchange-error
, где * - наименование документооборота.
Тестирование сценариев
Если для тестирования вы используете сертификаты Контура, то они уже готовы для работы с СЭДО. Если вы используете другие сертификаты, то сертификаты удостоверяющих центров должны быть добавлены в список доверенных сертификатов со стороны СФР.
Для удобства тестирования сценариев работы в СЭДО СФР используйте коллекцию Postman:
Коллекция Postman для работы с входящими документооборотами
.