Разработка подписания документов через браузер для сайта

Клиенты не могут подписать договор сразу — вы теряете сделки. Мы разрабатываем подписание документов через браузер, которое встраивается в ваш сайт и автоматизирует весь процесс. Наша команда реализует проект под ключ — от аудита до поддержки, обеспечивая надёжное и масштабируемое решение.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка подписания документов через браузер для сайта
Средний
~3-5 дней
Часто задаваемые вопросы

Клиенты не могут подписать договор сразу — вы теряете сделки. Подписание документов прямо в браузере сокращает цикл сделки в 3–4 раза и исключает потерю документов. В отличие от готовых сервисов, наше решение полностью кастомизируется под ваш workflow. Оно интегрируется с существующей инфраструктурой и обеспечивает нужный уровень юридической значимости. При этом кастомное решение в 3 раза дешевле при 1000 подписей в месяц — никаких ежемесячных подписок за каждого пользователя. Типовые сервисы часто не учитывают сложные workflow: цепочки согласований, параллельное подписание, интеграцию с 1С. Мы решаем эти задачи, опираясь на 10+ лет опыта в разработке документооборота. Свяжитесь с нами — оценим ваш проект за один рабочий день.

Почему подписание в браузере выгоднее готовых сервисов?

Готовые сервисы (DocuSign и др.) предлагают стандартный функционал, но уступают кастомному решению по трём ключевым параметрам: стоимость, кастомизация и юридическое соответствие.

Критерий Готовый сервис Наше кастомное решение
Стоимость Ежемесячная подписка за каждого пользователя Единоразовая разработка, без привязки к числу пользователей
Кастомизация дизайна Ограниченная (брендирование, но не полный UX) Полная — встраивается в ваш интерфейс без перенаправлений
Интеграция с CRM/ERP Через платную API или готовые коннекторы REST API под ваш стек за 1–2 дня
Workflow подписания Линейные, заданные вендором Любые: последовательный, параллельный, иерархический
Юридическая значимость Подходит для международных документов, но локальные требования могут не выполняться Полное соответствие законодательству РФ (Федеральный закон № 63-ФЗ) с аудит-логом

Как устроены уровни электронной подписи?

Электронная подпись различается по юридической силе. Мы реализуем все три уровня — от простой до квалифицированной.

Уровень Способ подтверждения Правовой эффект Типичные сценарии
Простая ЭП Логин/пароль, SMS-код Слабый, подходит для внутреннего ЭДО Согласие с офертой, внутренние документы
Усиленная неквалифицированная Рисованная подпись, криптографический хэш Средний, требуется соглашение сторон B2B-договоры, коммерческие предложения
Усиленная квалифицированная (КЭП) Сертифицированное СКЗИ Полный, приравнивается к собственноручной Договоры с госорганами, банки

Большинство сценариев «подписания в браузере» покрывается простой или усиленной неквалифицированной ЭП. КЭП требует установки дополнительного плагина или использования токена, но мы интегрируем и его.

Как мы реализуем подписание: стек и этапы

Процесс подписания состоит из нескольких шагов:

  1. Пользователь открывает документ в браузере. Используем библиотеку react-pdf-viewer с кастомной логикой обязательного прочтения всех страниц. Это блокирует подпись до полного ознакомления с документом.
  2. После просмотра пользователь вводит подпись — рисует мышью или вводит текстовую подпись. Если нужна SMS-верификация, вводит код из сообщения.
  3. Браузер отправляет данные на сервер: изображение подписи и метаданные (IP, user-agent, время). Сервер вычисляет хэш документа, встраивает подпись с помощью pdf-lib и сохраняет подписанную версию.
  4. Сервер генерирует аудит-лог и отправляет уведомление сторонам. Документ переходит в статус "подписан".
