БАЗА ЗНАНЬ
PHP 5.6–8.3ionCube Loader 13+OpenCart / ocStore 2.3–3.x
Верифікація телефону

Сценарії, канали, таймінги й ліміти

Налаштуйте окрему поведінку OTP для входу, реєстрації, профілю й оформлення замовлення.

01

Базова конфігурація

  • сценарії OTP
  • довжина і TTL коду
  • основний і резервний канал
  • затримка повторного надсилання
  • ліміти помилкових кодів
  • тексти повідомлень
02

Перевіряйте як клієнт

ПРИМІТКА

Після кожної зміни використовуйте приватне вікно або нову сесію, щоб попередній стан підтвердження не приховав проблему.

ПОВНА ІНСТРУКЦІЯ

Усі поля, варіанти та перевірки

Нижче наведено повний профільний розділ офіційної інструкції модуля, без скорочень і маркетингового переказу.

14. OTP - підтвердження телефону

OTP - це одноразовий код, який клієнт отримує на телефон і вводить на сайті.

Як увімкнути OTP

  1. Спочатку перевірте SMS або дзвінок.
  2. Відкрийте OTP -> Налаштування OTP.
  3. Увімкніть OTP Статус.
  4. Увімкніть тільки потрібні сценарії OTP.
  5. У полі Канал надсилання OTP виберіть, через що модуль має спробувати відправити OTP-код першим: SMS, Viber або Telegram. Якщо увімкнена Авторизація дзвінком, цей блок показується як Канал OTP без дзвінка: першим буде дзвінок, а вибраний канал працює тільки для OTP без дзвінка.
  6. Налаштуйте довжину коду і часи.
  7. Перевірте маршрути сторінок, якщо оформлення замовлення нестандартне.
  8. Натисніть Зберегти.
  9. Протестуйте на сайті як клієнт.

Сценарії OTP

СценарійДе працюєКоли вмикати
АвторизаціїВхід клієнта в акаунт.Якщо вхід має бути підтверджений телефоном.
РеєстраціїСтворення нового акаунта.Якщо треба не приймати фейкові телефони.
Зміні в Особистому кабінетіЗміна телефону в профілі.Рекомендовано, щоб клієнт не поставив чужий номер.
Оформлення замовленняПеревірка під час оформлення замовлення.Найпрактичніший варіант для підтвердження телефону в замовленні.

Як OTP працює для клієнта

  1. Клієнт вводить телефон.
  2. Модуль перевіряє формат номера, країну, IP, браузер, сесію і ліміти.
  3. Якщо все нормально, модуль вибирає сценарій доставки OTP.
  4. Якщо увімкнена авторизація дзвінком і вибраний шлюз її підтримує, модуль спочатку запускає дзвінок.
  5. Якщо дзвінок не використовується, модуль створює OTP-код і відправляє його через канал, вибраний у полі Канал надсилання OTP.
  6. Якщо дзвінок не вдався і ввімкнене резервне SMS для дзвінка, модуль створює OTP-код і надсилає його саме через SMS.
  7. Клієнт вводить код або підтверджує дію через дзвінок.
  8. Модуль перевіряє код, результат дзвінка і термін дії підтвердження.
  9. Якщо перевірка успішна, номер вважається підтвердженим.

Якщо будь-яка перевірка не пройдена, код або дзвінок не запускається. Це зроблено спеціально, щоб не витрачати баланс на ботів і підозрілі запити.

Логіка вибору каналу OTP

Для OTP є окреме поле Канал надсилання OTP. Воно не залежить від каналу звичайних повідомлень адміну, статусів замовлення, відкладених подій або масової розсилки.

Якщо ввімкнена Авторизація дзвінком, адмінка одразу змінює цей блок на Канал OTP без дзвінка. Це не декоративна назва, а захист від плутанини: поле не керує першим дзвінком або резервним SMS після його помилки.

