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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування верифікації віку покупця (18+) на 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування верифікації віку покупця (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';

При відмові — редирект на сторінку-заглушку.

Обмеження на рівні категорій

Верифікація може вимагатись не для всього сайту, а лише для певних розділів каталогу. В інфоблоці розділів створюється властивість 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 для розділів каталогу
  • Обмеження доступу до категорій та детальних сторінок без верифікації
  • Блокування додавання до кошика вікових товарів
  • Збереження статусу верифікації в профілі авторизованого користувача