СМС-авторизация по номеру телефона для интернет-магазина на 1C-Битрикс

Возможность войти в личный кабинет по СМС-коду становиться популярнее. Для покупателя это удобно: не надо держать в памяти пароль или искать его на почте в момент когда он нужен для оформления заказа.

Наш клиент Waf-Waf поставил перед нами задачу: внедрить СМС-авторизацию на действующий интернет-магазин.

(всплывающее окно с вводом номера и проверочного кода для авторизации по SMS)

Реализация

Сама по себе авторизация по СМС коду не нова и мы бы не стали писать этот кейс если бы внедрение было для нового проекта, в котором нет еще истории покупок и реальных покупателей.

В данном случае мы имели дело с уже работающим интернет-магазином и вводными, а именно:

  1. Не у всех аккаунтов были номера телефонов, необходимые для авторизации;
  2. среди аккаунтов были совпадения номеров, что недопустимо - номер телефона должен быть уникальным;
  3. номера телефонов хранились не в стандартизированном виде.

Особенностью внедрения подобного функционала на боевой сайт — внедрить новую авторизацию и привести в порядок все аккаунты надо одновременно, в противном случае мы бы столкнулись или с невозможностью авторизоваться или с генерацией новых аккаунтов-дублей.

Итак, давайте разберем действия по реализации по шагам:

1 шаг - Стандартизация существующих номеров телефонов

Номера телефонов в аккаунтах хранились в разном формате, так как ранее на стороне сайта не было маски ввода номера телефона, каждый покупатель вводил номер телефона “как мог”:

+7(916)6773643
8-916-787-4498
+7-915-875-43-54

и т.д

Для решения этой задачи мы написали скрипт, который по регулярному выражению приводит номера телефонов в одинаковый вид:

79166773643
79167874498
79158754354

и т.д

С такими номерами можно продолжать работать.

2 шаг - Присвоить всем существующим аккаунтам номера телефонов

Чтобы пользователь мог авторизоваться по номеру телефона свойство “телефон” в аккаунте должно быть заполнено, что логично. На момент решения задачи ситуация была иная - у 1/3 аккаунтов свойство “телефон” заполнено не было. Такие пользователи просто не смогли бы авторизоваться.

Мы посоветовались с клиентом и приняли решение - если у покупателя в аккаунте нет номера телефона присвоить аккаунту номер телефона из последнего заказа. Что логично, ведь если покупатель ввел номер телефона при заказе, скорее всего это актуальный номер и увидев новую форму авторизации на сайте он введет этот номер и увидит свои заказы.

Мы написали скрипт, который сделал всю работу по копированию номеров из заказов в аккаунт, проблема была решена.

3 шаг - Уникализация номеров телефонов

После копирования получилось много аккаунтов с одинаковыми номерами. Это произошло из-за того, что покупатели на сайте не авторизовались перед покупкой и каждый раз система генерировала им новый аккаунт, а заказывали они на один и тот же номер.

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

Мы написали небольшой скрипт, который помог нам быстро склеить все аккаунты:

(в процессе работы над задачей для удобства отладки мы написали скрипт, выдающий статистику по количеству дублей по номеру телефона)

По итогу этого шага мы получили уникальные аккаунты с историей покупок по номеру телефона.

4 шаг - Внедрение формы входа по номеру телефона

На этом шаге мы внедрили форму входа по номеру телефона и подтверждение по СМС. В качестве СМС-биллинга мы подключили СМС-город.

Итог

Покупатели waf-waf.ru могут больше не держать пароль от аккаунта в голове, чтобы сделать заказ или зайти в личный кабинет достаточно иметь мобильный телефон под рукой.