Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
      • Сниппет Shopkeeper
      • Сниппет SHKwidget
      • Модификатор shk_widget
      • Экстендер для Ditto
      • Модуль Shopkeeper
      • Пример Ditto eForm Phx
      • Примеры плагинов
      • Отправка смс через SMS.RU
      • Сообщения для менеджера
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • Shopkeeper

Отправка смс при изменении статуса заказа через SMS.RU

  • Дополнения
  • Shopkeeper
  • Отправка смс через SMS.RU
638

Отправка смс при изменении статуса заказа через SMS.RU

Плагин отправляет сообщение покупателю на телефон. указанный при регистрации через сервис SMS.RU.

Плагин вешается на событие OnSHKChangeStatus и использует плагин SHKshowAdminMessage, для вывода сообщения менеджеру.

/**
 * SHKsendSMS
 *
 * Отправка смс при изменении статуса заказа
 *
 * @category  plugin
 * @package   modx 
 * @version   V 0.1
 * @internal  @events OnSHKChangeStatus
 * @internal  @legacy_names SHKsendSMS
 * @internal  @installset base, sample
 * @internal  @properties 
 * @internal  @modx_category Shop
 * @internal  @installset base, sample
*/ 

/*
1 - Новый
2 - Принят к оплате
3 - Отправлен
4 - Выполнен
5 - Отменен
6 - Оплата получена
*/

$e = &$modx->Event;
$output = "";

if ($e->name == 'OnSHKChangeStatus') {
    $status_message = array(
        1=>"Заказ ".$order_id." принят. Ожидайте ссылку на оплату",
        2=>"Заказ ".$order_id." ожидает оплаты. Ссылка на почте",
        3=>"Заказ ".$order_id." отправлен. Код для получения [+tracking_num+]",
        6=>"Заказ ".$order_id." оплачен. Ждите инфо о доставке"
    );      

    if (isset($status_message[$status])) {
        $result = $modx->db->select("id, status, phone, short_txt, tracking_num", $modx->getFullTableName('manager_shopkeeper'),  "id=".$order_id);
        if ($row = $modx->db->getRow($result)) {

            $data = array_merge($row, unserialize($row['short_txt']));

            $smsText = $status_message[$data['status']];
            $sendsms = ($data['sendsms']='1' || $data['sendsms']='on')?1:0; 
            $smsTo = preg_replace('/[^0-9]/', '', $data['phone']);

            if ($smsTo && $sendsms) {

                foreach ($row as $key => $value){
                    $smsText = str_replace('[+'.$key.'+]', $value, $smsText);
                }

                require_once MODX_BASE_PATH."assets/plugins/SHKsendSMS/sms.ru.php";

                $smsru = new SMSRU('программный ключ'); // Ваш уникальный программный ключ, который можно получить на главной странице

                $data = new stdClass();
                $data->to = $smsTo;
                $data->text = $smsText; // Текст сообщения
                $data->from = 'ОТПРАВИТЕЛЬ'; // Если у вас уже одобрен буквенный отправитель, его можно указать здесь, в противном случае будет использоваться ваш отправитель по умолчанию
                // $data->time = time() + 7*60*60; // Отложить отправку на 7 часов
                // $data->translit = 1; // Перевести все русские символы в латиницу (позволяет сэкономить на длине СМС)
                // $data->test = 1; // Позволяет выполнить запрос в тестовом режиме без реальной отправки сообщения
                // $data->partner_id = '1'; // Можно указать ваш ID партнера, если вы интегрируете код в чужую систему

                //$sms = $smsru->send_one($data); // Отправка сообщения и возврат данных в переменную

                if ($sms->status == "OK") { // Запрос выполнен успешно
                    $message_type = 'success';
                    $message_title = "Сообщение отправлено успешно.";
                    $message_text = "ID сообщения: ".$sms->sms_id." \n Ваш новый баланс: ".$sms->balance."\n";
                } else {
                    $message_type = 'warning';
                    $message_title = "Сообщение не отправлено.";
                    $message_text = "Код ошибки: ".$sms->status_code."\n Текст ошибки: ".$sms->status_text."\n";
                }       

            } else {
                $message_type = 'info';
                $message_title = "СМС не отправлено. \n";
                if ($sendsms) {
                    $message_text = "Не указан телефон (".$smsTo.")\n";
                } else {
                    $message_text = "Пользователь отказался от уведомления.\n";
                }
            }          
        }
        $output .= $message_title."\n".$message_text;
    } else {
        $output.=" Не задано сообщение для статуса: ".$status;
    }

    $_SESSION['SHKmessage'][] = array('type' => $message_type, 'title' => $message_title, 'text' => $message_text);

}

$modx->event->output($output);