понедельник, 16 ноября 2015 г.

SMSnot модуль OpenCart 2 для отправки SMS

Появилась необходимость в получении СМС-уведомлении о совершении покупки для одного магазина на OpenCart  2.1.0.1. Сначала хотел сделать простой curl запрос в шаблоне checkout/checkout, но решил выпендриться и написать полноценный модуль.



В качестве SMS-шлюза используется sms.ru о котором я уже писал в статье про уведомления для Nagios'a, сервис продолжает радовать, единственное, количество бесплатных SMS на свой номер сократилось с бесконечности до 5 в сутки.

Модуль полностью бесплатен и распространяется под лицензией GNU GPLv2.
На данный момент модуль умеет оповещать как администратора магазина о поступлении нового заказа, так и покупателя о создании заказа и об изменении статуса заказа.
Поддерживаются шаблоны сообщений для каждого типа уведомлений (админу, покупателю о заказе и покупателю о изменении статуса заказа).

Типы уведомлений отключаемы. То есть можно отключить ненужные типы уведомлений.
Есть возможность массовой рассылки SMS покупателям:

  • всем, 
  • всем подписанным на новости, 
  • всем из выбранной группы,
  • всем из выбранной группы которые подписаны на новости
Есть не хитрый счётчик символов и SMS и отображение баланса.
Модуль в данный момент не поддерживает работу с несколькими магазинами и многоязычность. Надеюсь добавить этот функционал в следующей версии если кому то это будет нужно (мне и так нормально). Ещё хочется добавить возможность добавления нескольких телефонов администратора.
Скачать последнюю версию (1.3) можно по ссылке
Проект на  github.com
Если у кого то есть какие нибудь пожелания, вопросы или предложеня, пишите в коментариях.

