Отправка смс при изменении статуса заказа через SMS.RU
- Дополнения
- Shopkeeper
- Отправка смс через SMS.RU
Поддержать: USDT TRC20: TBGKTYDs4yzU17vQbobbUB8epFFtFb6PKh
1509
Отправка смс при изменении статуса заказа через 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);