Выдано 136145 лицензий

Магазин приложений HostCMS

SMS-уведомления и авторизация

SMS-уведомления и авторизация

Цена: 3 900 ₽

Дополнительные опции

Помощь в интеграции авторизации по SMS-коду на сайте, адаптация XSL и CSS под дизайн сайта.

Более 20 установок.

Установить модуль вы можете через раздел «Магазин приложений» в центре администрирования HostCMS.

Модуль предназначен для отправки SMS-сообщений о поступивших или оплаченных заказах на сайте. Сообщения отправляются куратору магазина и пользователям сайта.

Поддерживаемые сервисы:

  • SMS.RU
  • SMSint.ru
  • IQSMS.ru
  • SMS-Agent.ru

Инструкция по подключению:

  • SMS.RU
  1. После установки модуля перейдите на сайт http://sms.ru/
  2. Пройдите регистрацию в сервисе.
  3. После авторизации, в личном кабинете, в блоке «Ключ для внешних программ» будет указан api_id. Он необходим для работы модуля.
  4. В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "SMS.RU" и указываете api_id, логин и пароль от личного кабинета на sms.ru
  5. После сохранения регистрационных данных функционал модуля станет доступным.
  • SMSint.ru
  1. После установки модуля перейдите на сайт https://www.smsint.ru/
  2. Пройдите регистрацию в сервисе.
  3. В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "SMSInt.ru" и указываете логин, пароль от личного кабинета на smsint.ru и номер администратора, на который будут приходит сообщения.
  4. После сохранения регистрационных данных функционал модуля станет доступным.
  • IQSMS.ru
  1. После установки модуля перейдите на сайт https://iqsms.ru/
  2. Пройдите регистрацию в сервисе.
  3. В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "IQSMS.ru" и указываете логин и пароль, которые придут в письме.
  4. После сохранения регистрационных данных функционал модуля станет доступным.
  • SMS-Agent.ru
  1. После установки модуля перейдите на сайт https://sms-agent.ru/
  2. Пройдите регистрацию в сервисе и заключите договор.
  3. В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "СМС-Агент" и указываете логин и пароль, которые придут в письме.
  4. После сохранения регистрационных данных функционал модуля станет доступным.

Интеграция авторизации по SMS-кодам

