Форум русской поддержки Joomla!® CMS
09.12.2016, 06:00:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

VirtueMart - SMS уведомления о сделаном заказе.

 (Прочитано 13606 раз)
0 Пользователей и 1 Гость смотрят эту тему.
bork
Осваиваюсь на форуме
***

Репутация: +9/-1
Offline Offline

Сообщений: 76


« : 15.09.2011, 01:48:47 »

Сегодня целый день искал решение как прислать на телефон sms сообщение о том, что в магазине сделали заказ. (VirtueMart ver. 1.1.8 )
И в итоге за 30 минут сделал свой хак.

Метод первый:
Для тех, кто не хочет особо ковыряться в коде, то можно воспользоваться сервисом pochta2sms.ru (gmail.ru - не советую, сняли денег и не заработало. в gmail сначала нужно оплатить чтобы активировать саму почту, потом оплатить чтобы добавить или сменить номер телефона и после всех оплат, понимаешь. что это не то)
Если у вас немного заказов в магазине, то подойдёт mail.ru  (создаёте новую папку в почте, настраиваете фильтр для этой папки и отправку SMS присваиваете для этой папки)

Достоинства pochta2sms:
- на счету 5руб. для тестов (одна отправка вроде 60 коп.)
- много свободных ящиков для регистрации
- хорошо продуманные фильтры для активации отправки sms
- фильтров можно задать несколько

Недостатки:
- нет пополнения счёта через WebMoney
- заголовок от VM коверкает (но можно написать свой. например "Сделан заказ" - это то. что придёт в качестве сообщения по смс)

Получили ящик  на pochta2sms, далее открываем файл
/administrator/components/com_virtuemart/classes/ps_checkout.php

Находим строку:
$vendor_email = $from_email;

Меняем на:
$vendor_email = array($from_email,'ваш_ящик@pochta2sms.ru');

Это чтобы отправить два письма, первое на тот email, что указан в Магазин\Информация о магазине и на второй для получения SMS уведомления.

Всё готово!

Метод второй:

В этом методе намного больше возможностей, можно брать переменные (данные покупателя, товара) и отправлять их в заголовке или в самом SMS.
У меня SMS дошли почти мгновенно ( в первом методе в течение пару минут)
СМС получились дешевле (копеек на 20)
В качестве отправителя можно указывать любой номер или имя (подмена номера, но за это вроде плата дополнительная)

1) Регистрируемся в сервисе по ссылке http://smsc.ru/?pp259144 (реф. ссылка. если я вам помог, оставьте ссылку, мне будет приятно)
2) В разделе api скачиваем файл для своего сервера, например для php скачиваем  http://smsc.ru/api/php/
3) В этом файле прописываете ваш логин и пароль от сервиса smsc

Например:
define("SMSC_LOGIN", "bork");
define("SMSC_PASSWORD", "1234");

4) Заливаете этот файл с вашими логином и паролем в папку /administrator/components/com_virtuemart/html
5) В этой же папке находите файл checkout.index.php

В файле находим (273 строка):
<input type="hidden" name="payment_method_id" value="'. $payment_method_id .'" />

После добавляем (номер телефона вписать свой):
        <input type="hidden" name="phone" value="79012345678"/>
        <input type="hidden" name="message" value="Поступил новый заказ"/>

В итоге в файле это выглядит так:

Код:
<input type="hidden" name="payment_method_id" value="'. $payment_method_id .'" />
<input type="hidden" name="phone" value="79012345678"/>
<input type="hidden" name="message" value="Поступил новый заказ"/>
<input type="hidden" name="checkout_last_step" value="'. $current_stage .'" />';

6) В этой же папке открываем файл checkout.thankyou.php - это страница, которую пользователь видит, когда подтвердил свой заказ

В самом начале прописываем
Код:
<?
    include_once "smsc_api.php";
    $r = send_sms($_POST["phone"], $_POST["message"]);
?>

7) Проверяем работу

Мне нужно было просто на SMS получить  уведомление, что поступил заказ, но вместо value="Поступил новый заказ", можно подсунуть переменные VM
Если вам нужны дополнительные параметры, то смотрите примеры в библиотеке smsc.ru.

Пользуйтесь на здоровье!
Если у кого-то есть предложения по доработке, пожалуйста пишите в этой ветке.

Метод третий: (добавлено 22 марта)

На блоге одного сервиса по СМС услугам нашёл ещё один метод.
Особо не разбирался, просто для коллекции выкладываю ссылку http://blogs.sms-uslugi.ru/?p=143

Их тарифы http://sms-uslugi.ru/price
« Последнее редактирование: 22.03.2012, 01:42:36 от bork » Записан
bork
Осваиваюсь на форуме
***

Репутация: +9/-1
Offline Offline

Сообщений: 76


« Ответ #1 : 15.09.2011, 02:09:49 »

