Филиал: Москва
Заказать обратный звонок
Нам 16 лет

PHP-КЛАСС

 
<?php
//Ваш логин для HTTPS-протокола
define("HTTPS_LOGIN", "");
//Ваш пароль для HTTPS-протокола
define("HTTPS_PASSWORD", "");
//HTTPS-Адрес, к которому будут обращаться скрипты. Со слэшем на конце.
define("HTTPS_ADDRESS", "https://lcab.smsint.ru/");
//HTTP-Адрес, к которому будут обращаться скрипты. Со слэшем на конце.
define("HTTP_ADDRESS", "http://lcab.smsint.ru/");
//метод, которым отправляется запрос (curl или file_get_contents)
define("HTTPS_METHOD", "curl");
//1 - использовать HTTPS-адрес, 0 - HTTP
define("USE_HTTPS", 1);
//Класс попытается автоматически определить кодировку ваших скриптов.
//Если вы хотите задать ее сами в параметре HTTPS_CHARSET, то укажите HTTPS_CHARSET_AUTO_DETECT значение FALSE
define("HTTPS_CHARSET_AUTO_DETECT", false);
//кодировка ваших скриптов. cp1251 - для Windows-1251, либо же utf-8 для, собственно - utf-8
define("HTTPS_CHARSET", "utf-8");

