Перейти к содержанию
Snoop3000

Помощь в передачи значения переменной смс

Рекомендуемые сообщения

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

Суть проблемы в том, что у меня есть настроенный шлюз. Все работает отлично. Но не могу никак реализовать передачу результата со шлюза system/smsgate/turbosms.php

значения $balance. (текущий баланс на счету)

$balance = $client->GetCreditBalance();
$balance->GetCreditBalanceResult;

Мне надо обработать при новом заказе, если баланс на счету меньше 10 кредитов, то отправить сообщение админу что надо пополнить счет.

 

Я в файле catalog/model/checkout/order.php в коде, где идет 

// Send Admins SMS if configure
if ($this->config->get('config_sms_alert')) {

вставил код:

if ($balance<10){

и дальше пошел стандартный код отправки смс админу. 

 

Вот как мне вытянуть с того файла turbosms.php после запуска $sms->send(); мне нужное значение переменной? И передать его в исполнение в order.php

 

Прошу сильно не пинать пожалуйста, я реально новичок, хочу разобраться на примере как оно получает значения с разных файлов, после запуска функции send(), ведь пока она не обработает, значения переменной $balance не получиться. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно, например, через сессию.

 

Сохраняем в сессию:

$this->session->data['smsbalance']=$balanse;

получаем из сессии

$balance=$this->session->data['smsbalance'];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Огромное Вам спасибо за совет.

Но все равно не получилось разобраться...

Получается, я в файл  system/smsgate/turbosms.php вставил код на сохранение в сессию:

$auth = $client->Auth($credentials);
        $balance = $client->GetCreditBalance();
        $this->session->data['smsbalance']=$balance->GetCreditBalanceResult;

А в файл catalog/model/checkout/order.php вставил код на получение из сессии:

// Send Admins SMS if configure
                if ($this->config->get('config_sms_alert')) {
                    $options = array(
                        'to'       => $this->config->get('config_sms_to'),
                        'copy'     => $this->config->get('config_sms_copy'),
                        'from'     => $this->config->get('config_sms_from'),
                        'username' => $this->config->get('config_sms_gate_username'),
                        'password' => $this->config->get('config_sms_gate_password'),
                        'message'  => str_replace(array('{ID}', '{DATE}', '{TIME}', '{SUM}', '{PHONE}'),
                            array($order_id, date('d.m.Y'), date('H:i'), floatval($order_info['total']), $order_info['telephone']),
                            $this->config->get('config_sms_message'))
                    );

                    
                    $registry = new Registry();
                    $registry->set('sms', new Sms($registry));
            

                    $sms = new Message($this->config->get('config_sms_gatename'), $options);
                    $sms->send();
                    $balance=$this->session->data['smsbalance'];
                    $this->log->write('Ваш баланс');
                    $this->log->write($balance);
                    
                }

Вот что мне после всего этого записало в лог:

2016-09-06 10:00:33 - PHP Notice:  Indirect modification of overloaded property Turbosms::$session has no effect in D:\WEB_Server\OpenServer\domains\localhost\system\smsgate\turbosms.php on line 13
2016-09-06 10:00:34 - PHP Notice:  Undefined index: smsbalance in D:\WEB_Server\OpenServer\domains\localhost\system\storage\modification\catalog\model\checkout\order.php on line 834
2016-09-06 10:00:34 - Ваш баланс
2016-09-06 10:00:34 -

Что не так я сделал? вроде все правильно вставил сессию. Прошу камнями не закидывать, я только учусь... Буду всем безмерно благодарен за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а turbosms.php может покажете или догадываться что там внутри ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Файл turbosms.php

<?php
final class Turbosms extends SmsGate {
    public function send() {
        $client = new SoapClient ('http://turbosms.in.ua/api/wsdl.html');

        $credentials = Array (
            'login' => $this->username,
            'password' => $this->password
        );

        $auth = $client->Auth($credentials);
        $balance = $client->GetCreditBalance();
        $proverka = $balance->GetCreditBalanceResult;
        $this->session->data['proverka'] = $proverka;
        
        
        if($this->to && $this->copy){
            $numbers = $this->to . ',' . $this->copy;
        }elseif($this->to){
            $numbers = $this->to;
        }else{
            trigger_error('Error: Turbo SMS Phone destination not found!');
            $numbers = false;
        }

        if($this->from){
            $sender = $this->from;
        }else{
            $sender = 'InfoNomer';
        }

        if($auth && $numbers){
            $sms = Array (
                'sender' => $sender,
                'destination' => $numbers,
                'text' => $this->message
            );
            
            $result = $client->SendSMS($sms);
            
            return $result;
            
        }else{
            trigger_error('Error: Turbo SMS Authentication failed!');
        }
    }
}
?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там же все просто.. 

class TurboSMS
{
    protected static function auth()
    {
        return $auth = [
            'login'    => 'login',
            'password' => 'password'
        ];
    }

    public static function getBalance()
    {
        $turbo_sms = new SoapClient('http://turbosms.in.ua/api/wsdl.html');

        $turbo_sms->Auth(self::auth());
        $result = $turbo_sms->GetCreditBalance();
        return number_format($result->GetCreditBalanceResult, 0, ',', ' ');
    }
}

Что мешает вызвать

TurboSMS::getBalance();

?

 

Ну, и обычно делаю так.. чтоб удобней было следить за балансом

e954eee3a4b7.png

Изменено пользователем pantagruel964

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что возвращает $result ? 

Все проходит. Операция. Идет отправка смс. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там же все просто.. 

class TurboSMS
{
    protected static function auth()
    {
        return $auth = [
            'login'    => 'login',
            'password' => 'password'
        ];
    }

    public static function getBalance()
    {
        $turbo_sms = new SoapClient('http://turbosms.in.ua/api/wsdl.html');

        $turbo_sms->Auth(self::auth());
        $result = $turbo_sms->GetCreditBalance();
        return number_format($result->GetCreditBalanceResult, 0, ',', ' ');
    }
}

Что мешает вызвать

TurboSMS::getBalance();

?

Мешает то, что я новичок))

 

 