Бугага, а ничего что Яндекс бесплатно писылает? про mаil.ru вообще само-собой...  Grin
Наверное, я не зря весь день на это убил

mail.ru


из бесплатного нет ничего нормального, все яндексы я ещё утром перепробовал
Если магазин маленький и один заказ в день, то понятно, человек не будет задаваться таким вопросом.

Просьба в теме не сорить.
Писать по делу.


« Последнее редактирование: 15.09.2011, 02:14:09 от bork » Записан
afon9l
Осваиваюсь на форуме
***

Репутация: +1/-21
Offline Offline

Сообщений: 112



« Ответ #2 : 07.10.2011, 11:04:09 »

на pochta2sms есть функция перенаправлять письмо на другой ящик, но у меня текст карявый приходит в SMS. И за 1 смску сняли сразу 5 рублей тестовых.
Записан
Dimir
Завсегдатай
*****

Репутация: +13/-1
Offline Offline

Пол: Мужской
Сообщений: 409



« Ответ #3 : 06.11.2011, 20:41:44 »

А через сборщика почты нельзя?Допустим mail.ru или yandex у них же есть сервис SMS и сборщика писем?или я не так понел
Записан
nroman
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #4 : 19.01.2012, 19:50:01 »

Воспользовался вторым методом-все супер, спасибо
Только вот не могу разобраться как установить переменные VM (содержание заказа), можете помочь?
Заранее тысяча благодарностей!
« Последнее редактирование: 20.01.2012, 20:29:41 от nroman » Записан
Sergun42
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 37


« Ответ #5 : 10.03.2012, 14:21:38 »

Все получилось по второму способу,только SMS приходит с квакозяброй, пробывал utf-8 без bom не получилось, в чем может быть проблема?
Записан
bork
Осваиваюсь на форуме
***

Репутация: +9/-1
Offline Offline

Сообщений: 76


« Ответ #6 : 11.03.2012, 03:01:52 »

А через сборщика почты нельзя?Допустим mail.ru или yandex у них же есть сервис SMS и сборщика писем?или я не так понел

Там лимит на сообщения и задержки по SMS. Если продаж не много, то  mail.ru нормально будет.

Воспользовался вторым методом-все супер, спасибо
Только вот не могу разобраться как установить переменные VM (содержание заказа), можете помочь?
Заранее тысяча благодарностей!
Там всё очень просто, пользователь ведь сначала заполняет, что ему нужно, а потом попадает на страницу. где видит что он собирается заказывать.
Особо не помню, но смысл в том, что имена переменных можно увидеть либо из первого файла checkout.index.php, либо посмотреть имена на следующей странице, где
пользователь видит свой заказ.
Но, хочу сказать, что меня тоже сначала просили сделать, чтобы в SMS были доп. данные, но реально данных много, а SMS с кириллицей ограничена 140 символами.
По-любому придётся содится за компьютер и смотреть весь заказ, поэтому я ограничелся сообщением о том, что пришёл заказ.


Все получилось по второму способу,только SMS приходит с квакозяброй, пробывал utf-8 без bom не получилось, в чем может быть проблема?

Сообщение передаётся с файла, где размещён конечный скрипт с передачей SMS, а это в примере должен быть smsc_api.php
Просто добавь туда
<meta content="text/html; charset=windows-1251" http-equiv="Content-Type" />
или
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

если не поможет, то добавь в эту же папку файл .htaccess
и там укажи кодировку.
« Последнее редактирование: 11.03.2012, 03:04:56 от bork » Записан
Sergun42
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 37


« Ответ #7 : 11.03.2012, 06:30:33 »

bork, спасибо за подсказку.
В php я не силен, как правильно объявить переменные VM в checkout.index.php в <input type="hidden" name="message" value="пришел заказ"/> вместо "пришел заказ" мне необходимо вывести название товара, кр. характеристика и цена? в 140 символов укладываюсь с запасом.

Нашел в ps_checkout.php переменную названия товара $product_name = ps_product::get_field($cart[$i]["product_id"], 'product_name');
Если не затруднит, можете правильно ее прописать в виде примера?

Просто подстановка в виде <input type="hidden" name="message" value='$product_name'/> не работает..
Еще раз повторюсь в php я не силен..(
Записан
bork
Осваиваюсь на форуме
***

Репутация: +9/-1
Offline Offline

Сообщений: 76


« Ответ #8 : 11.03.2012, 23:38:45 »

Sergun42, ну да, всё правильно делаешь, просто будь повнимательнее, смотри примеры в самом файле.

Нужно так:
<input type="hidden" name="message" value="'. $product_name .'" />;

Что бы до отправки SMS посмотреть, что передаёт переменная, отключаем отправку на SMS и выводим переменную

Вместо:
<?
    include_once "smsc_api.php";
    $r = send_sms($_POST["phone"], $_POST["message"]);
?>


Пишем:
<hr>
Выводим значение:
<? echo $_POST["message"]; ?>
<hr>

ps: я php сам никогда не изучал, пишу чисто интуитивно и по примерам. ))
« Последнее редактирование: 11.03.2012, 23:48:34 от bork » Записан
Sergun42
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 37