<?php
  class Transport{

	private $charset;
	
	///Проверка баланса
	function balance(){
		return $this->get( $this->request("balance"), "account" );
	}
	
	function reports($start = "0000-00-00", $stop = "0000-00-00", $dop = array()){
		if (!isset($dop["source"])) $dop["source"] = "%";
		if (!isset($dop["number"])) $dop["number"] = "%";
		
		$result = $this->request("report", array(
			"start" => $start,
			"stop" => $stop,
			"source" => $dop["source"],
			"number" => $dop["number"],
		));
		if ($this->get($result, "code") != 1){
			$return =  array("code" => $this->get($result, "code"), "descr" => $this->get($result, "descr"));
		}
		else{
			$return =  array(
				"code" => $this->get($result, "code"), 
				"descr" => $this->get($result, "descr"),
			);
			if (isset($result['sms'])) {
				if (!isset($result['sms'][0])) $result['sms'] = array($result['sms']);
				$return["sms"] = $result['sms'];
			}
		}
		return $return;
	}
	
	function sendedSmsList($start = "0000-00-00", $stop = "0000-00-00", $number = false){
		$result = $this->request("reportNumber", array(
			"start" => $start,
			"stop" => $stop,
			"number" => $number
		));
		return $result;
	}
	
	function detailReport($smsid){
		$result = $this->request("report", array("smsid" => $smsid));
		if ($this->get($result, "code") != 1){
			$return =  array("code" => $this->get($result, "code"), "descr" => $this->get($result, "descr"));
		}
		else{
			$detail = $result["detail"];
			$return =  array(
				"code" => $this->get($result, "code"), 
				"descr" => $this->get($result, "descr"),
				"delivered" => $detail['delivered'],
				"notDelivered" => $detail['notDelivered'],
				"waiting" => $detail['waiting'],
				"process" => $detail['process'],
				"enqueued" => $detail['enqueued'],
				"cancel" => $detail['cancel'],
				"onModer" => $detail['onModer'],
			);
			if (isset($result['sms'])) $return["sms"] = $result['sms'];
		}
		return $return;
	}
	
	//отправка смс
	//params = array (text => , source =>, datetime => , action =>, onlydelivery =>, smsid =>)
	function send($params = array(), $phones = array()){
		$phones = (array)$phones;
		if (!isset($params["action"])) $params["action"] = "send";
		$someXML = "";
		if (isset($params["text"])) $params["text"] = htmlspecialchars($params["text"],null,HTTPS_CHARSET);
		foreach ($phones as $phone){
			if (is_array($phone)){
				if (isset($phone["number"])){
					$someXML .= "<to number='".$phone['number']."'>";
					if (isset($phone["text"])){
						$someXML .= htmlspecialchars($phone["text"],null,HTTPS_CHARSET);
					}
					$someXML .= "</to>";
				}
			}
			else{
				$someXML .= "<to number='$phone'></to>";
			}
		}
		
		$result = $this->request("send", $params, $someXML);
		if ($this->get($result, "code") != 1){
			$return =  array("code" => $this->get($result, "code"), "descr" => $this->get($result, "descr"));
		}
		else{
			$return = array(
				"code" => 1,
				"descr" => $this->get($result, "descr"),
				"datetime" => $this->get($result, "datetime"),
				"action" => $this->get($result, "action"),
				"allRecivers" => $this->get($result, "allRecivers"),
				"colSendAbonent" => $this->get($result, "colSendAbonent"),
				"colNonSendAbonent" => $this->get($result, "colNonSendAbonent"),
				"priceOfSending" => $this->get($result, "priceOfSending"),
				"colsmsOfSending" => $this->get($result, "colsmsOfSending"),
				"price" => $this->get($result,"price"),
				"smsid" => $this->get($result,"smsid"),
			);
		}
		return $return;
		
	}
	
	function get($responce, $key){
		if (isset($responce[$key])) return $responce[$key];
		return false;
	}
	
	function getURL($action){
		if (USE_HTTPS == 1)
            $address = HTTPS_ADDRESS."API/XML/".$action.".php";
        else
            $address = HTTP_ADDRESS."API/XML/".$action.".php";
        $address .= "?returnType=json";
		return $address;
    }

	
	function request($action,$params = array(),$someXML = ""){
		$xml = $this->makeXML($params,$someXML);
		if (HTTPS_METHOD == "curl"){
			$res = $this->request_curl($action,$xml);
		}
		elseif (HTTPS_METHOD == "file_get_contents"){
			$opts = array('http' =>
			    array(
			        'method'  => 'POST',
			        'header'  => 'Content-type: application/x-www-form-urlencoded',
			        'content' => $xml
			    )
			);
			
			$context  = stream_context_create($opts);
			
			$res = file_get_contents($this->getURL($action), false, $context);
		}
		if (isset($res)){
			$res = json_decode($res,true);
			if (isset($res["data"])) return $res["data"];
			return array();
		}
		$this->error("В настройках указан неизвестный метод запроса - '".HTTPS_METHOD."'");
	}
	
	function request_curl($action,$xml){
        $address = $this->getURL($action);
		$ch = curl_init($address);
		curl_setopt($ch, CURLOPT_URL, $address);
		curl_setopt($ch, CURLOPT_FAILONERROR, 1);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
		curl_setopt($ch, CURLOPT_TIMEOUT, 10);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
		curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
		$result = curl_exec($ch);
		curl_close($ch);
		return $result;
	}
	
	function makeXML($params,$someXML = ""){
		$xml = "<?xml version='1.0' encoding='UTF-8'?>
<data>
    <login>".htmlspecialchars(HTTPS_LOGIN,null)."</login>
    <password>".htmlspecialchars(HTTPS_PASSWORD,null)."</password>
    ";
    foreach ($params as $key => $value){
    if (is_array($value)){
    $xml .= "<$key ";
    foreach ($value as $attr => $v){
    $xml .= " $attr='".addslashes(htmlspecialchars($v))."' ";
    }
    $xml .= " />";
    }
    else $xml .= "<$key>$value</$key>";
		}
		$xml .= "$someXML
</data>";
		$xml = $this->getConvertedString($xml);
		return $xml;
	}
	
	function detectCharset($string, $pattern_size = 50){
		$first2 = substr($string, 0, 2);
	    $first3 = substr($string, 0, 3);
	    $first4 = substr($string, 0, 3);
	    
	    $UTF32_BIG_ENDIAN_BOM = chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF);
		$UTF32_LITTLE_ENDIAN_BOM = chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00);
		$UTF16_BIG_ENDIAN_BOM = chr(0xFE) . chr(0xFF);
		$UTF16_LITTLE_ENDIAN_BOM = chr(0xFF) . chr(0xFE);
		$UTF8_BOM = chr(0xEF) . chr(0xBB) . chr(0xBF);
	    
	    if ($first3 == $UTF8_BOM) return 'UTF-8';
	    elseif ($first4 == $UTF32_BIG_ENDIAN_BOM) return 'UTF-32';
	    elseif ($first4 == $UTF32_LITTLE_ENDIAN_BOM) return 'UTF-32';
	    elseif ($first2 == $UTF16_BIG_ENDIAN_BOM) return 'UTF-16';
	    elseif ($first2 == $UTF16_LITTLE_ENDIAN_BOM) return 'UTF-16';
	    
	    $list = array('CP1251', 'UTF-8', 'ASCII', '855', 'KOI8R', 'ISO-IR-111', 'CP866', 'KOI8U');
	    $c = strlen($string);
	    if ($c > $pattern_size)
	    {
	        $string = substr($string, floor(($c - $pattern_size) /2), $pattern_size);
	        $c = $pattern_size;
	    }
	
	    $reg1 = '/(\xE0|\xE5|\xE8|\xEE|\xF3|\xFB|\xFD|\xFE|\xFF)/i';
	    $reg2 = '/(\xE1|\xE2|\xE3|\xE4|\xE6|\xE7|\xE9|\xEA|\xEB|\xEC|\xED|\xEF|\xF0|\xF1|\xF2|\xF4|\xF5|\xF6|\xF7|\xF8|\xF9|\xFA|\xFC)/i';
	
	    $mk = 10000;
	    $enc = 'UTF-8';
	    foreach ($list as $item)
	    {
	        $sample1 = @iconv($item, 'cp1251', $string);
	        $gl = @preg_match_all($reg1, $sample1, $arr);
	        $sl = @preg_match_all($reg2, $sample1, $arr);
	        if (!$gl || !$sl) continue;
	        $k = abs(3 - ($sl / $gl));
	        $k += $c - $gl - $sl;
	        if ($k < $mk)
	        {
	            $enc = $item;
	            $mk = $k;
	        }
	    }
	    return $enc;
    }
	
	function getConvertedString($value, $from = false){
		if (HTTPS_CHARSET_AUTO_DETECT){
			if (!$this->charset){
				$this->charset = $this->detectCharset($value);
			}	
		}
		else{
			$this->charset = HTTPS_CHARSET;
		}
		
		if (strtolower($this->charset) != "utf-8") {
			if (function_exists("iconv")){
				if (!$from)
					return iconv($this->charset,"utf-8",$value);
				else 
					return iconv("utf-8",$this->charset,$value);
			}
			else
				$this->error("Не удается перекодировать переданные параметры в кодировку utf-8 - отсутствует функция iconv");
		}
		return $value;
	}
	
	function error($text){
		die($text);
	}	
		
	function __construct(){
		require_once(dirname(__FILE__)."/config.php");
		if (!defined("HTTPS_LOGIN")) $this->error("Не удалось подключить конфигурационный файл. Проверьте путь до файла config.php и права на него");
	}
}

