玄武科技短信接口封裝類

<?php


/**

 * 短信發送類

 */


class Sms{


public $config;

/**

* 發送短信

* @param int $phone 手機號碼

* @param int $content 正文 帶 %s替換

* @param int $code 驗證碼

* @param int $code_limit 驗證碼位數

* @return array

*

* @example

* $content='驗證碼:%s';

* $result=$this->sms->send(15918721789,$content,$code);

* var_dump($result,$content,$code);

*/

public function send($phone,&$content,&$code,$code_limit=6){

//生成驗證碼

$code=$this->generateMsgAuthCode($code_limit);


//正文

$content = sprintf($content, $code);


//默認只有玄武

//return array("result"=>true,"info"=>'');

return $this->xuanWuSms($phone,$content);

}


/**

* 玄武科技短信接口

* @param int $phone 手機號碼

* @param int $content 正文

* @return array

*/

public function xuanWuSms($phone,$content){

$msm_url = 'http://xxxx/cgi-bin/sendsms?';

$msm_account = $this->config['xuanwu']['account'];

$msm_pwd = $this->config['xuanwu']['pwd'];


$url=$msm_url."username=".$msm_account."&password=";

$url.=$msm_pwd."&to=".$phone."&text=".urlencode(iconv('utf-8', 'gb2312', $content))."&subid=&msgtype=1";

$send=$this->__httpGet($url);


if ($send===false){

$retrun=array("result"=>false,"info"=>"接口請求失敗!");

return $retrun;

}


$result=false;

$info="";

switch ($send){

case "0" :

$result=true;

$info="發送成功!";

break;

case "-2" :

$info="發送參數填定不正確!";

break;

case "-3" :

$info="用戶載入延遲!";

break;

case "-6" :

$info="密碼錯誤!";

break;

case "-7" :

$info="用戶不存在!";

break;

case "-11" :

$info="發送號碼數理大於最大發送數量";

break;

case "-12" :

$info="餘額不足";

break;

case "-99" :

$info="內部處理錯誤";

break;

default:

$result=false;

$info="其他錯誤".(string)$result;

break;

}

return array("result"=>$result,"info"=>$info);

}


/**

* 生成驗證碼

*/

public function generateMsgAuthCode($limit) {

$rand_array = range(0, 9);

shuffle($rand_array); //調用現成的數組隨機排列函數

return implode('', array_slice($rand_array, 0, $limit)); //截取前$limit個

}


/**

* GET 請求

* @param string $url

*/

private function __httpGet($url) {

$oCurl = curl_init();

if (stripos($url, "https://") !== FALSE) {

curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);

}

curl_setopt($oCurl, CURLOPT_URL, $url);

curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);

$sContent = curl_exec($oCurl);

$aStatus = curl_getinfo($oCurl);

curl_close($oCurl);

if (intval($aStatus["http_code"]) == 200) {

return $sContent;

} else {

return false;

}

}


}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章