2015-02-15 5 views
2

Я хотел бы интегрировать way2sms api в php-код. здесь мой пример кода, его ошибка бесплатная, но сообщение не отправляется. друзья, пожалуйста, помогите мне, где я ошибся? что мне нужно изменить?Как интегрировать way2sms в php?

sms.php

$uid='';//10 digit mobile number 

$pwd='password'; 

$phone=''; 

$msg='from way 2 sms master ' ; 

include ('way2sms-api.php'); 

$res= sendWay2SMS ($uid , $pwd , $phone , $msg); 

way2sms-api.php

<?php 

function sendWay2SMS($uid, $pwd, $phone, $msg) 

{ 

    $curl = curl_init(); 

    $timeout = 30; 

    $result = array(); 

    $uid = urlencode($uid); 

    $pwd = urlencode($pwd); 

    $autobalancer = rand(1, 8); 

    curl_setopt($curl, CURLOPT_URL, http://site".$autobalancer.".way2sms.com/Login1.action"); 

    curl_setopt($curl, CURLOPT_POST, 1); 

    curl_setopt($curl, CURLOPT_POSTFIELDS, "username=".$uid."&password=".$pwd."&button=Login"); 

    //curl_setopt($curl , CURLOPT_PROXY , '144.16.192.218:8080'); 

    curl_setopt($curl, CURLOPT_COOKIESESSION, 1); 

    curl_setopt($curl, CURLOPT_COOKIEFILE, "cookie_way2sms"); 

    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 

    curl_setopt($curl, CURLOPT_MAXREDIRS, 20); 

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"); 

    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout); 

    curl_setopt($curl, CURLOPT_REFERER, "http://site".$autobalancer.".way2sms.com/"); 

    $text = curl_exec($curl); 

    // Check if any error occured 

    if (curl_errno($curl)) 

    return "access error : ". curl_error($curl); 

    // Check for proper login 

    $pos = stripos(curl_getinfo($curl, CURLINFO_EFFECTIVE_URL), "Main.action"); 

    if ($pos === "FALSE" || $pos == 0 || $pos == "") 

    return "invalid login"; 

    if (trim($msg) == "" || strlen($msg) == 0) 

    return "invalid message"; 

    $msg = urlencode(substr($msg, 0, 160)); 

    $pharr = explode(",", $phone); 

    $refurl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL); 

    curl_setopt($curl, CURLOPT_REFERER, $refurl); 

    curl_setopt($curl, CURLOPT_URL, 
"http://site".$autobalancer.".way2sms.com/jsp/InstantSMS.jsp"); 
    $text = curl_exec($curl); 

    preg_match_all('/<input[\s]*type="hidden"[\s]*name="Action"[\s]*id="Action"[\s]*value="?([^>]*)?"/si', $text, $match); 
    $action = $match[1][0]; // get custid from the form fro the Action field in the post form 

    foreach ($pharr as $p) 

    { 

    if (strlen($p) != 10 || !is_numeric($p) || strpos($p, ".") != false) 

    { 

     $result[] = array('phone' => $p, 'msg' => urldecode($msg), 'result' => "invalid number"); 

     continue; 

    } 
    $p = urlencode($p); 

    // Send SMS 

    curl_setopt($curl, CURLOPT_URL, 'http://site'.$autobalancer.'.way2sms.com/quicksms.action'); 

    curl_setopt($curl, CURLOPT_REFERER, curl_getinfo($curl, CURLINFO_EFFECTIVE_URL)); 

    curl_setopt($curl, CURLOPT_POST, 1); 

    curl_setopt($curl, CURLOPT_POSTFIELDS, 
     "HiddenAction=instantsms&bulidgpwd=*******&bulidguid=username&catnamedis=Birthday&chkall=on&gpwd1=*******&guid1=username&ypwd1=*******&yuid1=username&Action=". 
     $action."&MobNo=".$p."&textArea=".$msg); 

    $contents = curl_exec($curl); 

    //Check Message Status 

    //preg_match_all('/<span class="style1">?([^>]*)?<\/span>/si', $contents, $match); 

    //$out=str_replace("&nbsp;","",$match[1][0]); 

    $pos = strpos($contents, 'Message has been submitted successfully'); 

    $res = ($pos !== false) ? true : false; 

    $result[] = array('phone' => $p, 'msg' => urldecode($msg), 'result' => $res); 

    } 
    //echo $text; 

    // Logout 

    curl_setopt($curl, CURLOPT_URL, "http://site".$autobalancer.".way2sms.com/LogOut"); 

    curl_setopt($curl, CURLOPT_REFERER, $refurl); 

    $text = curl_exec($curl); 

    curl_close($curl); 

    return $result; 

} 

?> 
+0

ли вы на самом деле заменить значения конфигурации с учетными данными разработчики API предоставили вам? Какой текст ответа API? Просто потому, что ваш код не дает никаких ошибок, не означает, что API тоже. – Elias

+0

да, я заменил .... но я не знаю, что делать с этой линией. curl_setopt ($ curl, CURLOPT_POSTFIELDS, "HiddenAction = instantsms & bulidgpwd = ******* & bulidguid = имя пользователя & catnamedis = День рождения & chkall = on & gpwd1 = ******* & guid1 = имя пользователя & ypwd1 = ******* & yuid1 = имя пользователя & действие = " $ action." & MobNo = ". $ P." & TextArea = ". $ Msg); – user3566029

ответ

0

TRY этот код:

