В сервисе используется понятия:
- Документ - файл с данными
- Пакет - набор файлов (копия Документа, его подпись, сопутствующие технологические квитанции, титулы и т.п. неразрывно связанные с документом)
- Группа пакетов - набор пакетов имеющих общего отправителя и получателя, передающихся одновременно.
Порядок работы:
Загружаем необходимые для отправки документы, указывая свой идентификатор для каждого загружаемого файла ID (GUID):
- неформализованный - /api/v1/documents/{DocumentId}/informal,
- формализованный УПД (json) - /api/v1/documents/upd.
- с автоопределением типа - /api/v1/documents/{id}
После загрузки формализованного документа (УПД), сервис автоматически выполняет запрос по визуализации документа. При завершении запроса формируется и передается в
очередь сообщений для Организации Id pdf файла визуализации. При необходимости, запрашиваем визуализацию черновика документа в формате pdf
/api/v1/documents/upd/draft-visualization/{id}.
Создаем группу пакетов методом
- /api/v1/package-groups, указывая код абонента получателя документов
recipientAbonentCode или, если код абонента не известен, блок
recipientOrg (e-mail, Название, ИНН, КПП, ОГРН получателя документов), при этом для каждого документа создается Пакет внутри Группы пакетов. Для каждого документа проставляется необходимость подписания его получателем.
При необходимости добавить пакеты в группу пакетов можно методом -
/api/v1/package-groups/{id}/packages. Для каждого документа проставляется необходимость подписания его получателем.
Т.е. любой документ всегда "завернут" в пакет и далее группу пакетов.
Подписываем документы:
- Пользовательским сертификатом: Запрашиваем хеши документов пакета для подписания, передавая сертификат подписанта - /api/v1/sign/package-group/prepare, подписываем хеши на клиенте и завершаем подписание методом - /api/v1/sign/package-group/finish
- Серверным сертификатом, указав UserId сотрудника, чей сертификат хранится на сервере - /api/v1/sign/package-group/user
- Отправляем ссылку на подписание нужному сотруднику, указав идентификатор сотрудника, кто будет подписывать документы - /api/v1/sign/package-group/user.
Идентификатор Сотрудника можно получить методом /{orgId}/usersПосле подписания документов с кодом абонента Сервис проверит наличие связи с указанным Абонентом, если ее нет - Сервис высылает приглашение этому Абоненту. При наличии установленной связи документ отправляется получателю.
При отсутствии кода Абонента, Сервис подготовит ссылку для подписания загруженных документов и отправит ее на указанный e-mail получателя.
Получатель, пройдя по ссылке сможет: подписать документ / указать нужный код Абонента в том сервисе ЭДО, который он использует / отказаться от подписания, указав причину и контактные данные для связи.
Сервис подготовит и передаст соответствующее выбранному действию контрагента сообщение в очередь.
Все статусы обработки документов передаются в индивидуальную
очередь сообщений в Rabbit.
Так же в эту очередь передаются все факты принятия или отказа приглашения для обмена документами.