Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

Суть проблемы в том, что у меня есть настроенный шлюз. Все работает отлично. Но не могу никак реализовать передачу результата со шлюза 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 не получиться. 

Надіслати
Поділитися на інших сайтах


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

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

Получается, я в файл  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
Надіслати
Поділитися на інших сайтах

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

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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.