52 комментария :

  1. Вместо номера заказа смс приходит "Array". Тег {OrderID}

    ОтветитьУдалить
    Ответы
    1. Всё посмотрел, повторить такое не смог. Кому приходит Array, Покупателю о новом заказе, покупателю о смене статуса или администратору о новом заказе?
      Всё же выявил несколько ошибок, рекомендую обновиться. Для обновления нужно скачат с гитхаба и заменить файл: /catalog/controller/module/smsnot.php

      Удалить
    2. нихрена не работает. У меня модуль simple мб и поэтому, но тем ни менее. Такая же шляпа с array и сумму заказа не выводит. столько времени потерял

      Удалить
    3. Какая версия opencart у вас? На 2.3 возможны проблемы, не тестировал. У меня на двух магазинах работает нормально. Если у вас тестовый магазин и вы готовы предоставить мне доступ к нему, я могу посмотреть что там.

      Удалить
    4. Этот комментарий был удален автором.

      Удалить
    5. Версия 2.1.0.2 opencart.pro. Напишите на почту, так удобнее support@ok-smart.ru

      Удалить
    6. Спасибо! Все заработало. Модуль шикарный!

      Удалить
  2. Приходят всем. Не раскрываются теги {OrderID} и {Total}. Имя магазина раскрывается

    ОтветитьУдалить
  3. Добрый день, отличный модуль. Даже вступил в вашу реферальную программу, но не работает отправка сообщения пользователю при формировании заказа. А при отправке администратору не вставляет номер заказа 79535670520: New order # Array at the store .... и сумму Заранее спасибо за ответ

    ОтветитьУдалить
    Ответы
    1. У Вас случайно магазинов не больше чем один?

      Удалить
    2. Один, изменение статус работает нормально

      Удалить
  4. Есть мысль добавить журнал, что бы можно было понять, что там происходит.

    ОтветитьУдалить
  5. Анонимный19 мая 2016 г., 20:33

    Тестовое смс отправляется, а при заказе администратору ничего не приходит. Магазин на OcStore 2.1.0.2

    ОтветитьУдалить
    Ответы
    1. Была проблема связанная с изменением обработки событий. Скачайте новую версию.

      Удалить
  6. а возможно версию модуля сделать под смс шлюз вот этого сервиса www.infosmska.ru/

    ОтветитьУдалить
  7. Можно вас попросить, я готов отблагодарить моя почта для связи keywwww@gmail.com мой скайп key-912

    ОтветитьУдалить
  8. Олег у меня проблема на OcStore 2.1.0.2 пишет ошибку в синтаксисе в 19 строке } в файле smsnot.php после обновления прошлая версия не отправляла смс при оформлении заказаи дописывала номер админа при изменении статуса в смс

    ОтветитьУдалить
  9. Здравствуйте! У меня та же проблема с 19-ой строкой, подскажите, как исправить эту ошибку! Движок OcStore 2.1.0.2
    Заранее спасибо!

    ОтветитьУдалить
  10. там ошибка на ошибке где то кавычка пропущена где апостров автор может вы исправите то что на гитхабе оно не работает!

    ОтветитьУдалить
  11. Да, к стати скачал этот модуль именно с Гитхаба и ошибка в 19-й строке именно синтаксическая! Гдето надо поставить кавычку или может быть ещё какой то символ?!

    ОтветитьУдалить
  12. Ошибка исправлена, https://yadi.sk/d/i77zvO7mxKGXq. Сейчас ещё выложу версию с журналом.

    ОтветитьУдалить
  13. Спасибо Олег! Сейчас буду тестировать, по результатам отпишусь!

    ОтветитьУдалить
  14. Олег! Спасибо вам огромное, всё работает, приходят СМС администратору и клиенту!

    ОтветитьУдалить
  15. Олег, здравствуйте! Установил модуль на ocStore 2.1.0.2.1 smsnot1.1-oc2.1.zip. Зарегистрировался на sms.ru, настроил модуль, все удобно и понятно, спасибо. Только вот при отправке тестового смс в журнале модуля 2016-11-01 16:24:05 Сообщение отправлено 000-00000 (номер телефона) В очереди и журнале ошибок логи 2016-11-01 16:14:54 - PHP Notice: Undefined offset: 2 in /public_html/admin/controller/module/smsnot.php on line 459
    2016-11-01 16:14:54 - PHP Notice: Undefined offset: 1 in /public_html/admin/controller/module/smsnot.php on line 462.
    Не подскажите с чем это связано?

    ОтветитьУдалить
    Ответы
    1. Установите версию 1.2 http://www.svm-zone.ru/2016/10/smsnot-12-sms-opencart-2.html
      А при отправке тестового сообщения, его номер 000-00000

      Удалить
  16. Да именно 1.2 и установил самую свежую, название модуля просто копировал со страницы http://www.svm-zone.ru/2016/10/smsnot-12-sms-opencart-2.html#more, но по ссылке там версия 1.2

    ОтветитьУдалить
  17. При оформлении заказа смс на телефон админа тоже не приходит

    ОтветитьУдалить
  18. Нашёл ошибку, всё исправил в новой версии 1.2.1 https://yadi.sk/d/ki1m2M0lxwuQ8
    Нужно будет закинуть файлы с заменой и переустановить в админке

    ОтветитьУдалить
    Ответы
    1. Переустановил, теперь вот:
      Notice: Error: Could not load model /public_html/admin/model/sale/customer_group.php! in /public_html/system/storage/modification/system/engine/loader.php on line 63

      Удалить
    2. Пардон, не та ссылка https://yadi.sk/d/6snhzkjgxxjLB

      Удалить
    3. Ура-ура-ура! Работает на УРА)
      Один вопросик: при оформлении заказа стандартными средствами Opencart, т.е. без стороннего модуля оформления заказа (правда с установленным модулем оплаты Y.CMS от Яндекс.Кассы, sms приходит сразу после выбора способа оплаты, т.е. на Шаг5.Способ оплаты, а остается еще Шаг6.Подтверждение заказа. С другой стороны может это и правильно, зачем нужно подтверждение, если клиент переходит на страницу оплаты Яндекса.

      Удалить
    4. В opencart до версии 2.1.0.2.х включительно событие создания заказа происходит на предпоследнем шаге (до нажатия "подтвердить"), это и мне кажется странным. В первой версии модуля я обходил это использовав событие добавления статуса заказа, в следующих версиях я от этого отказался из-за попытки сделать модуль сразу на две версии opencart. В принципе сейчас можно опять сделать уведомления после "Подтвердить"

      Удалить
    5. А как модуль будет вести себя вместе с Simple?
      У большинства стоит этот модуль простого оформления заказа, я тоже поставил, протестирую - отпишусь. Поэтому, не знаю стоит ли заморачиваться с уведомлением на стандартном оформлении заказа от Opencart, а вот под Simple адаптация должна быть 100%. Учитывая популярность этого модуля, сейчас многие авторы дополнений даже в описании своих продуктов пишут о работе модуля вместе с Simple.

      Удалить
    6. С Simple работает, но с уведомлением вообще беда, sms приходит сразу после перехода на страницу "Оформление заказа", еще даже до того, как заказ сформирован, т.е. фактически даже события по новому заказу еще нет и если закрыть страницу Офор.зак. и снова перейти в корзину, то sms снова приходит и N заказа тот же, при этом если заказ не был подтвержден, то он даже не сохраняется в истории заказов, как это происходит при использовании стандартного оформления заказа. Короче, по-любому надо делать уведомление только после нажатия "Подтвердить"!!! Буду очень ждать! А так всё гут!!! 5 баллов!!!

      Удалить
    7. А может лучше даже после оплаты и автовозврата на страницу http://ваш сайт/index.php?route=checkout/success на которой мы видим надпись "Заказ успешно сформирован!"Это если предусмотрена оплата сразу. Ведь клиент может даже подтвердить заказ, а при переходе на страницу оплаты передумать. Кстати, если предусмотрена оплата при получении и выбирается этот способ оплаты, то после нажатии на кнопку подтвердить идет переход опять же на эту страницу http://ваш сайт/index.php?route=checkout/success. То есть именно событие перехода на эту страницу, а не нажатие кнопки "Подтвердить заказ" должно приводить к отправке sms, иначе в случае выбора предоплаты мы будем получать sms раньше времени.

      Удалить
  19. Подскажите,а на какой номер (администратору магазина)будут приходить смс? На номер указанный при регистрации на sms.ru?

    ОтветитьУдалить
    Ответы
    1. Да, на номер который вы зарегистрирует и пропишите в настройках шлюзах модуля Smsnot for SMS.RU

      Удалить
    2. СМС будет приходить на номер, который вы укажете в настройках модуля.
      P.S. Если вы укажете номер который указывали на сайте sms.ru, то первые 5 сообщений в сутки будут бесплатными.

      Удалить
  20. Олег, а что на счет моего вопроса о формировании модулем запроса на отправку sms до полного завершения формирования заказа? Возможно сделать так как я написал выше и считаете ли вы это правильным?

    ОтветитьУдалить
    Ответы
    1. На самом деле заказ создаётся (и событие создание заказа происходит) на предпоследнем шаге формирования заказа (в opencart до версии 2.1.0.2), а после подтверждения ему просто присваивается соответствующий статус. А в остальном я полностью согласен. Единственное, что на checkout/success это не повесить, потому что во первых, для этого надо править файл движка, что не есть хорошо, а во вторых checkout/success вызывается не только после успешного создания заказа. Решение этой проблемы я уже придумал (в версии модуля 1.0), но для совместимости модуля в новой версии опенкарта от него отказался, но недавно я разделил модули для разных версий ОС и можно применить его опять. Суть его заключается в использовании события добавления статуса заказу (при добавлении первого статуса мы понимаем, что заказ новый) и с системами оплаты это будет работать. В ближайшее время постараюсь реализовать.

      Удалить
    2. Ок. Будем ждать. Спасибо за ваш труд.

      Удалить
  21. Здравствуйте, Олег.
    Хороший модуль, а можно его адаптировать для версии Opencart 2.3.0.2? Готов оплатить работы.

    ОтветитьУдалить
    Ответы
    1. Если ещё актуально, модуль умеет работать с ОС 2.3 начиная с версии 1.2.1. Сейчас актуальна версия 1.3 http://www.svm-zone.ru/2016/12/smsnot-13.html

      Удалить
  22. Олег, здравстауйте! Очень жду от вас реализации отправки СМС по событию добавления статуса заказа для 2.1.0.2. Ни в коем случае вас не тороплю, но очень приочень жду)

    ОтветитьУдалить
  23. Олег добрый день. Такая проблема . Смс уведомления на некоторых модулях оплаты не отправляются . В чем может быть проблема ? Свяжитесь со мной пожалуйста по почте x013oo@mail.ru

    ОтветитьУдалить
  24. Олег, Здравствуйте! Обновления в ближайшем обозримом не планируется?

    ОтветитьУдалить
    Ответы
    1. Да. Версия 1.3 http://www.svm-zone.ru/2016/12/smsnot-13.html Релизовал там отправку сообщений для версии ОС 2.1 тоьлко после подтверждения заказа. Если что то не будет работать, пишите, тестировалось всё плохо.

      Удалить
    2. Супер! Потестю - отпишусь...

      Удалить