if (!function_exists("json_decode")) {

   define("JSON_OBJECT_AS_ARRAY", 1);     // undocumented
   define("JSON_BIGINT_AS_STRING", 2);    // 5.4.0
   define("JSON_PARSE_JAVASCRIPT", 4);    // unquoted object keys, and single quotes ' strings identical to double quoted, more relaxed parsing

   function json_decode($json, $assoc=FALSE, $limit=512, $options=0, /*emu_args*/$n=0,$state=0,$waitfor=0) {
      global ${'.json_last_error'}; ${'.json_last_error'} = JSON_ERROR_NONE;

      #-- result var
      $val = NULL;
      $FAILURE = array(/*$val:=*/ NULL, /*$n:=*/ 1<<31);
      static $lang_eq = array("true" => TRUE, "false" => FALSE, "null" => NULL);
      static $str_eq = array("n"=>"\012", "r"=>"\015", "\\"=>"\\", '"'=>'"', "f"=>"\f", "b"=>"\010", "t"=>"\t", "/"=>"/");
      if ($limit<0) { ${'.json_last_error'} = JSON_ERROR_DEPTH; return /* __cannot_compensate */; }
      
      #-- strip UTF-8 BOM (the native version doesn't do this, but .. should)
      while (strncmp($json, "\xEF\xBB\xBF", 3) == 0) {
          trigger_error("UTF-8 BOM prefaces JSON, that's invalid for PHPs native json_decode", E_USER_ERROR);
          $json = substr($json, 3);
      }

      #-- flat char-wise parsing
      for (/*$n=0,*/ $len = strlen($json); $n<$len; /*$n++*/) {
         $c = $json[$n];

         #-= in-string
         if ($state==='"' or $state==="'") {

            if ($c == '\\') {
               $c = $json[++$n];
               
               // simple C escapes
               if (isset($str_eq[$c])) {
                  $val .= $str_eq[$c];
               }

               // here we transform \uXXXX Unicode (always 4 nibbles) references to UTF-8
               elseif ($c == "u") {
                  // read just 16bit (therefore value can't be negative)
                  $hex = hexdec( substr($json, $n+1, 4) );
                  $n += 4;
                  // Unicode ranges
                  if ($hex < 0x80) {    // plain ASCII character
                     $val .= chr($hex);
                  }
                  elseif ($hex < 0x800) {   // 110xxxxx 10xxxxxx 
                     $val .= chr(0xC0 + $hex>>6) . chr(0x80 + $hex&63);
                  }
                  elseif ($hex <= 0xFFFF) { // 1110xxxx 10xxxxxx 10xxxxxx 
                     $val .= chr(0xE0 + $hex>>12) . chr(0x80 + ($hex>>6)&63) . chr(0x80 + $hex&63);
                  }
                  // other ranges, like 0x1FFFFF=0xF0, 0x3FFFFFF=0xF8 and 0x7FFFFFFF=0xFC do not apply
               }

               // for JS (not JSON) the extraneous backslash just gets omitted
               elseif ($options & JSON_PARSE_JAVASCRIPT) {
                  if (is_numeric($c) and preg_match("/[0-3][0-7][0-7]|[0-7]{1,2}/", substr($json, $n), $m)) {
                     $val .= chr(octdec($m[0]));
                     $n += strlen($m[0]) - 1;
                  }
                  else {
                     $val .= $c;
                  }
               }
               
               // redundant backslashes disallowed in JSON
               else {
                  $val .= "\\$c";
                  ${'.json_last_error'} = JSON_ERROR_CTRL_CHAR; // not quite, but
                  trigger_error("Invalid backslash escape for JSON \\$c", E_USER_WARNING);
                  return $FAILURE;
               }
            }

            // end of string
            elseif ($c == $state) {
               $state = 0;
            }

            //@COMPAT: specialchars check - but native json doesn't do it?
            #elseif (ord($c) < 32) && !in_array($c, $str_eq)) {
            #   ${'.json_last_error'} = JSON_ERROR_CTRL_CHAR;
            #}
            
            // a single character was found
            else/*if (ord($c) >= 32)*/ {
               $val .= $c;
            }
         }

         #-> end of sub-call (array/object)
         elseif ($waitfor && (strpos($waitfor, $c) !== false)) {
            return array($val, $n);  // return current value and state
         }
         
         #-= in-array
         elseif ($state===']') {
            list($v, $n) = json_decode($json, $assoc, $limit, $options, $n, 0, ",]");
            $val[] = $v;
            if ($json[$n] == "]") { return array($val, $n); }
         }

         #-= in-object
         elseif ($state==='}') {
            // quick regex parsing cheat for unquoted JS object keys
            if ($options & JSON_PARSE_JAVASCRIPT and $c != '"' and preg_match("/^\s*(?!\d)(\w\pL*)\s*/u", substr($json, $n), $m)) {
                $i = $m[1];
                $n = $n + strlen($m[0]);
            }
            else {
                // this allowed non-string indicies
                list($i, $n) = json_decode($json, $assoc, $limit, $options, $n, 0, ":");
            }
            list($v, $n) = json_decode($json, $assoc, $limit, $options, $n+1, 0, ",}");
            $val[$i] = $v;
            if ($json[$n] == "}") { return array($val, $n); }
         }

         #-- looking for next item (0)
         else {
         
            #-> whitespace
            if (preg_match("/\s/", $c)) {
               // skip
            }

            #-> string begin
            elseif ($c == '"') {
               $state = $c;
            }

            #-> object
            elseif ($c == "{") {
               list($val, $n) = json_decode($json, $assoc, $limit-1, $options, $n+1, '}', "}");
               
               if ($val && $n) {
                  $val = $assoc ? (array)$val : (object)$val;
               }
            }

            #-> array
            elseif ($c == "[") {
               list($val, $n) = json_decode($json, $assoc, $limit-1, $options, $n+1, ']', "]");
            }

            #-> numbers
            elseif (preg_match("#^(-?\d+(?:\.\d+)?)(?:[eE]([-+]?\d+))?#", substr($json, $n), $uu)) {
               $val = $uu[1];
               $n += strlen($uu[0]) - 1;
               if (strpos($val, ".")) {  // float
                  $val = floatval($val);
               }
               elseif ($val[0] == "0") {  // oct
                  $val = octdec($val);
               }
               else {
                  $toobig = strval(intval($val)) !== strval($val);
                  if ($toobig and !isset($uu[2]) and ($options & JSON_BIGINT_AS_STRING)) {
                      $val = $val;  // keep lengthy numbers as string
                  }
                  elseif ($toobig or isset($uu[2])) {  // must become float anyway
                      $val = floatval($val);
                  }
                  else {  // int
                      $val = intval($val);
                  }
               }
               // exponent?
               if (isset($uu[2])) {
                  $val *= pow(10, (int)$uu[2]);
               }
            }

            #-> boolean or null
            elseif (preg_match("#^(true|false|null)\b#", substr($json, $n), $uu)) {
               $val = $lang_eq[$uu[1]];
               $n += strlen($uu[1]) - 1;
            }

            #-> JS-string begin
            elseif ($options & JSON_PARSE_JAVASCRIPT and $c == "'") {
               $state = $c;
            }

            #-> comment
            elseif ($options & JSON_PARSE_JAVASCRIPT and ($c == "/") and ($json[$n+1]=="*")) {
               // just find end, skip over
               ($n = strpos($json, "*/", $n+1)) or ($n = strlen($json));
            }

            #-- parsing error
            else {
               // PHPs native json_decode() breaks here usually and QUIETLY
               trigger_error("json_decode: error parsing '$c' at position $n", E_USER_WARNING);
               ${'.json_last_error'} = JSON_ERROR_SYNTAX;
               return $waitfor ? $FAILURE : NULL;
            }

         }//state
         
         #-- next char
         if ($n === NULL) { ${'.json_last_error'} = JSON_ERROR_STATE_MISMATCH; return NULL; }   // ooops, seems we have two failure modes
         $n++;
      }//for

      #-- final result
      return ($val);
   }
}
?>