Для интеграции необходимо внести изменения в XSL-шаблон личного кабинета.

  1. Добавление подтверждения телефона

    В требуемом месте шаблона добавьте вызов темплейта:

    <xsl:if test="sms_auth/node()">
    	<xsl:apply-templates select="sms_auth"></xsl:apply-templates>
    </xsl:if>
    

    И сам темплейт:

    <xsl:template match="sms_auth">
    	<xsl:variable name="phone">
    		<xsl:choose>
    			<xsl:when test="phone/node() and phone != ''">
    				<xsl:value-of select="phone" />
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:value-of select="siteuser_phone" />
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:variable>
    
    	<div class="sms-auth-wrapper">
    		<h2 class="social-title sms-auth-title">Подтверждение телефона</h2>
    		<xsl:if test="not(phone/node()) or phone = ''">
    			<div class="sms-auth-description">На указанный номер будет отправлен SMS-код, который необходимо внести в поле "Код из SMS"</div>
    		</xsl:if>
    		<div class="sms-auth-phone">
    			<input type="text" id="sms_auth_phone" name="sms_auth_phone" value="{$phone}">
    				<xsl:if test="phone/node() and phone != ''">
    					<xsl:attribute name="disabled">disabled</xsl:attribute>
    					<xsl:attribute name="class">confirmed</xsl:attribute>
    					<div class="break-line"></div>
    					<span class="confirmed-text">подтвержден</span>
    				</xsl:if>
    			</input>
    			<xsl:if test="not(phone/node()) or phone = ''">
    				<div class="break-line"></div>
    				<button class="send-code" onclick="$.smsAuthSendCode($('#sms_auth_phone').val())">Подтвердить</button>
    			</xsl:if>
    		</div>
    		<xsl:if test="not(phone/node()) or phone = ''">
    			<div class="sms-auth-code hidden">
    				<input type="text" id="sms_auth_code" name="sms_auth_code" placeholder="Код из SMS"/>
    				<button class="accept-code" onclick="$.smsAuthConfirmCode($('#sms_auth_code').val(), $('#sms_phone').val())">ОК</button>
    			</div>
    			<div class="sms-auth-error hidden"></div>
    			<input type="hidden" id="sms_phone" value=""/>
    		</xsl:if>
    	</div>
    </xsl:template>
    
  2. Авторизация по номеру телефона

    В блоке вывода формы авторизации добавьте:

    <xsl:if test="sms_auth/node()">
    	<h1>Войти через SMS</h1>
    
    	<form action="" method="post" class="form-horizontal">
    		<div class="sms-auth-login-wrapper">
    			<div class="form-group sms-auth-phone">
    				<label for="" class="col-xs-12 col-md-3 control-label">Телефон:</label>
    				<div class="col-xs-12 col-md-9">
    					<input name="phone" type="text" size="30" placeholder="+7" class="form-control" />
    				</div>
    			</div>
    			<div class="form-group sms-auth-code hidden">
    				<label for="" class="col-xs-12 col-md-3 control-label">Код:</label>
    				<div class="col-xs-12 col-md-9">
    					<input name="code" type="text" size="30" class="form-control" />
    				</div>
    			</div>
    			<div class="form-group sms-auth-phone-button">
    				<label for="" class="hidden-xs col-md-3 control-label"></label>
    				<div class="col-xs-12 col-md-9">
    					<a class="btn btn-secondary" onclick="$.smsAuthSendAuthorizationCode($('.sms-auth-phone input[name=phone]').val())">Получить код</a>
    				</div>
    			</div>
    			<div class="form-group sms-auth-code-button hidden">
    				<label for="" class="hidden-xs col-md-3 control-label"></label>
    				<div class="col-xs-12 col-md-9">
    					<a class="btn btn-secondary" onclick="$.smsAuthConfirmAuthorizationCode($('.sms-auth-code input[name=code]').val(), $('.sms-auth-login-wrapper #sms_phone').val())">Войти</a>
    				</div>
    			</div>
    			<div class="sms-auth-error hidden"></div>
    			<input type="hidden" id="sms_phone" value=""/>
    		</div>
    	</form>
    </xsl:if>
    

    Интеграция подтверждения номера телефона при регистрации:

    Для интеграции необходимо внести изменения в типовые динамические страницы регистрации и личного кабинета.

    1. Типовая динамическая страница регистрации. В блоке:
      // Регистрация нового пользователя
      if ($bNewUser)
      {
      ...
      }
      

      Содержимое меняется на:

      if (Core::moduleIsActive('sms'))
      {
      	$phone = Sms_Auth_Controller::getSiteuserPhone($oSiteuser);
      
      	if (!is_null($phone))
      	{
      		$result = Sms_Auth_Controller::sendPhoneConfirmationCode($oSiteuser, $phone);
      
      		if (is_object($result) && $result instanceof Sms_Auth_Phone_Model)
      		{
      			$oSms_Auth_Phone = $result;
      
      			$Sms_Auth_Controller_Show = new Sms_Auth_Controller_Show(
      				$oSms_Auth_Phone
      			);
      			$Sms_Auth_Controller_Show->xsl(
      				Core_Entity::factory('Xsl')->getByName('SMSКодПодтверждения')
      			)
      			->show();
      		}
      		elseif ($result !== FALSE)
      		{
      			?><h1>Ошибка</h1><?php
      			switch ($result)
      			{
      				case 3:
      					$error = 'Номер используется у другого клиента';
      				break;
      				case 2:
      					$error = 'Номер уже подтвержден';
      				break;
      				case -2:
      					$error = 'Прошло мало времени с предыдущей отправки';
      				break;
      				default:
      					$error = 'Неизвестая ошибка!';
      			}
      			?><div class="error alert alert-danger"><?php echo $error?></div><?php
      		}
      	}
      	else
      	{
      		?><h1>Ошибка</h1>
      		<div class="error alert alert-danger">Подтверждение невозможно, так как не указан номер телефона!</div><?php
      	}
      }
      else
      {
      	if ($bQuickRegistration)
      	{
      		// Авторизуем зарегистрированного пользователя
      		$oSiteuser->setCurrent();
      
      		// Перенаправляем на страницу, с которой он пришел
      		!is_null(Core_Array::getPost('location')) && $Siteuser_Controller_Show->go(
      			strval(Core_Array::getPost('location'))
      		);
      	}
      
      	// Отправка письма
      	$oSite_Alias = $oSiteuser->Site->getCurrentAlias();
      	$Siteuser_Controller_Show
      		->setEntity($oSiteuser)
      		->applyAffiliate(Core_Array::get($_COOKIE, 'affiliate_name'))
      		->subject(
      			Core::_('Siteuser.confirm_subject', !is_null($oSite_Alias) ? $oSite_Alias->alias_name_without_mask : '')
      		)
      		->sendConfirmationMail(Core_Entity::factory('Xsl')->getByName($xsl_letter));
      
      	?>
      	<h1>Спасибо за регистрацию</h1>
      	<p>Для продолжения работы необходимо подтвердить регистрацию Ваших данных.
      	В Ваш адрес отправлено письмо, содержащее ссылку для подтверждения регистрации.</p>
      	<p>Если Ваш браузер поддерживает автоматическое перенаправление через 3 секунды Вы перейдете на страницу <a href="../">авторизации пользователя</a>.</p>
      	<script type="text/javascript">setTimeout(function(){ location = '../' }, 3000);</script>
      	<?php
      }
      
      return;
      
    2. Типовая динамическая страница личного кабинета. Перед блоком:
      $Siteuser_Controller_Show->xsl(
      	Core_Entity::factory('Xsl')->getByName($xslUserAuthorization)
      )
      ->show();
      

      Добавьте:

      // Авторизация по логину и паролю
      if (Core::moduleIsActive('sms') && Core_Array::getPost('apply') && !$oSiteuser->id)
      {
      	$oSiteuser = $oSiteuser->Site->Siteusers->getByLoginAndPassword(
      		Core_Array::getPost('login', '', 'str'), Core_Array::getPost('password', '', 'str')
      	);
      
      	if (!is_null($oSiteuser) && !$oSiteuser->active)
      	{
      		$phone = Sms_Auth_Controller::getSiteuserPhone($oSiteuser);
      
      		if (!is_null($phone))
      		{
      			$result = Sms_Auth_Controller::sendPhoneConfirmationCode($oSiteuser, $phone);
      
      			if (is_object($result) && $result instanceof Sms_Auth_Phone_Model)
      			{
      				$oSms_Auth_Phone = $result;
      
      				$Sms_Auth_Controller_Show = new Sms_Auth_Controller_Show(
      					$oSms_Auth_Phone
      				);
      				$Sms_Auth_Controller_Show->xsl(
      					Core_Entity::factory('Xsl')->getByName('SMSКодПодтверждения')
      				)
      				->show();
      			}
      			elseif ($result !== FALSE)
      			{
      				?><h1>Ошибка</h1><?php
      				switch ($result)
      				{
      					case 3:
      						$error = 'Номер используется у другого клиента';
      					break;
      					case 2:
      						$error = 'Номер уже подтвержден';
      					break;
      					case -2:
      						$error = 'Прошло мало времени с предыдущей отправки';
      					break;
      					default:
      						$error = 'Неизвестая ошибка!';
      				}
      				?><div class="error alert alert-danger"><?php echo $error?></div><?php
      			}
      
      			return;
      		}
      	}
      }
      

    Дополнительная информация:

    • После установки обновите центр администрирования по Ctrl+F5, модуль будет в разделе «Инструменты».
    • Баланс для отправки сообщений пополняется на сайтах сервисов.

    Список подстановок:

    • {ORDER_ID} — Номер заказа.
    • {ORDER_SUM} — Сумма заказа.
    • {ORDER_STATUS} — Статус заказа.
    • {ORDER_ITEM_SUM} — Сумма товаров в заказе.
    • {ORDER_CURRENCY} — Валюта заказа.
    • {ORDER_ADDRESS} — Адрес, указанный при заказе.
    • {ORDER_PROPERTYxxx} — Значение свойства xxx заказа, например {ORDER_PROPERTY37}.
    • {CODE} — код подтверждения телефона;

    Информация о разработчике:

    • Разработчик: Hostmake LLC
    • Вопросы по модулю: support@hostcms.ru
    • Поддержка: support@hostcms.ru

    Скриншоты

    Версии модуля

    Версия Дата Описание Версия от Версия до
    4.2 16.11.2022

    Добавлено подтверждение номера телефона при регистрации клиента. Доступно для редакции "Бизнес" и "Корпорация".

    7.0.2
    4.1 24.08.2022

    Добавлен драйвер sms-agent.ru

    7.0.2
    4.0 04.08.2022

    Добавлен драйвер  IQSMS.ru

    Реализована возможность подтверждать номер телефона в личном кабинете и авторизовываться по номеру телефона. Доступно для редакции "Бизнес" и "Корпорация".

    Общие исправления.

    7.0.2
    3.5 07.07.2021

    Обновлен драйвер sms.ru

    6.9.6
    3.4 28.10.2020

    Добавлена отправка sms при отправке заказа.

    6.9.6
    3.3 01.09.2020

    Общие исправления.

    6.9.0
    3.2 07.02.2020

    Добавлена украинская локализация

    6.8.9
    3.1 15.10.2019

    Добавлены подстановки значений свойств заказа.

    6.8.9
    3.0 20.02.2019

    Добавлен драйвер SmsInt.ru

    Общие исправления

    6.8.5
    2.5 11.07.2018

    Общие исправления

    6.8.1
    2.4 08.05.2018

    Общие исправления

    6.7.9
    2.3 22.01.2018

    Добавлено управление шаблонами SMS-сообщений из самого модуля.

    6.7.4
    2.2 27.02.2017

    Добавлено разделение по сайтам

    6.6.8
    2.1 09.11.2016

    Добавлены подстановки для сообщений.

    6.6.2 6.6.7
    2.0 19.05.2016

    Переработан модуль.

    Добавлено оповещение при отмене заказа, при смене статуса заказа.

    6.5.8 6.6.1
    1.0 01.12.2015

    Релиз

    6.5.4
    Похожие

    Комментарии

    • Настройка

      Не могу настроит. И как проверить

      12.09.2019 01:10:34 felixbek

      Без темы

      Очень содержательно, конечно. Как и указано в описании, вопросы по модулю: support@hostcms.ru

      12.09.2019 08:22:10 alexander.egorov
    • Без темы

      А о комментариях на сайте тоже может приходить СМС ?

      05.09.2016 16:43:23 nagual

      Без темы

      К сожалению, нет. Только информирование о заказах (поступление, оплата, отмена, смена статуса).

      05.09.2016 16:45:47 alexander.egorov
    • prom-studio

      Данные в sms пользователюпри заказе

      Как выглядит шаблон сообщения пользователю при заказе? Можно ли его редактировать и какие данные вставляются?

      31.03.2016 01:59:17 prom-studio

      Без темы

      > Как выглядит шаблон сообщения пользователю при заказе?
      На каждое действие свой шаблон. Вот такого типа:

      'paid_admin_mail' => 'Заказ %s на сумму %2$s оплачен',
      'paid_user_mail' => 'Ваш заказ %s на сумму %2$s оплачен',
      'order_admin_mail' => 'Поступил заказ %1$s на сумму %2$s %3$s',
      'order_user_mail' => 'Ваш заказ %1$s на сумму %2$s %3$s получен',

      > Можно ли его редактировать и какие данные вставляются?
      Конечно. Они вынесены в отдельный конфигурационный файл. По умолчанию передаются номер заказа. его сумма и валюта.

      31.03.2016 08:37:50 alexander.egorov