玄武科技短信接口封装类

<?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;

}

}


}


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