Отправка смс при изменении статуса заказа через 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);
	
}

$e->output($output);
	


В папку /assets/plugins/SHKsendSMS/ заказчиваются файлики callback.php и sms.ru.php, скаченные с SMS.RU

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.