« Ответ #9 : 17.03.2012, 11:30:39 »

bork, все вроде бы логично, все сделал как вы написали, но при выводе "Выводим значение: (пусто)   ", если настроить на SMS, то SMS в таком случае не приходит...может еще какие то ньансы тут есть, ведь у вас получалось?
уже голову сломал(
Записан
softman_xp
Давно я тут
****

Репутация: +31/-0
Offline Offline

Пол: Мужской
Сообщений: 320


Разработка для Joomla


« Ответ #10 : 17.03.2012, 11:45:20 »

Странное решение... Было актуально 4-6 лет назад, а сейчас практически в любом современном телефоне за 2-3 тысячи есть встроенный почтовый клиент Azn
Записан
Sergun42
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 37


« Ответ #11 : 17.03.2012, 12:13:34 »

softman_xp смской быстрее и удобнее, а также клиент хочет именно так..
Записан
rewuxiin
Завсегдатай
*****

Репутация: +38/-6
Offline Offline

Сообщений: 574


« Ответ #12 : 17.03.2012, 12:15:38 »

softman_xp любой клиент требует настроек. также обучения владельца телефона. ну и естественно оплаты за траффик.
Записан
rewuxiin
Завсегдатай
*****

Репутация: +38/-6
Offline Offline

Сообщений: 574


« Ответ #13 : 19.03.2012, 22:20:48 »

пытался освоить второй метод - так и не получил SMS.


решено. забыл убрать <> в логине и  пароле

а вот 
Цитировать
параметр $phone заменил на $phones
  необходимо
« Последнее редактирование: 20.03.2012, 12:51:26 от rewuxiin » Записан
rewuxiin
Завсегдатай
*****

Репутация: +38/-6
Offline Offline

Сообщений: 574


« Ответ #14 : 20.03.2012, 00:09:27 »

bork, все вроде бы логично, все сделал как вы написали, но при выводе "Выводим значение: (пусто)   ", если настроить на SMS, то SMS в таком случае не приходит...может еще какие то ньансы тут есть, ведь у вас получалось?
уже голову сломал(
переменная не передается на страницу поэтому не может быть выдана.
нужно вывести на финальную страницу заказ - тогда цеплять переменные.

самому необходимо както заняться..
Записан
rewuxiin
Завсегдатай
*****

Репутация: +38/-6
Offline Offline

Сообщений: 574


« Ответ #15 : 21.03.2012, 22:28:46 »

Решение для отправки с информацией о заказе.

немного подсмотрено и допилено мной.

предыдущие настройки удаляем и идем в /administrator/components/com_virtuemart/classes/ файл ps_checkout.php

ищем
Код:
$sub_total = 0.00;

добавляем после
Код:
       
        $sms_message = $dbbt->f("phone_1");

ниже ищем
Код:
$shopper_message .= $CURRENCY_DISPLAY->getFullValue($dboi->f("product_item_price"), '', $db->f('order_currency'));
}

добавляем после
Код:
$sms_message .= "; || Name: ";
$sms_message .= $dboi->f("product_name");
$sms_message .= "; || Sku: ";
$sms_message .= $dboi->f("order_item_sku");
$sms_message .= "; || Kolichestvo: ";
$sms_message .= $dboi->f("product_quantity");
$sms_message .= "; || Cena za 1sht: ";
$sms_message .= $CURRENCY_DISPLAY->getFullValue($dboi->f("product_final_price"));
         

ищем
Код:
$shopper_html = $template->fetch('order_emails/confirmation_email.tpl.php');

добавляем после
Код:
                $sms_message .= "; || Cena vsego: ";
$sms_message .= $CURRENCY_DISPLAY->getFullValue($order_total);

            $message = $sms_message;
            $phones = "79261234567";

            include_once "smsc_api.php";
            $r = send_sms($phones, $message);

если что нибудь не получается попробуйте для начала вывести на странице собранную информацию при помощи
Код:
echo $sms_message;
текст с сообщением должно показать на странице "Спасибо за Ваш заказ."

файлик smsc_api.php не забываем бросать  в /administrator/components/com_virtuemart/classes/

вот и всё.


чуть не забыл. решение делал для магазина без регистрации пользователей - не тестировал в остальных вариантах.
« Последнее редактирование: 21.03.2012, 23:12:06 от rewuxiin » Записан
bork
Осваиваюсь на форуме
***

Репутация: +9/-1
Offline Offline

Сообщений: 76


« Ответ #16 : 22.03.2012, 01:41:23 »

Добавил в первый пост Третий Метод от компании "СМС услуги"
Тарифы у них повыше, чем у приведённого мной сайта, но может кому-то пригодится.
На сайте много комментариев, так что с установкой не должно быть проблем
Записан
Sergun42
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 37


« Ответ #17 : 22.03.2012, 07:55:59 »

rewuxiin, для опробывания локально echo $sms_message; надо вывести в checkout.thankyou.php или в ps_checkout.php после 
$message = $sms_message;
$phones = "79261234567";
Записан
rewuxiin
Завсегдатай
*****

Репутация: +38/-6
Offline Offline

Сообщений: 574


« Ответ #18 : 22.03.2012, 09:44:00 »

Sergun42 в ps_checkout.php - перед $message = $sms_message;
$phones = "79261234567";
Записан
rewuxiin
Завсегдатай
*****

Репутация: +38/-6
Offline Offline

Сообщений: 574


« Ответ #19 : 22.03.2012, 09:49:11 »

bork я бы не сказал что там тарифы повыше.
у них система с оплатой интересная. кладешь 500р на счет и получаешь 50коп за SMS.
вчера там регистрировался для проверки их кода.

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

также поддержка была офлайн постоянно - ничего не спросить.
« Последнее редактирование: 22.03.2012, 11:50:32 от rewuxiin » Записан
Sergun42
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 37


« Ответ #20 : 22.03.2012, 16:40:12 »

rewuxiin, все работает. Большое спасибо!
Записан
bork
Осваиваюсь на форуме
***

Репутация: +9/-1
Offline Offline

Сообщений: 76


« Ответ #21 : 23.03.2012, 04:33:39 »

bork я бы не сказал что там тарифы повыше.
у них система с оплатой интересная. кладешь 500р на счет и получаешь 50коп за SMS.

Да, тарифы нормальные.
Я сначала быстро глянул, подумал, что цена зависит от оборота SMS, а это оказывается сколько кинешь, такая и цена за SMS.
Нормально придумали.
Записан
Гринвич
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 207


« Ответ #22 : 27.05.2012, 02:43:49 »

Ребята подскажите пожалуйста решение двух вопросов.
1) SMS-ки приходят в количестве 2 штук на один заказ, на сайте?
2) Приходят SMS-ки крякозябрами.
Я так и не понял куда именно (в каком месте) нужно прописать кодировку?
Записан
Riddon
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #23 : 05.06.2012, 23:02:46 »

