0 Пользователей и 1 Гость просматривают эту тему.
  • 38 Ответов
  • 19421 Просмотров
*

bork

  • Захожу иногда
  • 76
  • 9 / 1
Сегодня целый день искал решение как прислать на телефон 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

  • Захожу иногда
  • 76
  • 9 / 1
Бугага, а ничего что Яндекс бесплатно писылает? про mаil.ru вообще само-собой...  ;D
Наверное, я не зря весь день на это убил

mail.ru


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

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


« Последнее редактирование: 15.09.2011, 02:14:09 от bork »
*

afon9l

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

Dimir

  • Захожу иногда
  • 426
  • 13 / 1
А через сборщика почты нельзя?Допустим mail.ru или yandex у них же есть сервис SMS и сборщика писем?или я не так понел
-==Dimir==-
*

nroman

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

Sergun42

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

bork

  • Захожу иногда
  • 76
  • 9 / 1
А через сборщика почты нельзя?Допустим 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

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
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

  • Захожу иногда
  • 76
  • 9 / 1
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

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
bork, все вроде бы логично, все сделал как вы написали, но при выводе "Выводим значение: (пусто)   ", если настроить на SMS, то SMS в таком случае не приходит...может еще какие то ньансы тут есть, ведь у вас получалось?
уже голову сломал(
*

softman_xp

  • Захожу иногда
  • 318
  • 32 / 0
  • Разработка для Joomla
Странное решение... Было актуально 4-6 лет назад, а сейчас практически в любом современном телефоне за 2-3 тысячи есть встроенный почтовый клиент :)
Компоненты/модули/плагины для Joomla
(skype: navipoint)(mail: softman(собака)inbox(точка)ru)
*

Sergun42

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
softman_xp смской быстрее и удобнее, а также клиент хочет именно так..
*

rewuxiin

  • Давно я тут
  • 544
  • 38 / 6
softman_xp любой клиент требует настроек. также обучения владельца телефона. ну и естественно оплаты за траффик.
*

rewuxiin

  • Давно я тут
  • 544
  • 38 / 6
пытался освоить второй метод - так и не получил SMS.


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

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

rewuxiin

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

самому необходимо както заняться..
*

rewuxiin

  • Давно я тут
  • 544
  • 38 / 6
Решение для отправки с информацией о заказе.

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

предыдущие настройки удаляем и идем в /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

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

Sergun42

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
rewuxiin, для опробывания локально echo $sms_message; надо вывести в checkout.thankyou.php или в ps_checkout.php после 
$message = $sms_message;
$phones = "79261234567";
*

rewuxiin

  • Давно я тут
  • 544
  • 38 / 6
Sergun42 в ps_checkout.php - перед $message = $sms_message;
$phones = "79261234567";
*

rewuxiin

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

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

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

Sergun42

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

bork

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

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

Гринвич

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

Riddon

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

rewuxiin

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

Riddon

  • Новичок
  • 5
  • 0 / 0
Спасибо! Помогло  ;)
*

Riddon

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

rewuxiin

  • Давно я тут
  • 544
  • 38 / 6
ну так вместо вашего номера вставьте переменную которая цепляет номер телефона.
*

bork

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

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

xlite

  • Захожу иногда
  • 66
  • 5 / 0
никто не сталкивался сделать проверку префикса номера.. а то в Украине все пишут ноль впереди , чтобы проверка была и рассылать на два номера, краткую SMS админу и более полную покупателю но чтобы проверка номера была ..
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отчеты и статистика для VirtueMart

Автор 4kict

Ответов: 25
Просмотров: 9090
Последний ответ 14.01.2021, 00:09:53
от gartes
IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 48388
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 21606
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
Хаки для убыстрения VirtueMart (уменьшение запросов и т.п.)

Автор yadrinez

Ответов: 197
Просмотров: 74126
Последний ответ 05.02.2016, 21:53:34
от flyingspook
VirtueMart 1.1.8 - Наличие: Есть (по умолчанию) + Наличие: ZZZ (бр

Автор Nessy74

Ответов: 6
Просмотров: 1909
Последний ответ 22.01.2016, 13:24:17
от AzMandius