Вот этот код что вы написали 

class TurboSMS

его весь надо в файл turbo.sms запихнуть?

 

А в order.php получается вставить:

$balance = getbalance();

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас класс, извините, через попу написан. Вынесите проверку баланса в отдельный метод и нормально к нему обращайтесь. И не надо туда с сессией лезть, не усложняйте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

в файл admin/view/template/setting.tpl вставил код:

(скажем так, тест введенных данных для проверки)

<script>
    function AjaxFormRequest(result_id,formMain,url) {
                jQuery.ajax({
                    url:     url,
                    type:     "POST",
                    dataType: "html",
                    data: jQuery("#"+formMain).serialize(), 
                    success: function(response) {
                    document.getElementById(result_id).innerHTML = response;
                },
                error: function(response) {
                document.getElementById(result_id).innerHTML = "<p>Возникла ошибка при отправке формы. Попробуйте еще раз</p>";
                }
             });
    }
</script>
<form method="post" action="" id="formMain" name="formMain">
        <input id="name" type="text" name="name" placeholder="Введите ваш логин" maxlength="30" autocomplete="off" required/>
        <input id="password" type="text" name="password" placeholder="Введите ваш пароль" maxlength="30" autocomplete="off" required/>
        <input id="button" type="button"  value="тест" onclick="AjaxFormRequest('messegeResult', 'formMain', '/demo/balance.php')"/>
   
<div id="messegeResult">
</div>

Вот сам код файла /demo/balance.php :

<?php               
                    // Подключаемся к серверу  
                    $client = new SoapClient('http://turbosms.in.ua/api/wsdl.html');  
                    // Данные авторизации  
                     $auth = Array (  
                          'login' => $_POST['name'],   
                          'password' => $_POST['password']
                     );  
                    // Авторизируемся на сервере  
                    $result = $client->Auth($auth);
                    $result1 = $result->AuthResult; 
                    // Получаем количество доступных кредитов  
                    $balance = $client->GetCreditBalance(); 
                    $result2 = $balance->GetCreditBalanceResult; 
?>
<p><b><?php echo $result1; ?></b></p><p><b>На вашем счету <?php echo $result2; ?> кредита.</b></p>

И вот в ответ при нажатии на кнопку Тест оно всегда возвращает с сервера мне информацию: Не достаточно параметров для выполнения функции

Проверил, вывел $_POST['name'] и $_POST['password'] всегда пустые.

Что не так делаю? Никак не передает эти значения. 

Но если создаю себе просто index.html и balance.php с этими кодами, то тогда все идеально работает и код принимает. В чем проблема здесь??? 

помогайте, уже пару дней мучаюсь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.