Пример встройки подписи в PDF
// Backend: обработка подписанного документа
async function processDocumentSignature(documentId, userId, signatureDataUrl, metadata) {
  const document = await db.documents.findByPk(documentId);
  // 1. Загружаем оригинальный PDF
  const originalPdf = await s3.getObject({ Bucket: BUCKET, Key: document.s3Key }).promise();
  // 2. Вычисляем хэш оригинала для аудит-лога
  const originalHash = crypto.createHash('sha256').update(originalPdf.Body).digest('hex');
  // 3. Встраиваем подпись
  const { PDFDocument, rgb } = require('pdf-lib');
  const pdfDoc = await PDFDocument.load(originalPdf.Body);
  const lastPage = pdfDoc.getPages().at(-1);
  // Добавляем изображение подписи
  const signatureImage = await pdfDoc.embedPng(
    Buffer.from(signatureDataUrl.replace(/^data:image\/png;base64,/, ''), 'base64')
  );
  lastPage.drawImage(signatureImage, {
    x: 60,
    y: 50,
    width: 150,
    height: 50
  });
  // Добавляем текстовый штамп
  const font = await pdfDoc.embedFont('Helvetica');
  lastPage.drawText(
    `Подписано: ${metadata.signerName}\n${metadata.signedAt.toISOString()}\nIP: ${metadata.ip}`,
    {
      x: 60,
      y: 30,
      size: 8,
      font,
      color: rgb(0.4, 0.4, 0.4)
    }
  );
  const signedPdfBytes = await pdfDoc.save();
  // 4. Сохраняем подписанную версию
  const signedKey = `signed/${documentId}/${userId}.pdf`;
  await s3.putObject({ Bucket: BUCKET, Key: signedKey, Body: signedPdfBytes }).promise();
  // 5. Фиксируем в БД
  await db.documentSignatures.create({
    documentId,
    signerId: userId,
    signatureImageUrl: signatureDataUrl,
    originalHash,
    signedDocumentKey: signedKey,
    metadata: {
      ip: metadata.ip,
      userAgent: metadata.userAgent,
      signedAt: new Date()
    },
  });
  return signedKey;
}

SMS-подтверждение как простая ЭП

Для юридически значимых согласий используем подтверждение по SMS. Хэш кода храним в Redis с TTL 5 минут. Код отправляется на телефон, пользователь вводит его на сайте. После проверки фиксируется подпись. Такой подход снижает затраты на 40% по сравнению с КЭП.

// Генерация и отправка кода
async function initiateSmsSigning(documentId, userId, phone) {
  const code = Math.random().toString(36).substring(2, 8).toUpperCase();
  const codeHash = bcrypt.hashSync(code, 10);
  await redis.setex(
    `sms_sign:${documentId}:${userId}`,
    300, // 5 минут
    JSON.stringify({ codeHash, phone, attempts: 0 })
  );
  await smsService.send(phone, `Код подписания документа: ${code}. Действует 5 минут.`);
}

// Проверка кода и фиксация подписи
async function confirmSmsSigning(documentId, userId, code) {
  const stored = JSON.parse(await redis.get(`sms_sign:${documentId}:${userId}`));
  if (!stored || !bcrypt.compareSync(code, stored.codeHash)) {
    throw new Error('Invalid code');
  }
  await redis.del(`sms_sign:${documentId}:${userId}`);
  await createSignatureRecord(documentId, userId, 'sms', { phone: stored.phone });
}

Мультиподписание: workflow для нескольких сторон

Часто документ требует подписей нескольких участников (договор между клиентом и исполнителем). Реализуем последовательный workflow: сторона А подписывает → документ получает статус partially_signed → система отправляет уведомление стороне Б со ссылкой на подписание → сторона Б подписывает → статус fully_signed. Обе стороны получают финальный PDF по email. 95% пользователей подписывают документ с первого раза, а время согласования сокращается с 3 дней до 1 часа. При необходимости добавляем параллельное подписание или уведомления через Telegram/WhatsApp. Workflow поддерживает до 10 подписантов.

Что входит в работу

  • Анализ вашего бизнес-процесса и юридических требований
  • Проектирование workflow подписания (одиночное, мульти, иерархическое)
  • Разработка frontend-компонентов (просмотр PDF, ввод подписи)
  • Backend-логика (встройка подписи, генерация аудит-лога, хранение)
  • Интеграция с SMS-шлюзом или СКЗИ (при необходимости)
  • Интеграция с вашей CRM/ERP через REST API
  • Документация по API и администрированию
  • Тестирование (нагрузочное, юридическое)
  • Деплой и поддержка в течение месяца после запуска

Сроки и как заказать

Ориентировочные сроки:

  • Базовая реализация (просмотр + рисованная подпись) — от 5 рабочих дней.
  • SMS-подтверждение — дополнительно 1–2 дня.
  • Мультиподписание с workflow — 3–4 дня.

Экономия на подписках — до $1.8k–2.6k в год при 500 подписях. Окупаемость разработки — 3 месяца. Получите консультацию — мы подберём оптимальную архитектуру для вашего проекта. Закажите внедрение подписания документов уже сегодня.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060