СМС-авторизация по номеру телефона для интернет-магазина на 1C-Битрикс
Возможность войти в личный кабинет по СМС-коду становиться популярнее. Для покупателя это удобно: не надо держать в памяти пароль или искать его на почте в момент когда он нужен для оформления заказа.
Наш клиент Waf-Waf поставил перед нами задачу: внедрить СМС-авторизацию на действующий интернет-магазин.
Реализация
Сама по себе авторизация по СМС коду не нова и мы бы не стали писать этот кейс если бы внедрение было для нового проекта, в котором нет еще истории покупок и реальных покупателей.
В данном случае мы имели дело с уже работающим интернет-магазином и вводными, а именно:
- Не у всех аккаунтов были номера телефонов, необходимые для авторизации;
- среди аккаунтов были совпадения номеров, что недопустимо - номер телефона должен быть уникальным;
- номера телефонов хранились не в стандартизированном виде.
Особенностью внедрения подобного функционала на боевой сайт — внедрить новую авторизацию и привести в порядок все аккаунты надо одновременно, в противном случае мы бы столкнулись или с невозможностью авторизоваться или с генерацией новых аккаунтов-дублей.
Итак, давайте разберем действия по реализации по шагам:
1 шаг - Стандартизация существующих номеров телефонов
Номера телефонов в аккаунтах хранились в разном формате, так как ранее на стороне сайта не было маски ввода номера телефона, каждый покупатель вводил номер телефона “как мог”:
+7(916)6773643
8-916-787-4498
+7-915-875-43-54
и т.д
Для решения этой задачи мы написали скрипт, который по регулярному выражению приводит номера телефонов в одинаковый вид:
79166773643
79167874498
79158754354
и т.д
С такими номерами можно продолжать работать.
2 шаг - Присвоить всем существующим аккаунтам номера телефонов
Чтобы пользователь мог авторизоваться по номеру телефона свойство “телефон” в аккаунте должно быть заполнено, что логично. На момент решения задачи ситуация была иная - у 1/3 аккаунтов свойство “телефон” заполнено не было. Такие пользователи просто не смогли бы авторизоваться.
Мы посоветовались с клиентом и приняли решение - если у покупателя в аккаунте нет номера телефона присвоить аккаунту номер телефона из последнего заказа. Что логично, ведь если покупатель ввел номер телефона при заказе, скорее всего это актуальный номер и увидев новую форму авторизации на сайте он введет этот номер и увидит свои заказы.
Мы написали скрипт, который сделал всю работу по копированию номеров из заказов в аккаунт, проблема была решена.
3 шаг - Уникализация номеров телефонов
После копирования получилось много аккаунтов с одинаковыми номерами. Это произошло из-за того, что покупатели на сайте не авторизовались перед покупкой и каждый раз система генерировала им новый аккаунт, а заказывали они на один и тот же номер.
Важно было оставить один единственный аккаунт в случае, если есть копия с таким же номером и перенести заказы в один аккаунт, чтобы при авторизации покупатель увидел все сделанные им на свой номер телефона заказы за все время покупок.
Мы написали небольшой скрипт, который помог нам быстро склеить все аккаунты:
По итогу этого шага мы получили уникальные аккаунты с историей покупок по номеру телефона.
4 шаг - Внедрение формы входа по номеру телефона
На этом шаге мы внедрили форму входа по номеру телефона и подтверждение по СМС. В качестве СМС-биллинга мы подключили СМС-город.
Итог
Покупатели waf-waf.ru могут больше не держать пароль от аккаунта в голове, чтобы сделать заказ или зайти в личный кабинет достаточно иметь мобильный телефон под рукой.