Настройка верификации возраста покупателя (18+) на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка верификации возраста покупателя (18+) на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка верификации возраста покупателя (18+) на 1С-Битрикс

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

Уровни верификации возраста

Уровень 1 — Декларация. Покупатель сам подтверждает «Мне исполнилось 18 лет». Технически — модальное окно при первом входе на сайт с кнопками «Да» и «Нет». Результат хранится в cookie age_verified=1 со сроком 30 дней. Юридически это слабая защита, но для ряда категорий товаров достаточно.

Уровень 2 — Дата рождения. Пользователь вводит дату рождения. Проверяется математически: (today - birthdate) >= 18 years. Результат также в cookie или сессии. Обойти тривиально, но создаёт юридическую ответственность на покупателя.

Уровень 3 — Проверка по документам. Интеграция с ЕСИА (Госуслуги) или сервисами типа IDEX, Контур.Проверка. Возраст подтверждается данными паспорта. Самый надёжный вариант, требует отдельной интеграции.

Реализация в Битрикс (уровни 1–2)

Обработчик события OnPageStart в init.php проверяет наличие cookie и при необходимости добавляет модальное окно в очередь вывода:

AddEventHandler('main', 'OnPageStart', function() {
    global $APPLICATION;
    if (!isset($_COOKIE['age_verified'])) {
        $APPLICATION->AddHeadScript('/local/js/age-verify.js');
        $APPLICATION->SetAdditionalCSS('/local/css/age-verify.css');
    }
});

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

document.cookie = 'age_verified=1; max-age=' + (86400 * 30) + '; path=/; SameSite=Lax';

При отказе — редирект на страницу-заглушку или на yandex.ru.

Ограничение на уровне категорий

Верификация может требоваться не для всего сайта, а только для определённых разделов каталога. В инфоблоке разделов создаётся свойство UF_AGE_RESTRICTED (checkbox). Обработчик проверяет не только наличие cookie, но и принадлежность текущей страницы к закрытой категории.

Для страниц раздела и детальных страниц товара в компоненте bitrix:catalog обработчик OnBeforeProlog проверяет свойство текущего раздела:

$sectionId = $arParams['SECTION_ID'];
$section = CIBlockSection::GetByID($sectionId)->Fetch();
if ($section['UF_AGE_RESTRICTED'] && !isset($_COOKIE['age_verified'])) {
    LocalRedirect('/age-check/?back=' . urlencode($REQUEST_URI));
}

Верификация при добавлении в корзину

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

AddEventHandler('sale', 'OnSaleBasketItemAdd', function(&$arFields) {
    $productId = $arFields['PRODUCT_ID'];
    if (isAgeRestrictedProduct($productId) && !isAgeVerified()) {
        return new CDBResult(false, 'Подтвердите возраст для добавления товара');
    }
});

Хранение статуса верификации для авторизованных пользователей

Для авторизованных пользователей результат верификации можно хранить в профиле — UF-поле UF_AGE_VERIFIED (тип «Да/Нет») и UF_BIRTH_DATE (дата). При следующем входе cookie устанавливается автоматически без повторного прохождения верификации.

Что входит в настройку

  • Разработка модального окна верификации с выбором уровня проверки
  • Обработчик OnPageStart с проверкой cookie
  • Настройка свойства UF_AGE_RESTRICTED для разделов каталога
  • Ограничение доступа к категориям и детальным страницам без верификации
  • Блокировка добавления в корзину возрастных товаров
  • Сохранение статуса верификации в профиле авторизованного пользователя