Открыть весь код

Если вам требуется добавить возможность СМС-оповещения ваших посетителей к себе на WEB-сайт, вы можете воспользоваться нашим PHP-классом. Этот класс является реализацией нашего транспортного XML-протокола. Подключение и интеграция займет буквально несколько минут.

Конфигурация

Для начала необходимо подключить PHP-класс

require_once("transport.php");
$api = new Transport();

Перед использованием необходимо провести небольшую настройку в файле config.php Укажите там свой логин, пароль, а также кодировку, которую используют ваши PHP-скрипты ( список поддерживаемых кодировок — такой же, как у встроенной php-фунции iconv ) Если ваш сервер не поддерживает отправку HTTPS-запросов, установите флажку USE_HTTPS значение 0.

Рассылка смс

Основная информация об отправке

Вот самый простой пример отправки СМС-сообщения:

$params = array(
	'text' => 'Текст сообщения',
	'source' => 'Имя отправителя'
	/* Дополнительные параметры */
);

$phones = array('79992223333','8-923-777-8899');
//или
$phones = array(	
	array('number' => '79992223333', 'text' => 'Текст сообщения 1'),
	array('number' => '8-923-777-8899', 'text' => 'Текст сообщения 2') 
);

$send = $api->send($params,$phones);

С помощью массива $params, помимо текста сообщения, можно передать следующие параметры:

  • action — принимает значения 'send' (отправить СМС, выбрано по-умолчанию) или 'check' (только проверить возможность отправки);
  • datetime — дата и время отправки смс в формате (ГГГГ-ММ-ДД ЧЧ:ММ:СС);
  • source — имя отправителя;
  • regionalTime (по-умолчанию 0 — отправлять по вашему местному времени, можно задать 1 — отправлять по местному времени абонента);
  • stop (по-умолчанию 1 — не отправлять абонентам, находящимся в Стоп-листах);
  • smsid — желаемый id смски;
  • channel — ID канала для отправки СМС (0 - Прямой (гарантия, мультиподпись) 1 - Прямой (гарантия, без выбора подписи) 2 - Альтернативный (цифровая подпись) );
  • allowed_opsos — перечисление операторов сотовой связи, которым можно отправлять это сообщение, через запятую, без пробелов. Например: "megafon,beeline". Остальным операторам сообщение отправляться не будет;
  • exclude_opsos — перечисление операторов сотовой связи, которым запрещено отправлять это сообщение, через запятую, без пробелов. Например: "megafon,beeline". Остальным операторам сообщение будет отправлено.

