本文主要是介绍laravel5做手机验证码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
进入测试号码,需要填写测试手机号码
接着填写封装的短信验证码调用接口
SendTemplateSMS.php:
<?phpnamespace App\Tool\SMS;use App\Models\M3Result;class SendTemplateSMS
{//主帐号private $accountSid='aaf98f8949d575140149dd482efa04b5';//主帐号Tokenprivate $accountToken='c7a1c3563b1347f4adbe0734f981dac1';//应用Idprivate $appId='8a48b55149d5792d0149dd63a3c4046d';//请求地址,格式如下,不需要写https://private $serverIP='sandboxapp.cloopen.com';//请求端口private $serverPort='8883';//REST版本号private $softVersion='2013-12-26';/*** 发送模板短信* @param to 手机号码集合,用英文逗号分开* @param datas 内容数据 格式为数组 例如:array('Marry','Alon'),如不需替换请填 null* @param $tempId 模板Id*/public function sendTemplateSMS($to,$datas,$tempId){$m3_result = new M3Result;// 初始化REST SDK$rest = new CCPRestSDK($this->serverIP,$this->serverPort,$this->softVersion);$rest->setAccount($this->accountSid,$this->accountToken);$rest->setAppId($this->appId);// 发送模板短信// echo "Sending TemplateSMS to $to <br/>";$result = $rest->sendTemplateSMS($to,$datas,$tempId);if($result == NULL ) {$m3_result->status = 3;$m3_result->message = 'result error!';}if($result->statusCode != 0) {$m3_result->status = $result->statusCode;$m3_result->message = $result->statusMsg;}else{$m3_result->status = 0;$m3_result->message = '发送成功';}return $m3_result;}
}//sendTemplateSMS("18576437523", array(1234, 5), 1);
CCPRestSDK.php:
<?phpnamespace App\Tool\SMS;class CCPRestSDK {private $AccountSid;private $AccountToken;private $AppId;private $SubAccountSid;private $SubAccountToken;private $VoIPAccount;private $VoIPPassword;private $ServerIP;private $ServerPort;private $SoftVersion;private $Batch; //时间shprivate $BodyType = "xml";//包体格式,可填值:json 、xmlprivate $enabeLog = true; //日志开关。可填值:true、private $Filename="../log.txt"; //日志文件private $Handle;function __construct($ServerIP,$ServerPort,$SoftVersion){$this->Batch = date("YmdHis");$this->ServerIP = $ServerIP;$this->ServerPort = $ServerPort;$this->SoftVersion = $SoftVersion;$this->Handle = fopen($this->Filename, 'a');}/*** 设置主帐号** @param AccountSid 主帐号* @param AccountToken 主帐号Token*/function setAccount($AccountSid,$AccountToken){$this->AccountSid = $AccountSid;$this->AccountToken = $AccountToken;}/*** 设置子帐号** @param SubAccountSid 子帐号* @param SubAccountToken 子帐号Token* @param VoIPAccount VoIP帐号* @param VoIPPassword VoIP密码*/function setSubAccount($SubAccountSid,$SubAccountToken,$VoIPAccount,$VoIPPassword){$this->SubAccountSid = $SubAccountSid;$this->SubAccountToken = $SubAccountToken;$this->VoIPAccount = $VoIPAccount;$this->VoIPPassword = $VoIPPassword;}/*** 设置应用ID** @param AppId 应用ID*/function setAppId($AppId){$this->AppId = $AppId;}/*** 打印日志** @param log 日志内容*/function showlog($log){if($this->enabeLog){fwrite($this->Handle,$log."\n");}}/*** 发起HTTPS请求*/function curl_post($url,$data,$header,$post=1){//初始化curl$ch = curl_init();//参数设置$res= curl_setopt ($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt ($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_POST, $post);if($post)curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch,CURLOPT_HTTPHEADER,$header);$result = curl_exec ($ch);//连接失败if($result == FALSE){if($this->BodyType=='json'){$result = "{\"statusCode\":\"172001\",\"statusMsg\":\"网络错误\"}";} else {$result = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Response><statusCode>172001</statusCode><statusMsg>网络错误</statusMsg></Response>";}}curl_close($ch);return $result;}/*** 创建子帐号* @param friendlyName 子帐号名称*/function createSubAccount($friendlyName){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'appId':'$this->AppId','friendlyName':'$friendlyName'}";}else{$body="<SubAccount><appId>$this->AppId</appId><friendlyName>$friendlyName</friendlyName></SubAccount>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SubAccounts?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐号Id + 英文冒号 + 时间戳$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 获取子帐号* @param startNo 开始的序号,默认从0开始* @param offset 一次查询的最大条数,最小是1条,最大是100条*/function getSubAccounts($startNo,$offset){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体$body="<SubAccount><appId>$this->AppId</appId><startNo>$startNo</startNo><offset>$offset</offset></SubAccount>";if($this->BodyType=="json"){$body= "{'appId':'$this->AppId','startNo':'$startNo','offset':'$offset'}";}else{$body="<SubAccount><appId>$this->AppId</appId><startNo>$startNo</startNo><offset>$offset</offset></SubAccount>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/GetSubAccounts?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 子帐号信息查询* @param friendlyName 子帐号名称*/function querySubAccount($friendlyName){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'appId':'$this->AppId','friendlyName':'$friendlyName'}";}else{$body="<SubAccount><appId>$this->AppId</appId><friendlyName>$friendlyName</friendlyName></SubAccount>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/QuerySubAccountByName?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 发送模板短信* @param to 短信接收彿手机号码集合,用英文逗号分开* @param datas 内容数据* @param $tempId 模板Id*/function sendTemplateSMS($to,$datas,$tempId){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$data="";for($i=0;$i<count($datas);$i++){$data = $data. "'".$datas[$i]."',";}$body= "{'to':'$to','templateId':'$tempId','appId':'$this->AppId','datas':[".$data."]}";}else{$data="";for($i=0;$i<count($datas);$i++){$data = $data. "<data>".$datas[$i]."</data>";}$body="<TemplateSMS><to>$to</to><appId>$this->AppId</appId><templateId>$tempId</templateId><datas>".$data."</datas></TemplateSMS>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SMS/TemplateSMS?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }//重新装填数据if($datas->statusCode==0){if($this->BodyType=="json"){$datas->TemplateSMS =$datas->templateSMS;unset($datas->templateSMS);}}return $datas;}/*** 双向回呼* @param from 主叫电话号码* @param to 被叫电话号码* @param customerSerNum 被叫侧显示的客服号码* @param fromSerNum 主叫侧显示的号码* @param promptTone 自定义回拨提示音* @param userData 第三方私有数据* @param maxCallTime 最大通话时长* @param hangupCdrUrl 实时话单通知地址* @param alwaysPlay 是否一直播放提示音* @param terminalDtmf 用于终止播放promptTone参数定义的提示音* @param needBothCdr 是否给主被叫发送话单* @param needRecord 是否录音* @param countDownTime 设置倒计时时间* @param countDownPrompt 倒计时时间到后播放的提示音*/function callBack($from,$to,$customerSerNum,$fromSerNum,$promptTone,$alwaysPlay,$terminalDtmf,$userData,$maxCallTime,$hangupCdrUrl,$needBothCdr,$needRecord,$countDownTime,$countDownPrompt){//子帐号鉴权信息验证,对必选参数进行判空。$auth=$this->subAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'from':'$from','to':'$to','customerSerNum':'$customerSerNum','fromSerNum':'$fromSerNum','promptTone':'$promptTone','userData':'$userData','maxCallTime':'$maxCallTime','hangupCdrUrl':'$hangupCdrUrl','alwaysPlay':'$alwaysPlay','terminalDtmf':'$terminalDtmf','needBothCdr':'$needBothCdr','needRecord':'$needRecord','countDownTime':'$$countDownTime','countDownPrompt':'$countDownPrompt'}";}else{$body= "<CallBack><from>$from</from><to>$to</to><customerSerNum>$customerSerNum</customerSerNum><fromSerNum>$fromSerNum</fromSerNum><promptTone>$promptTone</promptTone><userData>$userData</userData><maxCallTime>$maxCallTime</maxCallTime><hangupCdrUrl>$hangupCdrUrl</hangupCdrUrl><alwaysPlay>$alwaysPlay</alwaysPlay><terminalDtmf>$terminalDtmf</terminalDtmf><needBothCdr>$needBothCdr</needBothCdr><needRecord>$needRecord</needRecord><countDownTime>$countDownTime</countDownTime><countDownPrompt>$countDownPrompt</countDownPrompt></CallBack>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->SubAccountSid . $this->SubAccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/SubAccounts/$this->SubAccountSid/Calls/Callback?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:子帐号Id + 英文冒号 + 时间戳$authen=base64_encode($this->SubAccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 外呼通知* @param to 被叫号码* @param mediaName 语音文件名称,格式 wav。与mediaTxt不能同时为空。当不为空时mediaTxt属性失效。* @param mediaTxt 文本内容* @param displayNum 显示的主叫号码* @param playTimes 循环播放次数,1-3次,默认播放1次。* @param respUrl 外呼通知状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知。* @param userData 用户私有数据* @param maxCallTime 最大通话时长* @param speed 发音速度* @param volume 音量* @param pitch 音调* @param bgsound 背景音编号*/function landingCall($to,$mediaName,$mediaTxt,$displayNum,$playTimes,$respUrl,$userData,$maxCallTime,$speed,$volume,$pitch,$bgsound){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'playTimes':'$playTimes','mediaTxt':'$mediaTxt','mediaName':'$mediaName','to':'$to','appId':'$this->AppId','displayNum':'$displayNum','respUrl':'$respUrl','userData':'$userData','maxCallTime':'$maxCallTime','speed':'$speed','volume':'$volume','pitch':'$pitch','bgsound':'$bgsound'}";}else{$body="<LandingCall><to>$to</to><mediaName>$mediaName</mediaName><mediaTxt>$mediaTxt</mediaTxt><appId>$this->AppId</appId><displayNum>$displayNum</displayNum><playTimes>$playTimes</playTimes><respUrl>$respUrl</respUrl><userData>$userData</userData><maxCallTime>$maxCallTime</maxCallTime><speed>$speed</speed><volume>$volume</volume><pitch>$pitch</pitch><bgsound>$bgsound</bgsound></LandingCall>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/LandingCalls?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 语音验证码* @param verifyCode 验证码内容,为数字和英文字母,不区分大小写,长度4-8位* @param playTimes 播放次数,1-3次* @param to 接收号码* @param displayNum 显示的主叫号码* @param respUrl 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知* @param lang 语言类型* @param userData 第三方私有数据*/function voiceVerify($verifyCode,$playTimes,$to,$displayNum,$respUrl,$lang,$userData){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'appId':'$this->AppId','verifyCode':'$verifyCode','playTimes':'$playTimes','to':'$to','respUrl':'$respUrl','displayNum':'$displayNum','lang':'$lang','userData':'$userData'}";}else{$body="<VoiceVerify><appId>$this->AppId</appId><verifyCode>$verifyCode</verifyCode><playTimes>$playTimes</playTimes><to>$to</to><respUrl>$respUrl</respUrl><displayNum>$displayNum</displayNum><lang>$lang</lang><userData>$userData</userData></VoiceVerify>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/VoiceVerify?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** IVR外呼* @param number 待呼叫号码,为Dial节点的属性* @param userdata 用户数据,在<startservice>通知中返回,只允许填写数字字符,为Dial节点的属性* @param record 是否录音,可填项为true和false,默认值为false不录音,为Dial节点的属性*/function ivrDial($number,$userdata,$record){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体$body=" <Request><Appid>$this->AppId</Appid><Dial number='$number' userdata='$userdata' record='$record'></Dial></Request>";$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/ivr/dial?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/xml","Content-Type:application/xml;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);$datas = simplexml_load_string(trim($result," \t\n\r"));// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 话单下载* @param date day 代表前一天的数据(从00:00 – 23:59)* @param keywords 客户的查询条件,由客户自行定义并提供给云通讯平台。默认不填忽略此参数*/function billRecords($date,$keywords){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'appId':'$this->AppId','date':'$date','keywords':'$keywords'}";}else{$body="<BillRecords><appId>$this->AppId</appId><date>$date</date><keywords>$keywords</keywords></BillRecords>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/BillRecords?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 主帐号信息查询*/function queryAccountInfo(){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/AccountInfo?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,"",$header,0);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 短信模板查询* @param date templateId 模板ID*/function QuerySMSTemplate($templateId){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'appId':'$this->AppId','templateId':'$templateId'}";}else{$body="<Request><appId>$this->AppId</appId><templateId>$templateId</templateId></Request>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SMS/QuerySMSTemplate?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 取消回拨* @param callSid 一个由32个字符组成的电话唯一标识符* @param type 0: 任意时间都可以挂断电话;1 :被叫应答前可以挂断电话,其他时段返回错误代码;2: 主叫应答前可以挂断电话,其他时段返回错误代码;默认值为0。*/function CallCancel($callSid,$type){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->subAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'appId':'$this->AppId','callSid':'$callSid','type':'$type'}";}else{$body="<CallCancel><appId>$this->AppId</appId><callSid>$callSid</callSid><type>$type</type></CallCancel>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->SubAccountSid . $this->SubAccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/SubAccounts/$this->SubAccountSid/Calls/CallCancel?sig=$sig";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->SubAccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 呼叫状态查询* @param callid 呼叫Id* @param action 查询结果通知的回调url地址*/function QueryCallState($callid,$action){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体if($this->BodyType=="json"){$body= "{'Appid':'$this->AppId','QueryCallState':{'callid':'$callid','action':'$action'}}";}else{$body="<Request><Appid>$this->AppId</Appid><QueryCallState callid ='$callid' action='$action'/></Request>";}$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/ivr/call?sig=$sig&callid=$callid";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 呼叫结果查询* @param callSid 呼叫Id*/function CallResult($callSid){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/CallResult?sig=$sig&callsid=$callSid";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 发送请求$result = $this->curl_post($url,"",$header,0);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 语音文件上传* @param filename 文件名* @param body 二进制串*/function MediaFileUpload($filename,$body){//主帐号鉴权信息验证,对必选参数进行判空。$auth=$this->accAuth();if($auth!=""){return $auth;}// 拼接请求包体$this->showlog("request body = ".$body);// 大写的sig参数$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));// 生成请求URL$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/MediaFileUpload?sig=$sig&appid=$this->AppId&filename=$filename";$this->showlog("request url = ".$url);// 生成授权:主帐户Id + 英文冒号 + 时间戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包头$header = array("Accept:application/$this->BodyType","Content-Type:application/octet-stream","Authorization:$authen");// 发送请求$result = $this->curl_post($url,$body,$header);$this->showlog("response body = ".$result);if($this->BodyType=="json"){//JSON格式$datas=json_decode($result);}else{ //xml格式$datas = simplexml_load_string(trim($result," \t\n\r"));}// if($datas == FALSE){
// $datas = new stdClass();
// $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误';
// }return $datas;}/*** 子帐号鉴权*/function subAuth(){if($this->ServerIP==""){$data = new stdClass();$data->statusCode = '172004';$data->statusMsg = 'IP为空';return $data;}if($this->ServerPort<=0){$data = new stdClass();$data->statusCode = '172005';$data->statusMsg = '端口错误(小于等于0)';return $data;}if($this->SoftVersion==""){$data = new stdClass();$data->statusCode = '172013';$data->statusMsg = '版本号为空';return $data;}if($this->SubAccountSid==""){$data = new stdClass();$data->statusCode = '172008';$data->statusMsg = '子帐号为空';return $data;}if($this->SubAccountToken==""){$data = new stdClass();$data->statusCode = '172009';$data->statusMsg = '子帐号令牌为空';return $data;}if($this->AppId==""){$data = new stdClass();$data->statusCode = '172012';$data->statusMsg = '应用ID为空';return $data;}}/*** 主帐号鉴权*/function accAuth(){if($this->ServerIP==""){$data = new stdClass();$data->statusCode = '172004';$data->statusMsg = 'IP为空';return $data;}if($this->ServerPort<=0){$data = new stdClass();$data->statusCode = '172005';$data->statusMsg = '端口错误(小于等于0)';return $data;}if($this->SoftVersion==""){$data = new stdClass();$data->statusCode = '172013';$data->statusMsg = '版本号为空';return $data;}if($this->AccountSid==""){$data = new stdClass();$data->statusCode = '172006';$data->statusMsg = '主帐号为空';return $data;}if($this->AccountToken==""){$data = new stdClass();$data->statusCode = '172007';$data->statusMsg = '主帐号令牌为空';return $data;}if($this->AppId==""){$data = new stdClass();$data->statusCode = '172012';$data->statusMsg = '应用ID为空';return $data;}}
}
SendTemplateSMS.php和CCPRestSDK.php放在App/Tool/SMS/下
M3Result.php:
<?phpnamespace App\Models;class M3Result {public $status;public $message;public function toJson(){return json_encode($this, JSON_UNESCAPED_UNICODE);}}
M3Result.php放在APP/Models下
调用方法:
$sendTemplateSMS = new SendTemplateSMS();
$sendTemplateSMS->sendTemplateSMS($phone,array($code, 60),1);//$phone:手机号,在容联云中填写的测试号码,$code:验证码,60:到期时间
这篇关于laravel5做手机验证码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!