Основна логіка така:

  1. Дзвінок має пріоритет, якщо ввімкнена Авторизація дзвінком, модуль і OTP увімкнені, а вибраний Call gateway підтримує потрібний сценарій. Це може бути SMS-шлюз із підтримкою дзвінків або окремий Stream Telecom.
  2. Резервне SMS після дзвінка спрацьовує, якщо дзвінок не запустився або не підтвердився, поле SMS при помилці дзвінка ввімкнене і налаштований основний SMS-шлюз. У цьому випадку модуль надсилає OTP саме через SMS, а не через канал, вибраний у полі Канал надсилання OTP / Канал OTP без дзвінка.
  3. Якщо дзвінок не використовується, перша спроба OTP іде через вибраний канал: SMS, Viber або Telegram.
  4. Якщо вибраний канал не спрацював, модуль перевіряє інші доступні й увімкнені канали в порядку Telegram -> Viber -> SMS, пропускаючи вже вибраний канал.
  5. Якщо інших доступних каналів немає або резервне надсилання для них вимкнене, додаткової спроби не буде.

Приклади:

Вибраний Канал надсилання OTP / Канал OTP без дзвінкаЩо модуль пробує після помилки першого каналу
SMSTelegram -> Viber, якщо ці канали підключені й доступні. SMS повторно не пробується.
ViberTelegram, якщо Telegram доступний. Потім SMS, якщо SMS-шлюз налаштований і резервне SMS після помилки Viber дозволене. Viber повторно не перевіряється.
TelegramViber, якщо Viber доступний. Потім SMS, якщо SMS-шлюз налаштований і відповідне резервне надсилання дозволене. Telegram повторно не перевіряється.

Важливо: якщо у списку вибору є тільки SMS, то після невдалого надсилання SMS запасного каналу не буде. Якщо вибрано Без SMS / тільки авторизація дзвінком, а SMS-шлюз не налаштований, резервне SMS для OTP недоступне.

Як працює резервне надсилання для OTP

НалаштуванняКоли спрацьовуєЩо буде далі
SMS при помилці дзвінкаДзвінок не запустився, не підтвердився або провайдер повернув помилку.Модуль примусово надсилає OTP-код через основний SMS-шлюз. Telegram і Viber у цьому резервному сценарії не мають пріоритету. Якщо SMS-шлюз вимкнений, резервне надсилання недоступне.
Канал надсилання OTP / Канал OTP без дзвінкаДзвінок не використовується, і треба відправити звичайний OTP-код.Вибраний канал стає першою спробою. Після помилки модуль може перейти до інших доступних каналів у порядку Telegram -> Viber -> SMS, але пропускає вже вибраний канал.
SMS якщо Telegram недоступнийTelegram недоступний або не може доставити повідомлення, і наступним доступним запасним каналом має бути SMS.Модуль може перейти на SMS. Якщо резервне надсилання вимкнене, повідомлення через SMS не піде.
SMS якщо Viber недоступнийViber не доставив повідомлення.Модуль може перейти на SMS. Якщо резервне надсилання вимкнене, після помилки Viber SMS не піде.

Приклад: якщо увімкнений дзвінок, підключений Telegram і налаштований SMS-шлюз, OTP спочатку піде через дзвінок. Якщо дзвінок провалиться і SMS при помилці дзвінка увімкнене, модуль відправить код через SMS, а не через Telegram або Viber. Якщо вибрано Без SMS / тільки авторизація дзвінком, після невдалого дзвінка SMS не піде.

Якщо дзвінок вимкнений і в Канал надсилання OTP вибрано SMS, модуль спочатку відправить SMS. Якщо SMS не спрацює, він не буде повторювати SMS, а перевірить тільки інші доступні канали: Telegram і Viber. Якщо вони не підключені, додаткової спроби не буде.

Які сценарії вмикати