Обязательным параметром является только text.

Как можно передавать получателей СМС

Как можно передавать массив $phones:

  1. Первый вариант:
    array('79992223333', '79991114444')
    
  2. Вариант второй:
    array(
      array('number' => '79992223333', 'text' => 'Текст для первого контакта'),
      array('number' => '79991114444', 'text' => 'Текст для второго контакта')
    )
    

Описание ответа функции

Функция отправки смс возвращает один из двух вариантов массивов, в зависимости от результата операции:

  • Неудача:
    array(
      "code" => "Код ошибки",
    	"descr" => "Описание ошибки"
    )
    
  • Успешное завершение:
    array(
    	"code" => 1,
    	"descr" => "Операция успешно завершена",
    	"smsid" => "ID рассылки, который присвоили вы, или наша система в случае если вы не передали свой smsid",
    	"datetime" => "Время отправки в MySQL формате",
    	"allRecivers" => "Количество абонентов в рассылке",
    	"colSendAbonent" => "Количество тех, кто получит смс",
    	"colNonSendAbonent" => "Количество тех, кто смс не получит",
    	"priceOfSending" => "Стоимость рассылки",
    	"colsmsOfSending" => "Количество смс в рассылке",
    	"price" => "Стоимость одной смс"
    )

Список смс

Чтобы получить список отправленных СМС за определенный период времени, можно воспользоваться следующей функцией:

$smsList = $api->reports($start,$stop);

где:

  • $start — начальная дата в формате ГГГГ-ММ-ДД;
  • $stop — конечная дата в формате ГГГГ-ММ-ДД.

Описание ответа функции

В ответ вы получите следующий массив, в зависимости от результата запроса:

  • Неудача:
    array(
    	"code" => "Код ошибки",
    	"descr" => "Описание ошибки"
    )
    
  • Успешное завершение:
    array(
    	"code" => 1,
    	"descr" => "Операция успешно завершена"
    	"sms" => array(
    		0 => array(
    			"smsid" => "pvjrkhrc0vo7927xrtpv0"
    			"datetime" => "2010-12-07 11:02:10"
    			"text" => "Привет!"
    			"source" => "my sms"
    			"allCol" => "Количество получателей"
    			"deliveredCol" => "Сколько доставлено"
    			"notDeliveredCol" => "Сколько недоставлено"
    			"waitingCol" => "Сколько в ожидании"
    			"enqueuedCol" => "Количество смс без отчета"
    			"payment" => "Стоимость рассылки"
    		)
    		1 => array....
    	)
    )
    

Детальный отчет

Функция получения детального отчета по рассылке выглядит следующим образом:

$report = $api->detailReport($smsid);

где $smsid — smsid смски, по которой вы хотите получить отчет.

