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