Интеграция системы электронного документооборота в мобильное приложение
Согласование договора через мобильное приложение, подписание акта приёма работ на планшете прямо на объекте, отправка первичных документов в бухгалтерию без бумаги. Интеграция ЭДО в мобильный продукт — это не просто API-запросы: здесь электронная подпись, криптография, юридическая значимость документов и специфика российского регуляторного поля.
Экосистема ЭДО в России
Основные операторы, с которыми приходится интегрироваться:
| Оператор | API | Аккредитация ФНС | Особенности |
|---|---|---|---|
| Диадок (Контур) | REST API | Да | Наиболее распространён, хорошая документация |
| СФЕРА Курьер (СКБ Контур) | REST API | Да | Акцент на логистические документы |
| 1С-ЭДО | Нет публичного API | Да | Только через шлюз 1С |
| Tinkoff ЭДО | REST API | Да | Более новый, документация развивается |
| ЭДО Лайт (Тензор, СБИС) | REST API | Да | Интеграция с экосистемой СБИС |
Для новых проектов чаще выбирают Диадок — наиболее полный API, большая клиентская база, хорошая документация на developer.diadoc.ru.
Электронная подпись: ключевой момент
Юридически значимый ЭДО требует квалифицированной электронной подписи (КЭП) или неквалифицированной (НЭП) в зависимости от типа документа. Это ключевое отличие от «нажать кнопку Подписать» в интерфейсе.
На мобильном устройстве подписание реализуется несколькими способами:
1. Облачная подпись (рекомендуется для мобильных). КЭП хранится в защищённом хранилище оператора ЭДО или удостоверяющего центра. Приложение запрашивает подписание через API — пользователь подтверждает операцию через SMS-код или push-уведомление. Закрытый ключ никогда не покидает облако. Диадок предоставляет облачную подпись через Контур.Крипто.
Это правильный путь для мобильных приложений. Хранение закрытого ключа КЭП на мобильном устройстве — юридически рискованно и технически сложно.
2. Работа через токен/смарт-карту. Подключение USB-токена (Рутокен, eToken) через Lightning/USB-C адаптер — экзотика для мобильных, но бывает в промышленных сценариях. Требует специальных SDK от производителя токена и поддержки MFi.
3. Простая электронная подпись (ПЭП). Для внутреннего ЭДО (согласование внутри компании, не требующее КЭП) можно обойтись ПЭП — это по сути авторизованное действие пользователя в системе, которое логируется. Юридическая сила ниже, но для внутреннего оборота достаточно.
Интеграция с Диадок API
Авторизация — OAuth 2.0 с client credentials или через Контур.ID. Для мобильного приложения используем Authorization Code Flow:
GET https://auth.kontur.ru/api/authorization/v5.7/oauth/login
?client_id={client_id}
&response_type=code
&redirect_uri=myapp://auth/callback
&scope=diadoc
После получения code обмениваем на access_token. Токен живёт ограниченное время — реализуем автоматическое обновление через refresh_token.
Получение списка документов:
GET https://diadoc-api.kontur.ru/V3/GetDocuments
?boxId={boxId}&filterCategory=Any.Incoming
Authorization: DiadocAuth ddauth_api_client_id={client_id},ddauth_token={token}
Ответ — XML или JSON в зависимости от заголовка Accept. Для мобильного предпочтительнее JSON.
Работа с документами на устройстве
Просмотр PDF. Диадок возвращает документы в формате PDF или TIFF (для формализованных документов — XML). На iOS рендерим PDF через PDFKit (встроен с iOS 11), для TIFF — через UIImage. На Android — PdfRenderer или библиотека AndroidPdfViewer. Для XML формализованных документов (УПД, счёт-фактура) нужен рендеринг через XSLT-шаблон — Диадок предоставляет печатные формы через API.
Подписание. При облачной подписи: POST /V3/PostSignatures с DocumentId и подтверждением пользователя. API возвращает статус подписания асинхронно — нужен polling или вебхук.
Создание исходящего документа. Для неформализованных документов: пользователь прикрепляет PDF/DOCX из файловой системы (UIDocumentPickerViewController / ACTION_OPEN_DOCUMENT), мы делаем POST /V3/PostMessagePatch с base64-encoded содержимым файла и метаданными.
Формализованные документы (УПД, ТОРГ-12, акты)
Это отдельная история. Формализованные документы — это XML по форматам ФНС (приказы ММВ-7-15/820@, ЕД-7-26/736@). Их нельзя просто прикрепить как файл — нужно генерировать XML из данных по формату. Диадок предоставляет генератор XML через POST /GenerateTorg12XmlForSeller, POST /GenerateUniversalTransferDocumentXmlForSeller и аналогичные методы.
На мобильном в большинстве случаев пользователь не создаёт УПД с нуля — он согласовывает или подписывает уже созданный документ. Создание формализованных документов логичнее делать на веб-интерфейсе или в ERP.
Уведомления о новых документах
Push при поступлении нового документа на согласование — ключевая фича для рабочего ЭДО-приложения. Диадок поддерживает вебхуки (POST /V3/Subscriptions): при новом событии система делает POST на ваш endpoint, сервер отправляет FCM/APNs push.
Обработка на мобильном: нажатие на пуш открывает список документов с фильтром «требует действия».
Офлайн и кэширование
Документы кэшируем локально — пользователь может просматривать уже загруженные документы без интернета. Для чувствительных данных — шифруем кэш через iOS Data Protection (класс NSFileProtectionComplete) или Android Keystore + AES-256. Список документов можно хранить в Core Data / Room с синхронизацией при появлении сети.
Процесс внедрения
- Аудит требований: какие типы документов, какая подпись (КЭП/НЭП/ПЭП), какой оператор ЭДО уже используется в компании
- Выбор метода подписания: облачная подпись — единственный разумный вариант для мобильных пользователей без корпоративного MDM
- Прототип интеграции: тестовая среда Диадока / другого оператора, базовые запросы
- Разработка: авторизация, список документов, просмотр, подписание
- Тестирование: юридические сценарии обязательно проверяем с оператором ЭДО
- Аудит безопасности: хранение токенов, шифрование кэша, защита от перехвата
Сроки зависят от сложности: просмотр и согласование без создания документов — 3-4 недели. Полный цикл с созданием, подписанием и интеграцией облачной КЭП — 2-3 месяца. Работа с формализованными документами добавляет ещё 2-4 недели.