В ответ вы получите следующий массив, в зависимости от результата запроса:

  • Неудача:
    array(
    	"code" => "Код ошибки",
    	"descr" => "Описание ошибки"
    )
    
  • Успешное завершение:
    • Если вы передадите свой SMSID, который вы указывали при отправке СМС или получили в ответе от нашего сервера после отправки СМС, то вы получите такой отчет:
      array(
      		'code' => 1,
      		'descr' => 'Описание результата обработки',
      		'delivered' => array(  //Доставлено
      			array(
      				'number' => '79051234567',
      				'dateTime' => '2018-02-11 12:44:21'
      			)
      		),
      		'notDelivered' => array(
      			'79051234567' //Не доставлено
      		),
      		'waiting' => array(
      			'79051234567' //В ожидании
      		),
      		'enqueued' => array(
      			'79051234567' //Отправлено
      		),
      		'cancel' => array(
      			'79051234567' //Отменено
      		),
      		'onModer' => array(
      			'79051234567' //Модерация
      		)
      	)
      
    • Ответ сервера в случае передачи SMSID, полученного в списке СМС-рассылок за период (предыдущий раздел руководства):
      array(
      		'code' => 1,
      		'descr' => 'Описание результата обработки',
      		'sms' => array(
      			'smsid' => 'pvjrkhrc0vo7927xrtpv0',
      			'datetime' => '2010-12-07 11:02:10',
      			'text' => 'Текст сообщения',
      			'source' => 'my sms',
      			'allCol' => 5,          //Количество получателей
      			'deliveredCol' => 1,    //Доставлено
      			'notDeliveredCol' => 2, //Не доставлено
      			'waitingCol' => 3,      //В ожидании
      			'enqueuedCol' => 4,     //Отправлено
      			'payment' => 25.22      //Стоимость рассылки
      		),
      		'delivered' => array(
      			'79051234567'           //Доставлено
      		),    
      		'notDelivered' => array(
      			'79051234567'           //Не доставлено
      		'),
      		'waiting' => array(
      			'79051234567'           //В ожидании
      		),
      		'enqueued' => array(
      			'79051234567'           //Отправлено
      		),
      		'cancel' => array(
      			'79051234567'           //Отменено
      		),       
      		'onModer' => array(
      			'79051234567'           //Модерация
      		)       
      	)
      

Проверка баланса

Для получения текущего количества денежных средств на вашем аккаунте, воcпользуйтесь функцией

$balance = $api->balance();

В ответ вам придет дробное число.

Более 25 000 клиентов уже используют SMSInt.ru

blue film english sexy knocktube.mobi desi ball نيك جيران muarab.net افلام سكس مصري جديده سكس روسي ساخن justporno.pro فلم اباحى نيك قوى pornvuku.net مرة لبوة cousin sex videos indianpornanal.com varalakshmi actress اتنين بينيكو بعض nusexy.com سكس مترجم مجاني hotel sex video porn-storage.com hindi xxx vidio ممثلات شراميط sexesursexe.com نيك سعاد حسنى kuwari chut ki chudai video xkeezmovies.mobi malayalam sex 3gp sweet fuck porncorntube.net marat xxx فديوهات سكس اغتصاب adultpornsexxx.com صور سكس مص صدر mallu actress sex pornspider.info xnxx mco bhabhi ki bp redpornvideos.net xxx hindi six karakai jouzu no moto takagi-san manga hentai-art.net tayu-tayu ميا خليفة مترجم xvideoz.mobi سكس فى المكتبه