Пятый фактор
Обсудить задачу
UX, формы и мобильная версия

Защита от двойной отправки формы или заказа

Защитим формы, заявки и оформление заказа от дублей, которые появляются при двойном клике, медленном ответе, обновлении страницы или повторе сетевого запроса. Добавим уникальный ключ операции, безопасное повторное получение результата и проверим, что один пользовательский шаг создаёт одну запись на сайте и в подключённой системе.

Срок: 4–7 дней

Когда стоит обратиться

Обычно к нам обращаются в таких ситуациях:

  • Клиент дважды нажимает кнопку на медленной форме, и менеджер получает одинаковые обращения.
  • После тайм-аута браузер повторяет запрос, хотя заказ уже создан на сервере.
  • Пользователь обновляет страницу подтверждения и запускает операцию второй раз.
  • Сайт защищён на интерфейсе, но повторный запрос к API всё равно создаёт дубль в CRM или учётной системе.

Что именно мы сделаем

01

Находим точки, где повторный запрос создаёт вторую заявку, заказ или платёжное действие.

02

Добавляем уникальный ключ операции и блокируем повторную отправку интерфейсом.

03

Сохраняем результат первого запроса и корректно отвечаем на повтор с тем же ключом.

04

Связываем ключ с CRM или внешней системой, если она участвует в создании записи.

05

Проверяем двойной клик, обновление страницы, тайм-аут и повтор запроса на контрольных данных.

Что входит в стоимость

19 900 ₽ за всю работу

Разбираем выбранные формы или заказ от браузера до базы и внешней системы, добавляем idempotency key, серверное хранение результата, понятное состояние кнопки и журнал. Проверяем быстрый повтор, тайм-аут, обновление и повтор фоновой интеграции.

Что будет готово

Материалы

Передадим вам

  • Серверная защита выбранных форм или заказа с уникальным ключом операции.
  • Понятные состояния интерфейса и журнал обработки повторных запросов.
  • Протокол тестов двойного клика, обновления, тайм-аута и повтора интеграции.
Проверка

Перед сдачей проверим

  • Двойной клик и повтор одного ключа создают одну запись на стороне сайта.
  • После обновления или повторного запроса пользователь получает результат уже начатой операции, а не новый объект.
  • Для выбранной внешней системы дубль также исключён или однозначно обнаруживается по переданному идентификатору.

Как это выглядит на практике

Защита формы от создания двух заявок после повторного нажатия

Одна заявка после повторного клика

Отправляем форму и сразу повторяем запрос с тем же ключом. Сайт возвращает состояние первой операции без создания второй записи. Сверяем один идентификатор в базе, уведомлении и подключённой CRM. Защита проверяется на сервере; простого отключения кнопки в браузере недостаточно.

  1. 01

    Отправляем форму и сразу повторяем запрос с тем же ключом.

  2. 02

    Сайт возвращает состояние первой операции без создания второй записи.

  3. 03

    Сверяем один идентификатор в базе, уведомлении и подключённой CRM.

Что понадобится для работы

От вас

  • Адреса форм или сценарий заказа, примеры дублей и время их возникновения.
  • Доступ к коду, базе и журналам сайта, а при интеграции — к тестовому контуру CRM или API.
  • Контрольные данные и сотрудник, который подтвердит число полученных заявок или заказов.

Если у вас немного другая ситуация

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

Стоимость работ 19 900 ₽ полная стоимость известна заранее
  1. 3 000 ₽после подписания договора через Диадок
  2. 16 900 ₽после выполнения, демонстрации и приёмки результата

Предоплата входит в общую стоимость. Оставшуюся сумму оплачиваете после демонстрации и приёмки готовой работы.

Часто спрашивают

Об этой услуге

Чем idempotency key отличается от проверки одинакового телефона?

Ключ относится к одной попытке операции и не мешает человеку отправить новую заявку позже. Сравнение телефона может ошибочно склеить разные обращения или пропустить дубль с другим форматированием.

Можно защитить оплату тем же способом?

Да, если платёжный провайдер поддерживает ключи идемпотентности или устойчивый идентификатор заказа. Платёжный сценарий проверяем отдельно, включая уведомления и ситуацию с потерянным ответом.

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

Пользователь может обновить страницу, сеть или прокси могут повторить запрос, а интеграция — запустить повтор после тайм-аута. Сервер должен распознать ту же логическую операцию независимо от интерфейса.

Старые дубли тоже можно объединить?

Можно подготовить отдельную очистку по выбранным признакам. В этой работе останавливаем появление новых дублей и используем тестовые записи, не меняя историю без отдельной проверки.

Что увидит пользователь при долгой обработке?

Показываем состояние отправки и безопасно запрашиваем результат первой операции. Текст зависит от процесса: заявка принята, заказ создаётся или ответ пока ожидается.

Цена и изменения по ходу работы

Цена на странице окончательная?

Да. Перед началом мы сверяем исходные данные и фиксируем результат в договоре. Указанная на странице сумма покрывает согласованную работу целиком, даже если её техническая реализация потребует больше времени, чем ожидалось при оценке.

Что означает резерв незапланированных работ?

Это уже включённый в цену запас времени на небольшие связанные уточнения заказчика, которые появляются после старта: например, добавить поле, изменить формат уведомления или учесть ещё одно условие обработки.

Резерв рассчитывается по формуле: стоимость услуги × 30% ÷ 1 500 ₽. Для услуги за 30 000 ₽ это 6 часов. Эти часы относятся только к дополнительным, заранее незапланированным уточнениям. Они не являются сроком проекта и не ограничивают время на основную работу: согласованный результат мы выполняем полностью.

Можно уточнять детали уже во время работы?

Да. Небольшие связанные изменения обычно помещаются во включённый резерв и не требуют доплаты. Если новая идея заметно меняет результат или превращается в самостоятельную задачу, сначала обсудим подход и стоимость. Любое решение согласуем до выполнения.

Начало работы и оплата

Как оформляются договор и оплата?

Подписываем договор через Диадок. Предоплата составляет 3 000 ₽ и входит в общую стоимость услуги. Остаток оплачивается после демонстрации и приёмки готового результата.

Когда начинается срок выполнения?

Срок отсчитывается после согласования задачи, получения необходимых доступов и материалов, подписания договора и поступления предоплаты. Конкретную дату старта и плановый день готовности подтверждаем перед началом.

Как учитываются платные лицензии и внешние сервисы?

До старта проверяем, нужны ли тарифы, лицензии, сертификаты или дополнительные ресурсы внешних систем. Если они потребуются, заранее покажем варианты и стоимость. По возможности аккаунты и лицензии оформляются сразу на заказчика.

Проверка результата и гарантия

Как принимается готовая работа?

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

Какая гарантия действует после сдачи?

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

Следующий шаг

Опишите задачу

Расскажите, что происходит сейчас и какой результат хотите получить. Можно указать сайт, CMS, 1С, CRM, ERP или другую систему. Если подходящую услугу выбирать рано, просто опишите ситуацию — мы разберёмся и предложим следующий шаг.