<?php 
/** 
* https://github.com/kingster/Way2SMS-API/blob/master/way2sms-api.php 
* 
* Please use this code on your own risk. The author is no way responsible for the outcome arising out of this 
* Good Luck! 
**/ 
class WAY2SMSClient 
{ 
    var $curl; 
    var $timeout = 30; 
    var $jsToken; 
    var $way2smsHost; 
    var $refurl; 
    /** 
    * @param $username 
    * @param $password 
    * @return bool|string 
    */ 
    function login($username, $password) 
    { 
     $this->curl = curl_init(); 
     $uid = urlencode($username); 
     $pwd = urlencode($password); 
     // Go where the server takes you :P 
     curl_setopt($this->curl, CURLOPT_URL, "http://way2sms.com"); 
     curl_setopt($this->curl, CURLOPT_HEADER, true); 
     curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, false); 
     curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, TRUE); 
     $a = curl_exec($this->curl); 
     if (preg_match('#Location: (.*)#', $a, $r)) 
      $this->way2smsHost = trim($r[1]); 
     // Setup for login 
     curl_setopt($this->curl, CURLOPT_URL, $this->way2smsHost . "Login1.action"); 
     curl_setopt($this->curl, CURLOPT_POST, 1); 
     curl_setopt($this->curl, CURLOPT_POSTFIELDS, "username=" . $uid . "&password=" . $pwd . "&button=Login"); 
     curl_setopt($this->curl, CURLOPT_COOKIESESSION, 1); 
     curl_setopt($this->curl, CURLOPT_COOKIEFILE, "cookie_way2sms"); 
     curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($this->curl, CURLOPT_MAXREDIRS, 20); 
     curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($this->curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"); 
     curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, $this->timeout); 
     curl_setopt($this->curl, CURLOPT_REFERER, $this->way2smsHost); 
     $text = curl_exec($this->curl); 
     // Check if any error occured 
     if (curl_errno($this->curl)) 
      return "access error : " . curl_error($this->curl); 
     // Check for proper login 
     $pos = stripos(curl_getinfo($this->curl, CURLINFO_EFFECTIVE_URL), "ebrdg.action"); 
     if ($pos === "FALSE" || $pos == 0 || $pos == "") 
      return "invalid login"; 
     // Set the home page from where we can send message 
     $this->refurl = curl_getinfo($this->curl, CURLINFO_EFFECTIVE_URL); 
     $newurl = str_replace("ebrdg.action?id=", "main.action?section=s&Token=", $this->refurl); 
     curl_setopt($this->curl, CURLOPT_URL, $newurl); 
     // Extract the token from the URL 
     $this->jstoken = substr($newurl, 50, -41); 
     //Go to the homepage 
     $text = curl_exec($this->curl); 
     return true; 
    } 
    /** 
    * @param $phone 
    * @param $msg 
    * @return array 
    */ 
    function send($phone, $msg) 
    { 
     $result = array(); 
     // Check the message 
     if (trim($msg) == "" || strlen($msg) == 0) 
      return "invalid message"; 
     // Take only the first 140 characters of the message 
     $msg = substr($msg, 0, 140); 
     // Store the numbers from the string to an array 
     $pharr = explode(",", $phone); 
     // Send SMS to each number 
     foreach ($pharr as $p) { 
      // Check the mobile number 
      if (strlen($p) != 10 || !is_numeric($p) || strpos($p, ".") != false) { 
       $result[] = array('phone' => $p, 'msg' => $msg, 'result' => "invalid number"); 
       continue; 
      } 
      // Setup to send SMS 
      curl_setopt($this->curl, CURLOPT_URL, $this->way2smsHost . 'smstoss.action'); 
      curl_setopt($this->curl, CURLOPT_REFERER, curl_getinfo($this->curl, CURLINFO_EFFECTIVE_URL)); 
      curl_setopt($this->curl, CURLOPT_POST, 1); 
      curl_setopt($this->curl, CURLOPT_POSTFIELDS, "ssaction=ss&Token=" . $this->jstoken . "&mobile=" . $p . "&message=" . $msg . "&button=Login"); 
      $contents = curl_exec($this->curl); 
      //Check Message Status 
      $pos = strpos($contents, 'Message has been submitted successfully'); 
      $res = ($pos !== false) ? true : false; 
      $result[] = array('phone' => $p, 'msg' => $msg, 'result' => $res); 
     } 
     return $result; 
    } 
    /** 
    * logout of current session. 
    */ 
    function logout() 
    { 
     curl_setopt($this->curl, CURLOPT_URL, $this->way2smsHost . "LogOut"); 
     curl_setopt($this->curl, CURLOPT_REFERER, $this->refurl); 
     $text = curl_exec($this->curl); 
     curl_close($this->curl); 
    } 
} 
/** 
* Helper Function to send to sms to single/multiple people via way2sms 
* @example sendWay2SMS ('9000' , 'password' , '987654321,98765' , 'Hello World') 
*/ 
function sendWay2SMS($uid, $pwd, $phone, $msg) 
{ 
    $client = new WAY2SMSClient(); 
    $client->login($uid, $pwd); 
    $result = $client->send($phone, $msg); 
    $client->logout(); 
    return $result; 
} 
+1

его ** Рабочий код ** и ** стоит попробовать ** ... танки до ** 'kingster' ** –

+1

Сохраните этот код в файл. –

+0

Сохраните этот код в файле в каталоге woorking (скажем: way2sms_api.php). add: require ('way2sms_api.php'); в рабочем файле, функция вызова sendWay2SMS (''way2sms_registered_mob_no'','' password'', '' any_no_of_receivers_seperated_by_comma'', ''Hello World''; –