Подготавливаем страницу…
Подготавливаем страницу…
Форма на сайте продолжает работать как раньше. После успешной отправки сайт делает ещё один запрос — к платформе, и согласие ложится в реестр с датой, источником и редакцией текста, которую видел человек.
Порядок один для всех платформ; отличается только третий шаг. В песочнице всё то же самое, но с тестовым ключом и учебной формой — при переходе на боевой приём меняется одна строка, сам ключ.
Кабинет → «Интеграция». Для кода в браузере — публикуемый pk_ со списком доменов, для кода на сервере — секретный sk_. Один ключ покрывает все формы сайта.
Прежде чем трогать сайт, убедитесь, что запрос доходит. Ответ 200 с hash в теле — путь работает.
curl -X POST https://v2.1opd.ru/api/v2/create-agreement \
-H 'API-KEY: sk_ваш_ключ' \
-H 'Content-Type: application/json' \
-d '{"hash_field":"user@example.com","consent_given":true,"fields":[
{"field":"email","value":"user@example.com"},
{"field":"first_name","value":"Иван"}]}'По инструкции своей платформы — они ниже. Код из кабинета выдаётся с уже подставленными ключом, формами и подписью к галочке согласия.
Кабинет → «Согласия». Пока записи там нет, интеграция не работает, даже если сайт не показал ошибку. Этот шаг пропускают чаще всего — и узнают о проблеме через месяц, когда согласий за месяц нет.
Код из кабинета вставляется в настройки страницы. Ловит успешную отправку формы Тильды — нативного submit у неё нет, и наивный перехват молча теряет согласия.
Ключ pk_ · список доменов
Contact Form 7 и WPForms: серверный хук в PHP или перехват события отправки в браузере — на выбор.
Ключ sk_ или pk_ · IP или домены
Серверный обработчик события веб-формы: согласие уходит после того, как Битрикс сохранил результат.
Ключ sk_ · список IP
Статичный HTML, лендинг, React или Vue. Отправка из обработчика формы с публикуемым ключом.
Ключ pk_ · список доменов
PHP, Node.js, Python — отправка из бэкенда после успешной обработки формы. Самый контролируемый путь.
Ключ sk_ · IP или HMAC
Платформы нет в списке или подключать должна наша сторона — напишите нам, обсудим объём работ.
Полное описание для разработчика: эндпоинты create-agreement, get-fields, get-user, delete-user, формы ответов, HMAC-подпись, списки доменов и адресов, 28 полей субъекта и коды ошибок.
Нет. Интеграция добавляет одну отправку после того, как форма успешно ушла своим обычным путём. Письма, запись в CRM и остальная логика формы не меняются. Если форма не отправилась — согласия нет, и это правильно: запись без события была бы ложным доказательством.
По месту исполнения кода. Код в браузере — pk_, он публикуемый, защита списком доменов. Код на сервере — sk_, он секретный, защита списком IP или подписью HMAC. Секретный ключ в браузерном коде — утечка: всё, что попало в браузер, известно всем.
Один ключ на сайт: при выпуске он получает область на все формы, а конкретную форму выбирает form_id в запросе. Отдельные ключи оправданы, когда формы ведут разные подрядчики или нужна разная защита.
Из кабинета: код подключения выдаётся с подписью к галочке, в которой ссылки на действующие редакции уже подставлены. Публичные адреса документов постоянны — при выпуске новой редакции ссылки менять не нужно.
Запись с идентификатором hash: поля формы, время, источник, IP и редакции текста согласия и политики, действовавшие в этот момент. По hash запись можно прочитать и отозвать. Это и есть ответ на вопрос «докажите, что согласие было» — с датой и текстом, а не пересказом.
Приём стоит за очередью: пока база недоступна, запросы получают 202 Accepted, и согласия дозаписываются автоматически — повторами до 48 часов. Ошибку 503 вернёт только одновременный отказ приёма и очереди. Отправку самой формы это не задерживает.