Добрый день!
На старом форуме была уже такая тема.
Возможно ли прикрутить смс оповещение изменений заказа?
ModX Revo и Shopkeeper 3.
СМС оповещение клиентов
@alexinc А мануала нет почитать?
Нашел SHKsendSMS 0.2.0, но там ни мануала ни рабочего сервиса на который он ссылается.
Буду весьма признателен за помощь.
Мануал к чему? SHKsendSMS? у меня нет его. А плагин epochta (AtomPark) - могу здесь разместить, с инструкцией. Сам SHKsendSMS должен работать с http://sendmsg.ru/ - если они не сменили API.
Делаем в админской панели плагин - epochta
далее вставляем туда код:
<?php
$sms_url = $scriptProperties['sms_url'];
$sms_login = $scriptProperties['sms_login']; //Логин
$sms_secret = $scriptProperties['sms_secret'];
$phone=$scriptProperties['sms_phone'];
$phone1=$scriptProperties['sms_phone1'];
$phone2=$scriptProperties['sms_phone2'];
$type=$scriptProperties['type_sms'];
$site_name = $modx->getOption('site_name');
$site_url = $modx->getOption('site_url');
$tpl=$scriptProperties['sms_tpl'];
if ($modx->event->name == 'OnSHKsendOrderMail') {
$order_id = isset($order_id) ? $order_id : '';
if (isset($phone1)) {
$src_phone1='<number messageID="msg">'.$phone1.'</number>';
}
if (isset($phone2)) {
$src_phone2='<number messageID="msg">'.$phone2.'</number>';
}
require_once MODX_CORE_PATH."components/shopkeeper/model/shopkeeper.class.php";
require_once MODX_CORE_PATH."components/shopkeeper/model/shk_mgr.class.php";
$SHKmanager = new SHKmanager($modx);
$SHKmanager->getModConfig(); //Конфигурация Shopkeeper
$order = $modx->getObject('SHKorder', $order_id); //Параметры заказа
$phone_num_client=$order->get('phone');
$contacts_client=$order->get('contacts');
$order_data = array();
$src = '<?xml version="1.0" encoding="UTF-8"?>
<SMS>
<operations>
<operation>SEND</operation>
</operations>
<authentification>
<username>'.$sms_login.'</username>
<password>'.$sms_secret.'</password>
</authentification>
<message>
<sender>DolceCrema</sender>
<text>Поступил новый заказ №'.$order_id.' от '.date("d.m.Y H:i:s").' , проверьте почту.</text>
<type>'.$type.'</type>
</message>
<numbers>
<number messageID="msg11">'.$phone.'</number>
'.$src_phone1.$src_phone2.'
</numbers>
</SMS>';
$Curl = curl_init();
$CurlOptions = array(
CURLOPT_URL=>$sms_url,
CURLOPT_FOLLOWLOCATION=>false,
CURLOPT_POST=>true,
CURLOPT_HEADER=>false,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_CONNECTTIMEOUT=>15,
CURLOPT_TIMEOUT=>100,
CURLOPT_POSTFIELDS=>array('XML'=>$src),
);
curl_setopt_array($Curl, $CurlOptions);
if(false === ($Result = curl_exec($Curl))) {
throw new Exception('Http request failed');
}
curl_close($Curl);
}
Имеет настройки:
['sms_url'] - путь до API epochta
['sms_login'] - Логин
['sms_secret'] - Пароль (не шифрованный - храниться в прямом виде)
['sms_phone'] - Телефон 1 для рассылки
['sms_phone1'] - Телефон 2 для рассылки
['sms_phone2'] - Телефон 3 для рассылки
['type_sms'] - Тип смс прямая (2). кривая (вроде 3)
('site_name') - От кого приходит смс - Название. Требуем регистрации в сервисе
['site_url'] - ставит ссылку сайта (мы отказались - знаки экономили)
['sms_tpl'] - шаблон смс. Не работает. Заделка на будущее.
Плагин повешен на событие отправки почты на заказ. Можно повесить на изменение статуса заказа.
Если тяжко разбираться - могу подредактировать, что бы отправляло на телефон заказчика, ибо мы под себя делали и отправляли только менеджерам.
Плагин писался под версию SHK2. под SHK3, с изменениями, будет через недельку другую.
Спасибо.
Пример плагина для Shopkeeper3:
<?php
/*
Событие: OnSHKChangeStatus
*/
$order_ids = $modx->getOption('order_ids', $scriptProperties, '' ); // Массив ID заказов
$orderStatus = $modx->getOption('status', $scriptProperties, '1' ); // Статус
require_once $modx->getOption('core_path') . "components/shopkeeper3/model/shopkeeper.class.php";
$shopCart = new Shopkeeper( $modx );
$config = $shopCart->getConfig( array( 'statuses' ) ); // Настройки статусов
//Название статуса
$statusName = '';
foreach( $config['statuses'] as $st ){
if( $st['id'] == $orderStatus ){
$statusName = $st['label'];
break;
}
}
foreach( $order_ids as $order_id ){
$order = $modx->getObject('shk_order', $order_id);
if( $order ){
//Разбор контактных данных заказа
$contacts = $order->contacts;
$contacts = json_decode( $contacts, true );
if( !is_array( $contacts ) ){
$contacts = array();
}
foreach( $contacts as $contact ){
$contacts[$contact['name']] = $contact['value'];
}
// ТУТ ВАШ КОД (заменить)
var_dump(
$order->id, // ID заказа
$orderStatus, // ID статуса
$statusName, // Название статуса
$contacts // Массив контактных данных. Пример: $contacts['email']
);
}
}
Однажды подключал ByteHand. В техподдержке бесплатно помогли с настройкой и адаптацией под Shopkeeper3 (на тот момент обновленной версии у них не было).
https://www.bytehand.com/cms#modx3
Я пользовался для своих проектов http://www.smsfeedback.ru/smsapi/php.php
У них есть скрипт на PHP, пришлось немного допилить, но удобно что отправка по всему миру.