Моя среда Инструменты
Публичная документация

Документация Моя среда Капча

Инструкция разложена по сценариям форм и платформам. Главное правило одно: виджет стоит в форме, а решение принимает сервер через `siteverify`.

С чего начать

Простая схема подключения

1 Создать сайт

В кабинете добавьте домен, получите `site_key` и один раз сохраните `secret key`.

2 Вставить виджет

В HTML формы добавьте JS-скрипт и `div.ms-captcha` с нужным `data-action`.

3 Проверить сервером

Перед отправкой письма или созданием пользователя вызовите `siteverify`.

4 Принять решение

`success: true` - продолжить. `success: false` - остановить форму.

HTML в форме

<script src="https://dev-sreda.ru/captcha/api.js" async defer></script>

<div class="ms-captcha"
     data-sitekey="msk_live_site_key"
     data-action="feedback"></div>

Что делает сервер

POST https://dev-sreda.ru/api/captcha/v1/siteverify

secret=mss_live_secret_key
response=mst_response_token
action=feedback
content[message]=Текст заявки
Сценарии

Что делать в каждой форме

feedback

Форма обратной связи

Имя, телефон, email, сообщение. Для стоп-слов обязательно передавайте `content.message`.

data-action="feedback"

'content' => [
  'name' => $name,
  'phone' => $phone,
  'message' => $message,
]
callback

Заказ звонка

Короткая форма: имя, телефон, удобный способ связи. Email обычно не обязателен.

data-action="callback"

'content' => [
  'name' => $name,
  'phone' => $phone,
  'contact_method' => $method,
]
order

Заказ / заявка

Передавайте товар, комментарий, телефон и email. Это защищает корзину, бронь и заявки.

data-action="order"

'content' => [
  'product' => $product,
  'phone' => $phone,
  'comment' => $comment,
]
one_click

Купить в один клик

Минимальная форма с телефоном и ID товара. Проверка нужна до создания заказа.

data-action="one_click"

'content' => [
  'phone' => $phone,
  'product_id' => $productId,
]
registration

Регистрация пользователя

Это отдельный строгий сценарий. Email обязателен, запрещенные email-домены проверяются именно здесь, а пользователь создается только после `success: true`.

<div class="ms-captcha"
     data-sitekey="msk_live_site_key"
     data-action="registration"></div>
'action' => 'registration',
'email' => $request->input('email'),
'content' => [
  'name' => $request->input('name'),
  'email' => $request->input('email'),
  'phone' => $request->input('phone'),
]

Согласие на обработку ПДн проверяется отдельно серверной валидацией. Капча не заменяет чекбокс согласия.

Платформы

Где лежат готовые рецепты

PHP и Laravel

Чистый PHP через cURL и Laravel через `Http::asForm()`.

docs/sreda-captcha/platforms/php-laravel.md

WordPress

Своя тема, `admin-post.php`, AJAX, Contact Form 7 hook.

docs/sreda-captcha/platforms/wordpress.md

1C-Bitrix, MODX, OpenCart

Шаблон формы плюс проверка в обработчике до события/письма/заказа.

docs/sreda-captcha/platforms/cms-php.md

Node.js, Express, React/Vue

SPA показывает виджет, backend Express вызывает `siteverify`.

docs/sreda-captcha/platforms/node-spa.md
Tilda / Webflow

Без backend безопасно не подключить

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

Почему

`secret key` нельзя вставить в HTML/JS Tilda. Он должен храниться на сервере. Без сервера некому безопасно вызвать `siteverify`.

Как можно

Нужен свой endpoint или webhook-прокси: Tilda отправляет форму туда, endpoint проверяет капчу, потом пересылает письмо/CRM.

Если сайт экспортирован

При размещении экспортированной Tilda на своем хостинге можно подключить обычный PHP/Node обработчик.

Файл для подрядчика

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

docs/sreda-captcha/platforms/tilda-builders.md
Сдача

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

  • Домен сайта добавлен в разрешенные origin.
  • `site_key` стоит в HTML, `secret key` хранится только на сервере.
  • Сервер вызывает `siteverify` до отправки письма, CRM-заявки, заказа или регистрации.
  • Для регистрации используется `action=registration` и передается `email`.
  • Для заявок передается `content`, чтобы работали стоп-слова.
  • При `success: false` форма не отправляется.
  • Проверены ошибки `timeout-or-duplicate`, `blocked-content`, `blocked-email-domain`.
Передать в работу

Файлы документации

docs/sreda-captcha-integration.md docs/sreda-captcha/01-core-flow.md docs/sreda-captcha/02-form-scenarios.md docs/sreda-captcha/platforms/php-laravel.md docs/sreda-captcha/platforms/wordpress.md docs/sreda-captcha/platforms/cms-php.md docs/sreda-captcha/platforms/node-spa.md docs/sreda-captcha/platforms/tilda-builders.md docs/sreda-captcha/07-testing-and-errors.md