Интеграция электронной подписи SignNow на сайт

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

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

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

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

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

Руководитель интернет-магазина тратил до 2 часов на согласование договоров с клиентами — после интеграции с SignNow время сократилось до 5 минут. Подключение электронной подписи к сайту часто тормозится сложной настройкой JWT, SDK и длительных согласований. SignNow от airSlate выделяется простым REST API и доступной ценой. Наша команда за время работы реализовала более 30 таких интеграций — от небольших интернет-магазинов до корпоративных порталов. Средняя экономия времени на подписание — до 70%. Свяжитесь с нами для консультации — мы подготовим решение под ваш проект.

Как SignNow снижает затраты на документооборот?

SignNow не требует покупки SDK и сложной инфраструктуры. Достаточно OAuth 2.0 и прямых REST-запросов. По данным официального REST API SignNow, система выдерживает до 1000 запросов в минуту — хватает для любого среднего бизнеса. Затраты на интеграцию окупаются за 2–3 месяца за счёт сокращения ручного труда. Сравните: ручное согласование договора в среднем занимает 2 часа, с SignNow — 5–10 минут.

Как настроить аутентификацию в SignNow?

SignNow использует OAuth 2.0 с грантом client_credentials для серверных интеграций. Это проще, чем у DocuSign — не нужен JWT или Legacy Header. Вот как мы получаем токен:

class SignNowAuthService {
    private string $baseUrl = 'https://api.signnow.com';

    public function getToken(): string
    {
        $response = Http::withBasicAuth(
            config('services.signnow.client_id'),
            config('services.signnow.client_secret')
        )->asForm()->post("{$this->baseUrl}/oauth2/token", [
            'grant_type' => 'client_credentials',
            'scope' => '*',
        ]);

        $token = $response->json('access_token');
        Cache::put('signnow_token', $token, now()->addMinutes(55));

        return $token;
    }

    public function token(): string
    {
        return Cache::get('signnow_token') ?? $this->getToken();
    }
}

Токен живёт 3600 секунд, мы кешируем его с запасом в 5 минут. Для операций от имени конкретного пользователя используется Password Grant, но в большинстве кейсов достаточно client_credentials.

Загрузка документа и простановка полей

После аутентификации загружаем PDF (максимальный размер — 50 МБ) и добавляем поля подписей. SignNow поддерживает smart fields — если в PDF есть анкоры вида [[sig|req|signer1]], поля подписи ставятся автоматически. Это удобнее, чем вычислять координаты вручную.

class SignNowDocumentService {
    public function __construct(private SignNowAuthService $auth) {}

    public function uploadDocument(string $pdfPath, string $fileName): string {
        $response = Http::withToken($this->auth->token())
            ->attach('file', file_get_contents($pdfPath), $fileName)
            ->post('https://api.signnow.com/document');

        return $response->json('id');
    }

    public function addSignatureFields(string $documentId, array $signers): void {
        $fields = [];
        $roleIndex = 0;

        foreach ($signers as $signer) {
            $fields[] = [
                'type' => 'signature',
                'role' => $signer['role'] ?? "Signer {$roleIndex}",
                'role_id' => (string)$roleIndex,
                'required' => true,
                'height' => 40,
                'width' => 200,
                'x' => 100,
                'y' => 600,
                'page_number' => 0,
            ];
            $roleIndex++;
        }

        Http::withToken($this->auth->token())
            ->put("https://api.signnow.com/document/{$documentId}", ['fields' => $fields]);
    }
}

Мы используем анкоры — это сокращает время интеграции и исключает ошибки позиционирования.

Как отправить документ на подпись и получить статус?

Для отправки приглашения подписантам используем метод invite. SignNow позволяет настроить напоминания и срок действия:

public function sendInvite(string $documentId, array $signers): string {
    $recipients = [];
    foreach ($signers as $index => $signer) {
        $recipients[] = [
            'email' => $signer['email'],
            'role' => $signer['role'] ?? "Signer {$index}",
            'role_id' => (string)$index,
            'order' => $index + 1,
            'reminder' => [
                'remind_before' => 0,
                'remind_after' => 3,
                'remind_repeat' => 2,
            ],
            'expiration_days' => 30,
            'subject' => 'Пожалуйста, подпишите документ',
            'message' => "Здравствуйте, {$signer['name']}! Прошу вас подписать прикреплённый документ.",
        ];
    }
    $response = Http::withToken($this->auth->token())
        ->post("https://api.signnow.com/document/{$documentId}/invite", [
            'to' => $recipients,
            'from' => config('services.signnow.sender_email'),
        ]);
    return $response->json('status');
}

После подписания SignNow присылает вебхук. Мы регистрируем событие document.complete и обрабатываем его:

// Регистрация вебхука
Http::withToken($this->auth->token())
    ->post('https://api.signnow.com/api/v2/events', [
        'event' => 'document.complete',
        'entity_id' => $documentId,
        'action' => 'callback',
        'callback_url' => route('webhooks.signnow'),
    ]);

// Обработчик
public function handleSignNowWebhook(Request $request): Response
{
    $data = $request->json()->all();

    if (($data['event'] ?? '') === 'document.complete') {
        $documentId = $data['meta']['document_id'];
        DownloadSignedDocumentJob::dispatch($documentId);
    }

    return response()->noContent();
}

Embedded signing: подпись без перехода на SignNow

Если нужно, чтобы клиент подписал документ, не покидая ваш сайт, используем embedded signing — получаем ссылку (действует 60 минут) и встраиваем её в iframe.

public function getSigningLink(string $documentId, string $email): string {
    $response = Http::withToken($this->auth->token())
        ->post("https://api.signnow.com/link", [
            'document_id' => $documentId,
        ]);

    return $response->json('url');
}

Это работает для большинства браузеров, но требует обработки postMessage после завершения.

Почему стоит выбрать embedded signing?

Embedded signing исключает переходы на сторонний сервис — клиент остаётся на вашем сайте. Это повышает доверие и конверсию. Ссылка действительна 60 минут, после подписания отправляется postMessage, который ловит ваша страница. Если нужна более глубокая кастомизация, SignNow предоставляет возможность настроить цветовую схему iframe.

Сравнение SignNow и DocuSign

Критерий SignNow DocuSign
API Чистый REST, без обязательного SDK Есть SDK, но сложнее OAuth
Embedded signing Есть, но ограниченный UI Расширенный, с кастомизацией
Smart fields Анкоры в PDF Поддержка полей через API
Цена Дешевле для SMB Дороже, но больше функций
Хранение документов Нет фискального хранилища Есть встроенный аудит-трек

SignNow выгоднее для среднего бизнеса благодаря простоте API и ценообразованию. Средняя стоимость подписания одного документа в 2-3 раза ниже.

Типичные ошибки при интеграции

  1. Не кешировать токен — каждый запрос получает новый, что замедляет работу.
  2. Игнорировать вебхуки — без них не узнаете, когда документ подписан.
  3. Жёстко задавать координаты полей — лучше использовать анкоры.
  4. Не обрабатывать ошибки — SignNow возвращает 401 при просрочке токена, 404 при удалённом документе.

Этапы нашей работы

Этап Длительность Результат
Анализ 1 день Спецификация интеграции
Настройка OAuth 0.5 дня Рабочий токен с кешированием
Загрузка и поля 1 день Загрузка PDF, smart fields
Отправка и вебхуки 0.5 дня Приглашения, обработка событий
Embedded signing (если нужно) 1 день Iframe с подписью
Тестирование 0.5 дня Отладка, обработка ошибок

Что входит в нашу работу по интеграции

  • Настройка OAuth и кеширования токенов
  • Реализация загрузки документов и добавления smart fields
  • Разработка механизма отправки invites и обработки вебхуков
  • Интеграция embedded signing (если требуется)
  • Написание тестов и документации

Сроки: базовая интеграция — 2–3 рабочих дня, с embedded signing — 3–4 дня. Стоимость рассчитывается индивидуально.

Получите консультацию — оценим ваш проект и предложим решение под ключ. Опыт нашей команды — десятки интеграций электронной подписи. Гарантируем надёжность и соблюдение сроков. Свяжитесь с нами — мы подготовим коммерческое предложение за один день.

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

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

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