Дополнительные опции
Приобрести и затем
установить модуль вы можете через раздел «
Магазин приложений » в центре администрирования HostCMS.
Модуль предназначен для отправки SMS-сообщений о поступивших или оплаченных заказах на сайте. Сообщения отправляются куратору магазина и пользователям сайта.
Для перехода в модуль выберите пункт меню "Инструменты" - "SMS-биллинг".
Поддерживаемые сервисы:
SMS.RU
SMSint.ru
IQSMS.ru
SMS-Agent.ru
SMSAero.ru
SMSc.ru
RedSMS.ru
Инструкция по подключению:
SMS.RU
SMSint.ru
IQSMS.ru
SMS-Agent.ru
SMSAero.ru
SMSc.ru
RedSMS.ru
SMS.RU
После установки модуля перейдите на сайт http://sms.ru/
Пройдите регистрацию в сервисе.
После авторизации, в личном кабинете, в блоке «Ключ для внешних программ» будет указан api_id . Он необходим для работы модуля.
В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "SMS.RU" и указываете api_id, логин и пароль от личного кабинета на sms.ru
После сохранения регистрационных данных функционал модуля станет доступным.
SMSint.ru
После установки модуля перейдите на сайт https://www.smsint.ru/
Пройдите регистрацию в сервисе.
В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "SMSInt.ru" и указываете логин, пароль от личного кабинета на smsint.ru и номер администратора, на который будут приходит сообщения.
После сохранения регистрационных данных функционал модуля станет доступным.
IQSMS.ru
После установки модуля перейдите на сайт https://iqsms.ru/
Пройдите регистрацию в сервисе.
В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "IQSMS.ru" и указываете логин и пароль, которые придут в письме.
После сохранения регистрационных данных функционал модуля станет доступным.
SMS-Agent.ru
После установки модуля перейдите на сайт https://sms-agent.ru/
Пройдите регистрацию в сервисе и заключите договор.
Подключите API-аккаунт через менеджера в разделе: https://office.sms-agent.ru/api.html .
В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "СМС-Агент" и указываете логин и пароль, которые придут в письме.
После сохранения регистрационных данных функционал модуля станет доступным.
SMSAero.ru
После установки модуля перейдите на сайт https://smsaero.ru/
Пройдите регистрацию в сервисе.
В личном кабинете smsaero.ru перейдите в раздел "Настройки" - "API и SMPP" и скопируйте ключ из раздела "API-ключ".
В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "SMS Aero" и указываете логин и API-ключ.
После сохранения регистрационных данных функционал модуля станет доступным.
SMSc.ru
После установки модуля перейдите на сайт https://smsc.ru/
Пройдите регистрацию в сервисе.
В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "SMSЦентр" и указываете логин и пароль от личного кабинета.
После сохранения регистрационных данных функционал модуля станет доступным.
RedSMS.ru
После установки модуля перейдите на сайт https://redsms.ru/
Пройдите регистрацию в сервисе и заключите договор.
В личном кабинете redsms.ru перейдите в раздел "Настройки" - "HTTP API" и скопируйте ключ из раздела "API ключ".
В самом модуле, в разделе «Настройки» — «Регистрационные данные» выбираете драйвер "RedSMS" и указываете логин, API-ключ и имя отправителя.
После сохранения регистрационных данных функционал модуля станет доступным.
Интеграция авторизации по SMS-кодам в модуле Клиенты
Для интеграции необходимо внести изменения в XSL-шаблон личного кабинета.
Добавление подтверждения телефона
В требуемом месте шаблона добавьте вызов темплейта:
<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>
Авторизация по номеру телефона
В блоке вывода формы авторизации добавьте:
<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>
Интеграция подтверждения номера телефона при регистрации:
Для интеграции необходимо внести изменения в типовые динамические страницы регистрации и личного кабинета.
Типовая динамическая страница регистрации. Перед условием:
// Регистрация нового пользователя
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;
Типовая динамическая страница личного кабинета. Перед блоком:
$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;
}
}
}
Интеграция подтверждения по SMS-кодам в модуле Формы
В XSL-шаблоне показа форм добавить тегу <form> класс sms-form-confirm-wrapper и атрибут data-form-id="{@id}"
Добавить блок показа строки для ввода кода:
<div>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="smsFormFillCoreError/node()">form-group sms-form-confirm-code</xsl:when>
<xsl:otherwise>form-group sms-form-confirm-code hidden</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<label for="" class="col-xs-12 col-md-3 control-label">Код:</label>
<div class="col-xs-12 col-md-9">
<input name="form-code" type="text" size="30" class="form-control" />
<xsl:if test="sms_form_fill/node()">
<input name="sms_form_fill" type="hidden" value="{sms_form_fill}" />
</xsl:if>
</div>
</div>
В кнопку отправки формы добавить после <button>:
<xsl:if test="not(smsFormFillCoreError/node())">
<xsl:attribute name="onclick">$.smsAuthSendFormCode(this, $('input[name=phone]').val(), $('input[name=form-code]').val())</xsl:attribute>
</xsl:if>
Перед закрытием тега добавить:
<div class="sms-form-confirm-error hidden"></div>
Интеграция подтверждения по SMS-кодам в Корзине
Изменения вносятся в XSL адреса доставки.
В начале темплейта <xsl:template match="/shop"> добавить показ ошибок:
<xsl:if test="error != ''">
<div class="alert alert-danger">
<xsl:value-of disable-output-escaping="yes" select="error" />
</div>
</xsl:if>
В XSL-шаблоне показа форм добавить тегу <form> класс sms-cart-confirm-wrapper и атрибут data-shop-id="{@id}"
Добавить блок показа строки для ввода кода:
<div>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="smsCartFillCoreError/node()">form-group sms-cart-confirm-code</xsl:when>
<xsl:otherwise>form-group sms-cart-confirm-code hidden</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<label for="" class="col-xs-12 col-sm-2 control-label">Код:</label>
<div class="col-xs-12 col-sm-9">
<input name="form-code" type="text" size="30" class="form-control" />
<xsl:if test="sms_shop_cart/node()">
<input name="sms_shop_cart" type="hidden" value="{sms_shop_cart}" />
</xsl:if>
</div>
</div>
В кнопку отправки формы добавить после <button>:
xsl:if test="not(smsCartFillCoreError/node())">
<xsl:attribute name="onclick">$.smsAuthSendCartCode(this, $('input[name=phone]').val(), $('input[name=form-code]').val())</xsl:attribute>
</xsl:if>
Перед закрытием тега </form> добавить:
<div class="sms-cart-confirm-error hidden"></div>
В ТДС корзины в блоке switch (Core_Array::getPost('recount') ? 0 : Core_Array::getPost('step'))
а. в case 1: добавить sms_shop_cart:
после $Shop_Address_Controller_Show = new Shop_Address_Controller_Show($oShop); б. в case 2: в самое начало добавить:
$Shop_Address_Controller_Show = new Shop_Address_Controller_Show($oShop);
$bConfirm = Core::moduleIsActive('sms')
? Sms_Shop_Controller::confirm($oShop, $Shop_Address_Controller_Show)
: TRUE;
if (!$bConfirm)
{
goto sms_shop_cart;
}
API методы
// Форматировать телефон
$phone = Sms_Controller::sanitizePhoneNumbers($phone, $country_code = "+7");
// Отправить SMS
Sms_Controller::sendSms($phone, $from = '', $message = '');
Дополнительная информация:
После установки обновите центр администрирования по Ctrl+F5, модуль будет в разделе «Инструменты».
Баланс для отправки сообщений пополняется на сайтах сервисов.
Список подстановок:
{ORDER_ID} — Номер заказа.
{ORDER_SUM} — Сумма заказа.
{ORDER_STATUS} — Статус заказа.
{ORDER_ITEM_SUM} — Сумма товаров в заказе.
{ORDER_CURRENCY} — Валюта заказа.
{ORDER_ADDRESS} — Адрес, указанный при заказе.
{ORDER_PROPERTYxxx} — Значение свойства xxx заказа, например {ORDER_PROPERTY37}.
{CODE} — код подтверждения телефона;
Техническая поддержка/консультация и гарантированный доступ к обновлениям осуществляется в течение 6 месяцев со дня оплаты.
Информация о разработчике:
Разработчик: Hostmake LLC
Вопросы по модулю: support @hostcms.ru
Поддержка: support @hostcms.ru
Версия
Дата
Описание
Версия от
Версия до
4.5.1
06.09.2024
Добавлена поддержка версии 7.1.2
7.1.2
∞
4.5
31.07.2024
Добавлена возможность подтверждения форм для модуля "Формы"
Добавлена возможность подтверждения корзины.
7.1.0
∞
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
∞
4.3
17.04.2023
Добавлена возможность прозрачной регистрации клиентов, использую только вход по номеру телефона.
7.0.2
∞
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
∞
Еще версии
Комментарии