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