Потреба магазинуЩо вмикатиЧого не вмикати без потреби
Треба перевіряти тільки телефони в замовленняхОформлення замовленняАвторизації і Реєстрації, якщо акаунти не важливі.
Треба захистити акаунти клієнтівАвторизації, Реєстрації, Зміні в Особистому кабінетіоформлення замовлення можна не чіпати, якщо телефон замовлення не критичний.
Треба максимальна чистота бази телефонівУсі сценаріїНе запускайте без тесту, бо кожна точка входу почне вимагати код.
Треба мінімум незручностей клієнтуТільки оформлення замовлення або тільки реєстраціяНе вмикайте OTP всюди одразу.

Код і таймінги

ПолеЩо робитьРекомендація
Довжина OTPВибирає 4 або 6 цифр у коді.4 простіше для клієнта, 6 безпечніше.
Час повторного відправленняЧерез скільки секунд можна попросити код повторно.30-60 секунд.
Термін дії OTPСкільки часу код дійсний.5-10 хвилин.
Час життя підтвердженого номераЯк довго номер вважається вже підтвердженим у цьому браузері.Для оформлення замовлення можна залишити помірне значення, щоб не просити код повторно на кожному кроці.

Ліміти повторного надсилання

ПолеЩо робитьРекомендація
Обмежити запит OTPВмикає локальний ліміт повторних кодів для номера.Увімкніть.
Послідовні OTP-запитиСкільки разів підряд можна попросити код.Не ставте занадто багато.
Тривалість блокуванняНа скільки заблокувати після перевищення.Почніть з помірного значення.

Ліміти помилкових кодів

ПолеЩо робитьРекомендація
Обмеження помилкових спроб OTPБлокує після багатьох неправильних кодів.Увімкніть.
Кількість помилкових спроб OTPСкільки разів можна помилитися.3-5 спроб.
Тривалість блокуванняПауза після неправильних кодів.Достатня, щоб не можна було перебирати код.

Маршрути сторінок

Стандартні сторінки OpenCart модуль підключає автоматично:

  • account/register;
  • account/edit;
  • checkout/checkout.

Якщо у вас SimpleCheckout, One Page Checkout або інший нестандартний модуль оформлення замовлення, OTP може не з'явитися автоматично. Тоді потрібно додати маршрут сторінки до блоку додаткових сторінок.

Для звичайного користувача правило просте: якщо OTP на оформлення замовлення не з'явився, передайте цей пункт розробнику.

Шаблон для розробника:

У модулі SAP - SMS / OTP Pro увімкнений OTP для оформлення замовлення, але на оформлення замовлення поле підтвердження не з'являється.
Потрібно перевірити маршрут сторінки оформлення замовлення і додати його в "Додаткові сторінки перевірки телефону" або "Сторінки сторонніх модулів".

Ризикові замовлення: OTP лише коли це потрібно

Функція Ризикові замовлення потрібна, якщо магазин не хоче змушувати кожного покупця вводити OTP. Вона залишає звичайне оформлення швидким для безпечних замовлень і вимагає підтвердження тільки тоді, коли спрацювало активне правило ризику.

Вкладка OTP -> Ризикові замовлення показується одразу після ввімкнення сценарію OTP -> Налаштування OTP -> Оформлення замовлення. Якщо цей сценарій вимкнути, вкладка ховається, а перевірка правил не виконується.

Логіка роботи:

  • Оформлення замовлення увімкнено, а Підтвердження ризикових замовлень вимкнено - OTP вимагається для кожного оформлення замовлення;
  • обидва перемикачі увімкнено, режим Тестовий - правила перевіряються і пишуться в журнал, але оформлення замовлення не зупиняється через збіг;
  • обидва перемикачі увімкнено, режим Робочий - OTP вимагається тільки коли збіглося перше активне правило;
  • жодне правило не збіглося - покупець продовжує оформлення без OTP;
  • правило збіглося, але номер уже підтверджено для того самого оформлення замовлення і строк підтвердження не минув - повторний код не потрібен.

Безпечне ввімкнення

  1. Переконайтеся, що OTP Статус і Оформлення замовлення увімкнені.
  2. Відкрийте OTP -> Ризикові замовлення.
  3. Увімкніть перемикач у блоці Підтвердження ризикових замовлень.
  4. Залиште Режим роботи = Тестовий - лише журнал.
  5. Виберіть поведінку Якщо OTP неможливо надіслати.
  6. Задайте строк підтвердження оформлення замовлення.
  7. Виберіть статуси замовлень, які магазин вважає успішними.
  8. Створіть правила й натисніть Зберегти.
  9. Зробіть кілька тестових оформлень: одне має збігтися з правилом, інше - ні.
  10. Перевірте блок Останні спрацювання.
  11. Лише після перевірки журналу перемкніть режим на Робочий - вимагати OTP.

Основні налаштування

ПолеЩо робитьРекомендація
Підтвердження ризикових замовленьВмикає вибірковий OTP під час оформлення замовлення.Увімкніть після створення правил. Якщо вимкнено, сценарій оформлення працює як звичайний OTP для всіх замовлень.
Режим роботиТестовий тільки записує збіги; Робочий реально вимагає OTP.Починайте з тестового режиму щонайменше на кількох реальних або тестових замовленнях.
Якщо OTP неможливо надіслатиВизначає, чи пропускати покупця при помилці провайдера.На старті використовуйте точний варіант інтерфейсу Дозволити checkout і записати попередження. Блокування вмикайте тільки після стабільної перевірки основного й запасного каналів.
Строк підтвердження checkout, хвилинСкільки діє успішне підтвердження для поточного стану оформлення замовлення.15 хвилин — нормальне стартове значення. Дозволено від 1 до 120 хвилин.
Статуси успішних замовленьВизначає, які попередні замовлення враховувати в історії покупця.Виберіть статуси, які у вашому магазині означають реальне прийняте, оплачене або виконане замовлення. Не додавайте скасовані й помилкові статуси.

Як перевіряються правила

Кожне правило має назву, перемикач Активне правило, пріоритет, логіку умов і одну або кілька умов.

  • Менше число в полі Пріоритет перевіряється раніше. Наприклад, 10 має вищий пріоритет за 20.
  • Усі умови (AND) означає, що мають виконатися всі умови правила.
  • Будь-яка умова (OR) означає, що достатньо хоча б однієї умови.
  • Після першого збігу перевірка зупиняється. Саме назва цього правила потрапляє в журнал.
  • Неактивне правило не впливає на оформлення замовлення.
  • Кнопка копіювання створює копію правила, а червона кнопка видаляє його. Окрема червона кнопка в рядку умови видаляє тільки цю умову.

Показники правил

ПоказникДоступні порівнянняЩо означає значення
Сума замовленняБільше, Більше або дорівнює, Менше, Менше або дорівнює, Між значеннямиПоточна підсумкова сума оформлення замовлення. Для Між значеннями заповніть нижню і верхню межу.
Спосіб оплатиДорівнює, Не дорівнюєОбраний покупцем спосіб оплати. Список формується автоматично з установлених та увімкнених способів оплати магазину.
Тип покупцяДорівнюєГість, Авторизований клієнт або Клієнт без успішних замовлень.
Кількість успішних замовленьДорівнює, Більше, Більше або дорівнює, Менше, Менше або дорівнюєКількість попередніх замовлень у статусах, вибраних у блоці Статуси успішних замовлень. Для гостя історія шукається за нормалізованим телефоном.
Телефон підтвердженоДорівнюєЧи був номер поточного оформлення замовлення успішно підтверджений OTP у чинній сесії. Значення: Так або Ні.
Вік підтвердження телефона, днівБільше, Більше або дорівнюєСкільки повних днів минуло від останнього успішного підтвердження цього номера.
Замовлень із телефона за періодБільше або дорівнюєСкільки замовлень уже створено з тим самим нормалізованим номером за попередній період. Поле Період, хвилин приймає від 1 хвилини до 7 днів (10080 хвилин).

Тип покупця читається так:

  • Гість - покупець не авторизований;
  • Авторизований клієнт - покупець авторизований і має хоча б одне замовлення в обраних успішних статусах;
  • Клієнт без успішних замовлень - покупець авторизований, але ще не має замовлень у цих статусах.

Список для показника Спосіб оплати не зашитий у модуль. Він автоматично читає встановлені платіжні розширення та їхні статуси. Для OpenCart/ocStore 2.3 перевіряються старі ключі налаштувань, а для 3.x — нові ключі payment_*, із сумісною перевіркою в обидва боки. Якщо спосіб оплати встановлено, але він не з'явився у правилі, спочатку переконайтеся, що його статус справді Увімкнено, а потім перезбережіть сторінку модуля.

Рекомендований стартовий набір

Пороги нижче - приклад, а не універсальна істина. Суми треба адаптувати до середнього чека й валюти магазину.

ПріоритетНазваУмови
10Часті повторні замовленняЗамовлень із телефона за період >= 2, період 60 хвилин.
20Гість із підвищеною сумоюСума замовлення >= 1500 AND Тип покупця = Гість.
30Новий клієнт із великою сумоюСума замовлення >= 2500 AND Тип покупця = Клієнт без успішних замовлень.
40Велика сума для будь-якого покупцяСума замовлення >= 5000.

Тримайте правила від вузьких до загальних. Правило масових повторів має бути вище за правило великої суми, інакше журнал показуватиме тільки загальне правило, а причина ризику буде менш зрозумілою.

Останні спрацювання

Журнал показує дату, назву правила, замаскований телефон, статус рішення та ID створеного замовлення, якщо воно вже існує. Відкритий номер у журналі ризику не зберігається.

ЕлементЩо робить
Усього записівПоказує реальну кількість записів журналу.
Зберігати журнал, днівАвтоматично видаляє старі записи під час відкриття налаштувань модуля. Допустимо від 1 до 365 днів; 30 днів - нормальний старт.
Очистити журналВидаляє весь журнал після підтвердження. Дію неможливо скасувати.

Типові статуси журналу: правило збіглося в тестовому режимі, OTP потрібен, OTP підтверджено, оформлення замовлення дозволено або оформлення замовлення пропущено через політику доступності провайдера.

Активні правила кешуються між запитами, а дані оформлення замовлення обчислюються тільки коли вони реально потрібні конкретній умові. Наприклад, для гостя модуль не читає історію успішних замовлень лише заради визначення Тип покупця = Гість; але якщо правило прямо використовує Кількість успішних замовлень, потрібний запит виконується. Це зменшує навантаження без зміни результату правила.

17. OTP - тексти повідомлень

У цій вкладці налаштовуються тексти OTP-повідомлень.

Як налаштувати

  1. Відкрийте OTP -> Повідомлення OTP.
  2. Перевірте текст для входу, реєстрації, профілю і оформлення замовлення.
  3. Переконайтеся, що в тексті є {otp}.
  4. Натисніть Зберегти.
  5. Протестуйте кожний увімкнений сценарій.

Головне правило

У повідомленні обов'язково має бути шорткод {otp}. Саме він підставляє код.

Нормальні приклади:

Код підтвердження: {otp}
Ваш код для підтвердження телефону: {otp}. Магазин Example.

Не робіть OTP-повідомлення довгим. Клієнт має швидко побачити код.

Потрібна швидка перевірка?Відкрити діагностику →
ПРЯМИЙ ЗВ’ЯЗОК

Потрібна адаптація або Telegram-сервер?

Зв’язок з автором модуля щодо сумісності, встановлення, нестандартної теми, оформлення замовлення та платного підключення Telegram-сервера.