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

SMS-уведомления и авторизация
3 900 ₽
Более 20 установок.

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

Помощь в интеграции авторизации по SMS-коду на сайте, адаптация XSL и CSS под дизайн сайта.
Приобрести и затем установить модуль вы можете через раздел «Магазин приложений» в центре администрирования HostCMS.

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

Для перехода в модуль выберите пункт меню "Инструменты" - "SMS-биллинг".

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

  • SMS.RU
  • SMSint.ru
  • IQSMS.ru
  • SMS-Agent.ru
  • SMSAero.ru
  • SMSc.ru
  • RedSMS.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. Подключите API-аккаунт через менеджера в разделе: https://office.sms-agent.ru/api.html.
  4. В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "СМС-Агент" и указываете логин и пароль, которые придут в письме.
  5. После сохранения регистрационных данных функционал модуля станет доступным.
  • SMSAero.ru
  1. После установки модуля перейдите на сайт https://smsaero.ru/
  2. Пройдите регистрацию в сервисе.
  3. В личном кабинете smsaero.ru перейдите в раздел "Настройки" - "API и SMPP" и скопируйте ключ из раздела "API-ключ".
  4. В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "SMS Aero" и указываете логин и API-ключ.
  5.  После сохранения регистрационных данных функционал модуля станет доступным.
  • SMSc.ru
  1. После установки модуля перейдите на сайт https://smsc.ru/
  2. Пройдите регистрацию в сервисе.
  3. В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "SMSЦентр" и указываете логин и пароль от личного кабинета.
  4.  После сохранения регистрационных данных функционал модуля станет доступным.
  • RedSMS.ru
  1. После установки модуля перейдите на сайт https://redsms.ru/
  2. Пройдите регистрацию в сервисе и заключите договор.
  3. В личном кабинете redsms.ru перейдите в раздел "Настройки" - "HTTP API" и скопируйте ключ из раздела "API ключ".
  4. В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "RedSMS" и указываете логин, API-ключ и имя отправителя.
  5.  После сохранения регистрационных данных функционал модуля станет доступным.

Интеграция авторизации по 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-12 col-md-3 control-label">Телефон:</label>
    				<div class="col-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-12 col-md-3 control-label">Код:</label>
    				<div class="col-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-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-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)
      {
      ...
      }
      
      добавляем строку:
      Sms_Auth_Controller::deleteOldPhone($oSiteuser);
      В блоке:
      // Регистрация нового пользователя
      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.4.2 23.11.2023

    Добавлен хук Sms_Auth_Command_Controller.onAfterSmsAuthConfirmCode

    Добавлен хук Sms_Auth_Command_Controller.onAfterSmsAuthConfirmAuthorizationCode

    7.0.2
    4.4.1 25.10.2023

    Подключение скриптов и стилей в клиентской части разделено по сайтам. Подключение будет происходить только для сайтов, у которых были сделаны настройки в модуле.

    7.0.2
    4.4 17.10.2023

    Добавлен драйвер Sms Aero

    Добавлен драйвер SMSЦентр

    Добавлен драйвер RedSMS

    7.0.2
    4.3.2 11.10.2023

      Добавлен показ клиента в списке подтвержденных телефонов.

    Добавлено удаление подтвержденного номера при изменении клиентом номера телефона.

    7.0.2
    4.3.1 05.10.2023

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

    7.0.2
    Еще версии

    Комментарии

    • Настройка

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

      felixbek 12.09.2019 01:10:34

      Без темы

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

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

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

      nagual 05.09.2016 16:43:23

      Без темы

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

      alexander.egorov 05.09.2016 16:45:47
    • Данные в sms пользователюпри заказе

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

      prom-studio
      prom-studio 31.03.2016 01:59:17

      Без темы

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

      '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 получен',

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

      alexander.egorov 31.03.2016 08:37:50
    Похожие