[Скрипт] СМС для клиента после совершения заказ.

Тема в разделе "PrestaShop", создана пользователем mracula, 10 окт 2016.

  1. mracula

    mracula

    Регистрация:
    5 фев 2015
    Сообщения:
    23
    Симпатии:
    0
    Помогите решить проблему. Сам я в PHP понимаю мало.
    Есть модуль sms_sending_prestashop
    Модуль рабочий, смс отправляет. Только этот модуль берет информацию о номере заказа из таблицы "cart", эта таблица включает в себя так же и брошенные корзины (т.е заказ оформлен не был, смс не отправлялась а id увеличился на 1).
    И получается так что номер реального заказа и просто корзины (например брошенной) разный. id корзины постоянно будет увеличиваться в зависимости от брошенных корзин.

    Это не правильно, логичнее что бы модуль брал id заказа из таблицы "orders" там содержатся уже совершенные, законченные заказы. Как реализовать данный функционал в модуле?

    Вот код модуля:
    <?php

    if (!defined('_CAN_LOAD_FILES_')) {
    exit;
    }

    class sms_sending_prestashop extends Module
    {
    private $_html = '';

    public function __construct()
    {
    $this->name = 'sms_sending_prestashop';
    $this->tab = 'others';
    $this->version = '1.0';
    $this->author = 'SMS-sending.ru';
    $this->need_instance = 0;


    parent::__construct();

    $this->displayName = $this->l('SMS-sending.ru');
    $this->description = $this->l('SMS оповещение с помощью SMS-sending.ru');

    $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');

    }


    public function install()
    {
    if (!parent::install()
    || !$this->registerHook('actionValidateOrder')
    || !Configuration::updateValue('sms_sending_login', '')
    || !Configuration::updateValue('sms_sending_password', '')
    || !Configuration::updateValue('sms_sending_phone', '')
    || !Configuration::updateValue('sms_sending_zag', '')
    || !Configuration::updateValue('sms_sending_ToAdmin', 0)
    || !Configuration::updateValue('sms_sending_ToUser', 0)
    || !Configuration::updateValue('sms_sending_AdminTpl', "Поступил новый заказ №{NUM}, на сумму - {SUM}, от {FIRSTNAME} {LASTNAME}. Город - {CITY}")
    || !Configuration::updateValue('sms_sending_UserTpl', "Уважаемый, {FIRSTNAME}. Ваш заказ №{NUM} принят. Сумма заказа - {SUM}."))
    {
    return false;
    }
    return true;
    }

    public function uninstall()
    {
    if (!parent::uninstall() ||
    !Configuration::deleteByName('sms_sending_login') ||
    !Configuration::deleteByName('sms_sending_password') ||
    !Configuration::deleteByName('sms_sending_phone') ||
    !Configuration::deleteByName('sms_sending_zag') ||
    !Configuration::deleteByName('sms_sending_ToUser') ||
    !Configuration::deleteByName('sms_sending_ToAdmin') ||
    !Configuration::deleteByName('sms_sending_AdminTpl') ||
    !Configuration::deleteByName('sms_sending_UserTpl')) {
    return false;
    }
    return true;
    }

    public function hookActionValidateOrder($params)
    {
    $settings = Configuration::getMultiple(array('sms_sending_login', 'sms_sending_password', 'sms_sending_phone', 'sms_sending_zag', 'PS_SHOP_NAME', 'sms_sending_ToAdmin', 'sms_sending_ToUser', 'sms_sending_AdminTpl', 'sms_sending_UserTpl'));
    if(strlen($settings['sms_sending_login']) > 0 && strlen($settings['sms_sending_password']) > 0) {
    $address = new Address(intval($params['cart']->id_address_delivery));
    $currency = new Currency(intval($params['cart']->id_currency));
    $orderCurrency = $currency->sign;
    $phone = $address->phone_mobile;
    $theCart = new Cart($params['cart']->id);
    $total = $theCart->getOrderTotal(true, Cart::BOTH);
    $total.=" ".$orderCurrency;
    if($settings['sms_sending_ToAdmin'] == 1)
    {
    $tpl = $settings['sms_sending_AdminTpl'];
    $tpl = str_replace('{FIRSTNAME}', $address->firstname, $tpl);
    $tpl = str_replace('{LASTNAME}', $address->lastname, $tpl);
    $tpl = str_replace('{CITY}', $address->city, $tpl);
    $tpl = str_replace('{NUM}', $params['cart']->id, $tpl);
    $tpl = str_replace('{SUM}', $total, $tpl);
    $tpl = str_replace('{SHOP_NAME}', $settings['PS_SHOP_NAME'], $tpl);
    file_get_contents("http://lcab.sms-sending.ru/lcabApi/sendSms.php?login=".$settings['sms_sending_login']."&password=".$settings['sms_sending_password']."&to=".$settings["sms_sending_phone"]."&source=".$settings['sms_sending_zag']."&txt=".urlencode($tpl));
    }
    if($settings['sms_sending_ToUser'] == 1)
    {
    $tpl = $settings['sms_sending_UserTpl'];
    $tpl = str_replace('{FIRSTNAME}', $address->firstname, $tpl);
    $tpl = str_replace('{LASTNAME}', $address->lastname, $tpl);
    $tpl = str_replace('{CITY}', $address->city, $tpl);
    $tpl = str_replace('{NUM}', $params['cart']->id, $tpl);
    $tpl = str_replace('{SUM}', $total, $tpl);
    $tpl = str_replace('{SHOP_NAME}', $settings['PS_SHOP_NAME'], $tpl);

    file_get_contents("http://lcab.sms-sending.ru/lcabApi/sendSms.php?login=".$settings['sms_sending_login']."&password=".$settings['sms_sending_password']."&to=".$phone."&source=".$settings['sms_sending_zag']."&txt=".urlencode($tpl));
    }
    }
    }

    public function getContent()
    {

    $output = null;

    if (Tools::isSubmit('submitLogin'))
    {
    $sms_sending_login = strval(Tools::getValue('sms_sending_login'));
    $sms_sending_password = strval(Tools::getValue('sms_sending_password'));
    $sms_sending_phone = Tools::getValue('sms_sending_phone');
    $sms_sending_zag = Tools::getValue('sms_sending_zag');
    $sms_sending_ToAdmin = Tools::getValue('sms_sending_ToAdmin') == "on"?1:0;
    $sms_sending_ToUser = Tools::getValue('sms_sending_ToUser') == "on"?1:0;
    $sms_sending_AdminTpl = Tools::getValue('sms_sending_AdminTpl');
    $sms_sending_UserTpl = Tools::getValue('sms_sending_UserTpl');
    if (!$sms_sending_login || empty($sms_sending_login))
    $output .= $this->displayError( $this->l('Неверный формат логина') );
    else if (!$sms_sending_password || empty($sms_sending_password))
    {
    $output .= $this->displayError( $this->l('Неверный формат пароля') );
    }else if (!$sms_sending_phone || empty($sms_sending_phone)) {
    $output .= $this->displayError( $this->l('Неверный формат телефона') );
    }else {
    Configuration::updateValue('sms_sending_login', $sms_sending_login);
    Configuration::updateValue('sms_sending_password', $sms_sending_password);
    Configuration::updateValue('sms_sending_ToAdmin', $sms_sending_ToAdmin);
    Configuration::updateValue('sms_sending_ToUser', $sms_sending_ToUser);
    Configuration::updateValue('sms_sending_phone', $sms_sending_phone);
    Configuration::updateValue('sms_sending_zag', $sms_sending_zag);
    Configuration::updateValue('sms_sending_AdminTpl', $sms_sending_AdminTpl);
    Configuration::updateValue('sms_sending_UserTpl', $sms_sending_UserTpl);
    $output .= $this->displayConfirmation($this->l('Настройки обновлены'));
    }
    }
    return $output.$this->_displayForm();
    }


    public function _displayForm()
    {
    $html = "";
    $html.="<h2>".$this->l('Настройки')."</h2>
    <form style='background:#ffbc16;border-radius:5px;width:800px;padding:5px;' method='post' action='".Tools::safeOutput($_SERVER["REQUEST_URI"])."'>
    <table>
    <tr>
    <td>".$this->l("Логин от sms-sending.ru")."</td>
    <td><input type='text' value='".Configuration::get("sms_sending_login")."' name='sms_sending_login'></td>
    </tr>
    <tr>
    <td>".$this->l("Пароль от sms-sending.ru")."</td>
    <td><input type='password' value='".Configuration::get("sms_sending_password")."' name='sms_sending_password'></td>
    </tr>
    <tr>
    <td>".$this->l("Имя отправителя")."</td>
    <td><input type='text' value='".Configuration::get("sms_sending_zag")."' name='sms_sending_zag'></td>
    </tr>
    <tr>
    <td>".$this->l("Телефон администратора")."</td>
    <td><input type='text' value='".Configuration::get("sms_sending_phone")."' name='sms_sending_phone'></td>
    </tr>
    </table>
    <table>
    <tr>
    <td>Сообщение администратору</td>
    <td>Сообщение покупателю</td>
    </tr>
    <tr>
    <td><textarea name='sms_sending_AdminTpl' cols='40' rows='5'>".Configuration::get("sms_sending_AdminTpl")."</textarea></td>
    <td><textarea name='sms_sending_UserTpl' cols='40' rows='5'>".Configuration::get("sms_sending_UserTpl")."</textarea></td>
    <td valign='top'>Макросы:
    <br>{NUM} - номер заказа
    <br>{SUM} - сумма заказа
    <br>{FIRSTNAME} - Имя покупателя
    <br>{LASTNAME} - Фамилия покупателя
    <br>{CITY} - Город покупателя
    <br>{SHOP_NAME} - Название магазина
    </td>
    </tr>
    <tr>
    <td colspan='2'><input type='checkbox' name='sms_sending_ToAdmin'";
    if (Configuration::get("sms_sending_ToAdmin") == 1) $html.=" checked='checked'";
    $html.="> - Отправлять администратору</td>
    </tr>
    <tr>
    <td colspan='2'><input type='checkbox' name='sms_sending_ToUser'";
    if (Configuration::get("sms_sending_ToUser") == 1) $html.=" checked='checked'";
    $html.="> - Отправлять покупателю</td>
    </tr>
    <tr>
    <td colspan='2'><input type='submit' class='button' name='submitLogin' value='Сохранить'></td>
    </tr>
    </table>
    </form>
    ";
    return $html;

    }

    }


    Или посоветуйте нормальный модуль.
     
  2. Katerpiller

    Katerpiller

    Регистрация:
    2 фев 2016
    Сообщения:
    18
    Симпатии:
    0
    Presta CMC Модуль, версия 3.14
    Только с ним тоже фигня. Работал прекрасно, а недавно стал отсылать смс от имени ABshop// Настройки все ок. Где рыть?
     
  3. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    164
    Симпатии:
    50
    Там смс отправляется по ValidateOrder - это просто подтверждение заказа, возможно вам подойдёт по ConfirmationPayment (подтверждение оплаты)
    просто поменять ValidateOrder на ConfirmationPayment в вашем коде
     
  4. mmucool

    mmucool

    Регистрация:
    4 ноя 2016
    Сообщения:
    4
    Симпатии:
    2
    Katerpiller, А где взять модуль sms_sending_prestashop подскажите ))) он платный или безплатный ? )) может есть ссылка где почитать))
     
  5. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    164
    Симпатии:
    50
    там же наверху написано "вот код модуля"
     
  6. Виктормега

    Виктормега

    Регистрация:
    12 дек 2016
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте! а куда этот код вставлять? для отправки смс?
     
  7. gabdr2017

    gabdr2017

    Регистрация:
    25 авг 2017
    Сообщения:
    12
    Симпатии:
    4
    создать папку sms_sending_prestashop и файл в ней sms_sending_prestashop.php эту папку с файлом закинуть в архив zip и установить через админку. я лично пользуюсь presta-sms но там нет рассылки по брошенным корзинам.
     
  8. Wild Wind

    Wild Wind

    Регистрация:
    22 сен 2017
    Сообщения:
    3
    Симпатии:
    0
    Насколько я вижу, вот в таких строках
    $tpl = str_replace('{NUM}', $params['cart']->id, $tpl);​
    он и подтягивает инфу не оттуда. Попробовать сменить источник 'cart' на 'order'