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

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


rassigor

Recommended Posts

Привет, зарегистрировался на 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;
                            
    }
    

    }
?>

 

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


  • 2 weeks later...
В 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,

 

 

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


  • 1 year later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

Important Information

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