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

Ищу Модуль для отправки SMS.ru

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

Привет, зарегистрировался на sms.ru, у них бесплатные смс на аккаунт, на который ты регистрируешься. Не могу найти модуль для sms.ru, кто нить видел? ткните носом. 

 

 

вот так они предлагают

 

$ch = curl_init("https://sms.ru/sms/send");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(

    "api_id"        =>    "85976291-E3A6-B2F",
    "to"            =>    "7927375xxxx",
    "text"        =>    iconv("windows-1251","utf-8","Привет!") # Если приходят крякозябры, то уберите iconv и оставьте только "Привет!"

));
$body = curl_exec($ch);
curl_close($ch);

 

  • +1 1

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


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

Нашел, модуль, он не очень корректно работает, хочу от туда взять отправку. 

 

Вот рабочая функция отправки 

 

 private function sms_send($api_id, $to=0, $text=0, $sender='') {
        $param=array(
        "api_id"     =>    $api_id,
        "to"         =>    $to,
        "text"         =>    $text,
        "from"         =>    $sender,
        "partner_id" => 34316);
        $ch = curl_init("http://sms.ru/sms/send");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

 

 

А вот как сделано в модуле СМС шлюз, но там другой СМС центер

<?php
// *    @copyright    OPENCART.PRO 2011 - 2015.
// *    @forum    http://forum.opencart.pro
// *    @source        See SOURCE.txt for source and other copyright.
// *    @license    GNU General Public License version 3; see LICENSE.txt
final class Smsc extends SmsGate {
    public function send() {
        return $this->_read_url('http://smsc.ru/sys/send.php?login='.urlencode($this->username).'&psw='.md5($this->password).
                            '&phones='.urlencode($this->to.($this->copy ? ','.$this->copy : '')).'&mes='.urlencode($this->message).
                            '&sender='.urlencode($this->from).'&cost=3&fmt=1&charset=utf8');
    }
    // Функция чтения URL. Для работы должно быть доступно:
    // curl или fsockopen (только http) или включена опция allow_url_fopen для file_get_contents
    private function _read_url($url)
    {
        $ret = "";
        if (function_exists("curl_init"))
        {
            static $c = 0; // keepalive
            if (!$c) {
                $c = curl_init();
                curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 10);
                curl_setopt($c, CURLOPT_TIMEOUT, 10);
                curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
            }
            curl_setopt($c, CURLOPT_URL, $url);
            $ret = curl_exec($c);
        }
        elseif (function_exists("fsockopen") && strncmp($url, 'http:', 5) == 0) // not https
        {
            $m = parse_url($url);
            $fp = fsockopen($m["host"], 80, $errno, $errstr, 10);
            if ($fp) {
                fwrite($fp, "GET $m[path]?$m[query] HTTP/1.1\r\nHost: smsc.ru\r\nUser-Agent: PHP\r\nConnection: Close\r\n\r\n");
                while (!feof($fp))
                    $ret = fgets($fp, 1024);
                fclose($fp);
            }
        }
        else
            $ret = file_get_contents($url);
        return $ret;
    }
}
?>

 

Вот универсальный класс. 

Помогите переделать отправку под SMS.RU, всем нужно)) так как у SMS.ru бесплатная отправка смс для своего номера)

 

 

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


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

Думаю вот так должна рабочая функция выглядеть

 

Только не совсем понел, как выдрать параметры

 

to - номер кому шлем, как я понел, надо что то с этим сделать   '&phones='.urlencode($this->to.($this->copy ? ','.$this->copy : '')).

text - текст, который шлем и с этим  &mes='.urlencode($this->message)

 

 

<?php
final class TestSms extends SmsGate {
public function send() {
        
        
        /*return $this->_read_url('http://smsc.ru/sys/send.php?login='.urlencode($this->username).'&psw='.md5($this->password).
                            '&phones='.urlencode($this->to.($this->copy ? ','.$this->copy : '')).'&mes='.urlencode($this->message).
                            '&sender='.urlencode($this->from).'&cost=3&fmt=1&charset=utf8');*/
                            
        
        
        $param=array(
        "api_id"     =>    $api_id,
        "to"         =>    $to,
        "text"         =>    $text,
        "from"         =>    $sender,
        "partner_id" => 34316);
        $ch = curl_init("http://sms.ru/sms/send");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
                            
    }
    

    }
?>

 

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


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

ясно((( желающих помочь нет

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


Ссылка на сообщение
Поделиться на другие сайты
В 16.04.2017 в 21:18, rassigor сказал:

Только не совсем понел, как выдрать параметры

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

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


Ссылка на сообщение
Поделиться на другие сайты
В 16.04.2017 в 21:18, rassigor сказал:

Только не совсем понел, как выдрать параметры

Все параметры здесь:

return $this->_read_url('http://smsc.ru/sys/send.php?login='.urlencode($this->username).'&psw='.md5($this->password).
                            '&phones='.urlencode($this->to.($this->copy ? ','.$this->copy : '')).'&mes='.urlencode($this->message).
                            '&sender='.urlencode($this->from).'&cost=3&fmt=1&charset=utf8');

По названиям можно догадаться, что чему соответствует.

А в качестве api_id можно использовать поле password, например. Ну, и в админке, конечно, вписать туда соответствующее значение (или откуда там пароль подставляется).

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


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

 

ТАк будет?

 private function sms_send($api_id, $to=0, $text=0, $sender='') {
        $param=array(
        "api_id"     =>    $api_id,
        "to"         =>    $this->to
,
        "text"         =>    $this->message
,
        "from"         =>    $this->from
,
        "partner_id" => 34316);
        $ch = curl_init("http://sms.ru/sms/send");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

 

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


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

Нет.

Вы определитесь, откуда вы берёте значения. Если вы их передаёте параметрами в метод отправки, то $this->to быть не может, а если берёте из полей класса, то не может быть $api_id.

 

Собственно, если вы можете просто передать параметры в метод, то так будет проще всего и в таком случае this не нужны.

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


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

Запутал вас и себя...

 

Вот у меня параметры,они уже есть

return $this->_read_url('http://smsc.ru/sys/send.php?login='.urlencode($this->username).'&psw='.md5($this->password).
                            '&phones='.urlencode($this->to.($this->copy ? ','.$this->copy : '')).'&mes='.urlencode($this->message).
                            '&sender='.urlencode($this->from).'&cost=3&fmt=1&charset=utf8');

 

Эти параметры надо привести вот к такому виду

Вот на уровне, какие переменные подставлять идет затык. 

 

"api_id"     =>    $api_id,
        "to"         =>    $to,
        "text"         =>    $text,
        "from"         =>    $sender,

 

 

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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