Ребята проблема с кодировкой. Все уже перепробывал как вы писали, ничего не помогает, все приходит нормально модель и цена, а вот вместо валюты пишет ероглифы. Помогите решить проблему.
Записан
rewuxiin
Завсегдатай
*****

Репутация: +38/-6
Offline Offline

Сообщений: 574


« Ответ #24 : 05.06.2012, 23:46:56 »

смотри настройки smsc_api.php или конфиг какого ты там провайдера выбрал
Код:
define("SMSC_CHARSET", "utf-8"); // кодировка сообщения: utf-8, koi8-r или windows-1251 (по умолчанию)
там всё подробно закомментировано.
Записан
Riddon
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #25 : 06.06.2012, 00:47:30 »

Спасибо! Помогло  Wink
Записан
Riddon
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #26 : 09.06.2012, 22:51:19 »

А не подскажите? Возможно ли сюда добавить номер телефона клиента(чтоб приходило вместе с заказом товара)? Номер клиент указывает при регистрации, и после регистрации возможно только совершить заказ  !
« Последнее редактирование: 10.06.2012, 19:50:24 от Riddon » Записан
rewuxiin
Завсегдатай
*****

Репутация: +38/-6
Offline Offline

Сообщений: 574


« Ответ #27 : 14.06.2012, 17:20:55 »

ну так вместо вашего номера вставьте переменную которая цепляет номер телефона.
Записан
bork
Осваиваюсь на форуме
***

Репутация: +9/-1
Offline Offline

Сообщений: 76


« Ответ #28 : 17.06.2012, 10:18:06 »

А не подскажите? Возможно ли сюда добавить номер телефона клиента(чтоб приходило вместе с заказом товара)? Номер клиент указывает при регистрации, и после регистрации возможно только совершить заказ  !

Уже ответили -  найти и вставить переменную с телефоном пользователя.
Так же в документации скрипта отправки SMS почитать об отправке сообщения на несколько номеров.
Уверен, что можно. т.е. одну на свой, вторую пользователю, хотя считаю, что отправка сообщения на почту более логичнее.
Записан
xlite
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 66


« Ответ #29 : 17.08.2012, 18:50:44 »

никто не сталкивался сделать проверку префикса номера.. а то в Украине все пишут ноль впереди , чтобы проверка была и рассылать на два номера, краткую SMS админу и более полную покупателю но чтобы проверка номера была ..
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet