Сценарії, канали, таймінги й ліміти
Налаштуйте OTP для входу, реєстрації, профілю й оформлення, строк довіри до номера та безпечне скасування підтвердження після виходу.
На цій сторінціШвидкий перехід до конкретного налаштування+
Базова конфігурація
- сценарії OTP
- довжина і TTL коду
- основний і резервний канал
- затримка повторного надсилання
- ліміти помилкових кодів
- тексти повідомлень
Час життя підтвердженого номера
У межах цього строку той самий номер і серверна сесія можуть повторно пройти дозволені сценарії без нового коду. Це стосується входу, реєстрації та кількох окремих замовлень.
- рекомендований старт - 20 хвилин
- новий код потрібен після завершення строку, зміни номера або втрати сесії
- натискання «Вийти» скасовує довіру негайно
- антиспам-ліміти та ідентифікатор браузера виходом не обнуляються
Перевіряйте як клієнт
Спочатку перевірте повторне використання в поточній сесії, потім натисніть «Вийти» й переконайтеся, що наступний телефонний вхід знову вимагає OTP. Для повністю чистого тесту використовуйте приватне вікно.
Усі поля, варіанти та перевірки
Нижче наведено повний профільний розділ офіційної інструкції модуля, без скорочень і маркетингового переказу.
14. OTP - підтвердження телефону
OTP - це одноразовий код, який клієнт отримує на телефон і вводить на сайті.
Як увімкнути OTP
- Спочатку перевірте SMS або дзвінок.
- Відкрийте
OTP -> Налаштування OTP. - Увімкніть
OTP Статус. - Увімкніть тільки потрібні сценарії OTP.
- У полі
Канал надсилання OTPвиберіть, через що модуль має спробувати відправити OTP-код першим:SMS,ViberабоTelegram. Якщо увімкненаАвторизація дзвінком, цей блок показується якКанал OTP без дзвінка: першим буде дзвінок, а вибраний канал працює тільки для OTP без дзвінка. - Налаштуйте довжину коду і часи.
- Перевірте маршрути сторінок, якщо оформлення замовлення нестандартне.
- Натисніть
Зберегти. - Протестуйте на сайті як клієнт.
Сценарії OTP
| Сценарій | Де працює | Коли вмикати |
|---|---|---|
Авторизації | Вхід клієнта в акаунт. | Якщо вхід має бути підтверджений телефоном. |
Реєстрації | Створення нового акаунта. | Якщо треба не приймати фейкові телефони. |
Зміні в Особистому кабінеті | Зміна телефону в профілі. | Рекомендовано, щоб клієнт не поставив чужий номер. |
Оформлення замовлення | Перевірка під час оформлення замовлення. | Найпрактичніший варіант для підтвердження телефону в замовленні. |
Як OTP працює для клієнта
- Клієнт вводить телефон.
- Модуль перевіряє формат номера, країну, IP, браузер, сесію і ліміти.
- Якщо все нормально, модуль вибирає сценарій доставки OTP.
- Якщо увімкнена авторизація дзвінком і вибраний шлюз її підтримує, модуль спочатку запускає дзвінок.
- Якщо дзвінок не використовується, модуль створює OTP-код і відправляє його через канал, вибраний у полі
Канал надсилання OTP. - Якщо дзвінок не вдався і ввімкнене резервне SMS для дзвінка, модуль створює OTP-код і надсилає його саме через SMS.
- Клієнт вводить код або підтверджує дію через дзвінок.
- Модуль перевіряє код, результат дзвінка і термін дії підтвердження.
- Якщо перевірка успішна, номер вважається підтвердженим.
Якщо будь-яка перевірка не пройдена, код або дзвінок не запускається. Це зроблено спеціально, щоб не витрачати баланс на ботів і підозрілі запити.
Повторне використання підтвердження та явний вихід
Після успішного OTP той самий номер у цьому браузері можна повторно використовувати для входу, реєстрації та оформлення замовлення протягом значення Час життя підтвердженого номера. Звичайні переходи між сторінками, виправлення полів форми та створення кількох окремих замовлень не вимагають нового коду, поки строк довіри не завершився і номер не змінився.
Явне натискання Вийти є безпековою межею. Модуль одразу видаляє серверний стан підтвердження, незавершені дозволи оформлення та cookies телефонного входу. Навіть якщо налаштований строк довіри ще не завершився, наступний вхід за номером телефону вимагатиме новий OTP. Це захищає акаунт на спільному або переданому іншій людині пристрої. Ідентифікатор браузера для антиспам-захисту при цьому зберігається: вихід не повинен обнуляти ліміти чи приховувати підозрілу активність.
Логіка вибору каналу OTP
Для OTP є окреме поле Канал надсилання OTP. Воно не залежить від каналу звичайних повідомлень адміну, статусів замовлення, відкладених подій або масової розсилки.
Якщо ввімкнена Авторизація дзвінком, адмінка одразу змінює цей блок на Канал OTP без дзвінка. Це не декоративна назва, а захист від плутанини: поле не керує першим дзвінком або резервним SMS після його помилки.
Основна логіка така:
Дзвінокмає пріоритет, якщо ввімкненаАвторизація дзвінком, модуль і OTP увімкнені, а вибранийCall gatewayпідтримує потрібний сценарій. Це може бути SMS-шлюз із підтримкою дзвінків або окремий Stream Telecom.- Резервне SMS після дзвінка спрацьовує, якщо дзвінок не запустився або не підтвердився, поле
SMS при помилці дзвінкаввімкнене і налаштований основний SMS-шлюз. У цьому випадку модуль надсилає OTP саме через SMS, а не через канал, вибраний у поліКанал надсилання OTP/Канал OTP без дзвінка. - Якщо дзвінок не використовується, перша спроба OTP іде через вибраний канал:
SMS,ViberабоTelegram. - Якщо вибраний канал не спрацював, модуль перевіряє інші доступні й увімкнені канали в порядку
Telegram -> Viber -> SMS, пропускаючи вже вибраний канал. - Якщо інших доступних каналів немає або резервне надсилання для них вимкнене, додаткової спроби не буде.
Приклади:
Вибраний Канал надсилання OTP / Канал OTP без дзвінка | Що модуль пробує після помилки першого каналу |
|---|---|
SMS | Telegram -> Viber, якщо ці канали підключені й доступні. SMS повторно не пробується. |
Viber | Telegram, якщо Telegram доступний. Потім SMS, якщо SMS-шлюз налаштований і резервне SMS після помилки Viber дозволене. Viber повторно не перевіряється. |
Telegram | Viber, якщо 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. | Для оформлення замовлення залиште помірне значення, наприклад 20 хвилин. Новий код знадобиться після завершення строку, зміни номера, втрати серверної сесії або явного виходу з акаунта. |
Ліміти повторного надсилання
| Поле | Що робить | Рекомендація |
|---|---|---|
Обмежити запит OTP | Вмикає локальний ліміт повторних кодів для номера. | Увімкніть. |
Послідовні OTP-запити | Скільки разів підряд можна попросити код. | Не ставте занадто багато. |
Тривалість блокування | На скільки заблокувати після перевищення. | Почніть з помірного значення. |
Ліміти помилкових кодів
| Поле | Що робить | Рекомендація |
|---|---|---|
Обмеження помилкових спроб OTP | Блокує після багатьох неправильних кодів. | Увімкніть. |
Кількість помилкових спроб OTP | Скільки разів можна помилитися. | 3-5 спроб. |
Тривалість блокування | Пауза після неправильних кодів. | Достатня, щоб не можна було перебирати код. |
Маршрути сторінок
Стандартні сторінки OpenCart модуль підключає автоматично:
account/register;account/edit;checkout/checkout.
Якщо у вас Simple, One Page Checkout або інший нестандартний модуль оформлення замовлення, OTP може не з'явитися автоматично. Тоді потрібно додати маршрут сторінки до блоку додаткових сторінок.
Для звичайного користувача правило просте: якщо OTP на оформлення замовлення не з'явився, передайте цей пункт розробнику.
Шаблон для розробника:
У модулі SAP - SMS / OTP Pro увімкнений OTP для оформлення замовлення, але на оформлення замовлення поле підтвердження не з'являється.
Потрібно перевірити маршрут сторінки оформлення замовлення і додати його в "Додаткові сторінки перевірки телефону" або "Сторінки сторонніх модулів".
Захищене оформлення замовлення та правила ризику
Функція Ризикові замовлення захищає створення замовлення на сервері, а не лише показує вікно OTP у браузері. Вона підтримує три рівні захисту: рекомендований збалансований, суворий для кожного замовлення та вибірковий за власними правилами.
Вкладка OTP -> Ризикові замовлення показується одразу після ввімкнення сценарію OTP -> Налаштування OTP -> Оформлення замовлення. Якщо цей сценарій вимкнути, вкладка ховається, а перевірка правил не виконується.
Логіка роботи:
Оформлення замовленняувімкнено, аПідтвердження ризикових замовленьвимкнено - оформлення вимагає підтверджений номер, але чинне підтвердження повторно використовується протягом заданого часу життя;- обидва перемикачі увімкнено, режим
Тестовий- у журналі фіксуються випадки, які в робочому режимі вимагали б OTP, але оформлення не зупиняється; - у робочому збалансованому режимі чинне підтвердження потрібне гостю, новому клієнту та для непідтвердженого номера; перевірений постійний клієнт проходить без повторного коду, якщо не спрацювало власне правило;
- у робочому суворому режимі перевіряється кожне замовлення, але чинне підтвердження того самого номера повторно використовується до завершення його строку життя;
- у робочому режимі
Лише правилачинне підтвердження потрібне тільки після збігу першого активного правила; - новий OTP надсилається лише коли номер ще не підтверджений, строк довіри завершився, номер змінився або серверна сесія більше не підтверджує цей номер;
- для кожного окремого замовлення модуль створює новий
correlation_idі окремий внутрішній дозвіл. Навіть коли використано чинне підтвердження без нового коду, дозвіл атомарно споживається фінальним створенням замовлення й не може бути повторно використаний паралельним запитом; - миттєвий повтор фінального запиту з тим самим відбитком оформлення блокується як можливий дубль. Окреме наступне замовлення з новим станом checkout отримує власний дозвіл;
- строк внутрішнього дозволу не може перевищувати ані
Час життя підтвердженого номера, аніСтрок підтвердження checkout.
Безпечне ввімкнення
- Переконайтеся, що
OTP СтатусіОформлення замовленняувімкнені. - Відкрийте
OTP -> Ризикові замовлення. - Увімкніть перемикач у блоці
Підтвердження ризикових замовлень. - Залиште
Режим роботи = Тестовий - лише журнал. - Виберіть
Рівень захисту = Збалансований. - Для поля
Якщо OTP неможливо надіслатизалиште блокування. - Задайте строк підтвердження оформлення замовлення.
- Виберіть статуси замовлень, які магазин вважає успішними.
- Створіть додаткові правила й натисніть
Зберегти. - Перевірте гостя, нового клієнта, постійного клієнта та хоча б одне власне правило.
- Перевірте блок
Останні спрацювання. - Лише після перевірки журналу перемкніть режим на
Робочий - вимагати OTP.
Основні налаштування
| Поле | Що робить | Рекомендація |
|---|---|---|
Підтвердження ризикових замовлень | Вмикає керований серверний захист оформлення замовлення. | Увімкніть після перевірки основного каналу OTP. Якщо вимкнено, сценарій оформлення працює як звичайний OTP для всіх замовлень. |
Рівень захисту | Визначає базову політику: Збалансований, Суворий або Лише правила. | Для більшості магазинів використовуйте Збалансований. Суворий вибирайте, якщо будь-яке непідтверджене замовлення неприпустиме. Лише правила залишає прогалини між правилами й підходить лише для усвідомленої вибіркової перевірки. |
Режим роботи | Тестовий записує випадки, які вимагали б OTP, але не зупиняє оформлення; Робочий реально застосовує вибраний рівень захисту. | Починайте з тестового режиму та перевірте повну матрицю покупців до переходу в робочий. |
Якщо OTP неможливо надіслати | Визначає поведінку при помилці провайдера. У збалансованому та суворому режимах модуль завжди блокує створення замовлення, щоб захист не обходився мовчки. | Залиште Заблокувати оформлення замовлення. Дозвіл без OTP діє лише в режимі Лише правила і свідомо знижує захист. |
Строк підтвердження checkout, хвилин | Скільки часу зберігається одноразовий внутрішній дозвіл для завершення поточного оформлення. Це не загальний час довіри до номера: повторне замовлення отримує власний новий дозвіл. | 15 хвилин - нормальне стартове значення. Дозволено від 1 до 120 хвилин; фактичний строк не буде довшим за залишок часу життя підтвердженого номера. |
Статуси успішних замовлень | Визначає, які попередні замовлення враховувати в історії покупця. | Виберіть статуси, які у вашому магазині означають реальне прийняте, оплачене або виконане замовлення. Не додавайте скасовані й помилкові статуси. |
Матриця рівнів захисту
| Рівень | Для кого потрібне чинне підтвердження номера | Якщо власне правило не спрацювало | Якщо новий OTP неможливо надіслати |
|---|---|---|---|
Збалансований | Гість, новий клієнт, покупець із непідтвердженим номером і будь-який покупець після збігу власного правила. | Перевірений постійний клієнт проходить без повторного OTP. Чинне підтвердження повторно використовується для нових замовлень до завершення строку довіри. | Замовлення блокується. |
Суворий | Кожен покупець перед кожним замовленням. | Кожне замовлення отримує окремий одноразовий дозвіл, але новий код не потрібен, поки підтвердження того самого номера чинне. | Замовлення блокується. |
Лише правила | Покупець, для якого збіглося перше активне правило. | Оформлення дозволяється без перевірки правилами. Якщо правило збіглося, чинне підтвердження можна повторно використати. | Виконується вибрана політика: блокування або свідомий дозвіл без OTP із записом у журнал. |
У тестовому режимі жоден із рівнів не зупиняє покупця. Журнал показує випадки, які вимагали б OTP після переходу в робочий режим.
Як перевіряються правила
Кожне правило має назву, перемикач Активне правило, пріоритет, логіку умов і одну або кілька умов.
- Менше число в полі
Пріоритетперевіряється раніше. Наприклад,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 підтверджено, чинне підтвердження використано повторно, замовлення створено, дозволено постійному клієнту, дозволено через відсутність збігу у вибірковому режимі або надсилання OTP не вдалося. У режимі приватності для адміністратора без головних прав телефон у цьому журналі маскується повністю.
| Статус у журналі | Що він означає |
|---|---|
Збіг у тестовому режимі | Рівень захисту або власне правило вимагали б OTP у робочому режимі, але поточне оформлення не блокувалося. |
Потрібне підтвердження OTP | Робочий режим зупинив створення замовлення до підтвердження номера. |
OTP підтверджено | Код прийнято, але фінальне створення замовлення ще має одноразово використати дозвіл. |
Чинне підтвердження використано повторно | Той самий номер і серверна сесія ще перебувають у межах Часу життя підтвердженого номера. Новий код не надсилався, а для цього замовлення створено новий одноразовий дозвіл. |
Замовлення дозволено | Одноразовий дозвіл атомарно використано фінальним запитом оформлення. |
Замовлення створено | Дозвіл пов'язано з фактичним ID створеного замовлення. |
Дозволено постійному клієнту | Збалансований режим визнав номер і покупця довіреними, а власне правило не спрацювало. |
Дозволено: правила не спрацювали | У режимі Лише правила жодна активна умова не вимагала OTP. |
Надсилання OTP не вдалося | Провайдер не доставив код, а захисна політика не дозволила продовжити оформлення. |
Пропуск через помилку провайдера | Тільки режим Лише правила: магазин свідомо дозволив оформлення без OTP і отримав запис про обхід. |
Активні правила кешуються між запитами, а дані оформлення обчислюються тільки коли вони реально потрібні. Для гостя у збалансованому режимі та для будь-якого покупця в суворому модуль одразу знає, що потрібне чинне підтвердження номера, тому не читає власні правила з бази й не запускає їхні додаткові запити. Якщо підтвердження ще діє, окремий дозвіл створюється без надсилання нового OTP. Для перевіреного постійного клієнта правила все одно виконуються. Це зменшує навантаження без послаблення захисту.
17. OTP - тексти повідомлень
У цій вкладці налаштовуються тексти OTP-повідомлень.
Як налаштувати
- Відкрийте
OTP -> Повідомлення OTP. - Перевірте текст для входу, реєстрації, профілю і оформлення замовлення.
- Переконайтеся, що в тексті є
{otp}. - Натисніть
Зберегти. - Протестуйте кожний увімкнений сценарій.
Головне правило
У повідомленні обов'язково має бути шорткод {otp}. Саме він підставляє код.
Нормальні приклади:
Код підтвердження: {otp}
Ваш код для підтвердження телефону: {otp}. Магазин Example.
Не робіть OTP-повідомлення довгим. Клієнт має швидко побачити код.
Пов’язані екрани
Без макетів і намальованих обіцянок: це інтерфейс модуля у демонстраційній адмінці.