laravel5做手机验证码

2023-10-09 06:40
文章标签 手机 验证码 laravel5

本文主要是介绍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做手机验证码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/171029

相关文章

Spring 验证码(kaptcha)

首先引入需要的jar包: <dependency><groupId>com.github.axet</groupId><artifactId>kaptcha</artifactId><version>0.0.9</version></dependency> 配置验证码相关设置: <bean id="captchaProducer" class="com.

cell phone teardown 手机拆卸

tweezer 镊子 screwdriver 螺丝刀 opening tool 开口工具 repair 修理 battery 电池 rear panel 后盖 front and rear cameras 前后摄像头 volume button board 音量键线路板 headphone jack 耳机孔 a cracked screen 破裂屏 otherwise non-functiona

想要从OPPO手机恢复数据?免费OPPO照片视频恢复软件

此实用程序可帮助那些寻找以下内容的用户: 在OPPO手机中格式化存储卡后可以恢复图片吗?我删除了 OPPO上的视频和图片,我感觉很糟糕,因为里面有我在拉斯维加斯拍摄的视频和照片 免费OPPO照片视频恢复软件 您能恢复OPPO上已删除的照片吗?我不小心格式化了OPPO SD 卡,有希望恢复已删除的照片吗? 救命!我在清理时删除了我的照片,我的问题是是否有任何免费软件可以从OPPO中恢复已

图片验证码

导入依赖 <dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.25</version></dependency></dependencies> 代码 @Servicepublic class ValidateCodeService

P11019 「LAOI-6」[太阳]] 请使用最新版手机 QQ 体验新功能

English statement. You must submit your code at the Chinese version of the statement. 题目描述 你的 QQ 收到了一条新消息!但是你很生气,因为你看不到别人在手机 QQ 上发送的超级表情。 消息形如一个字符串 S,包含且仅包含一个超级表情。具体地,我们将 S 的拼音采用驼峰命名法,可以化为如下形

使用kaptcha验证码生成工具生成验证码

文章目录 maven引入jar包配置使用前端 maven引入jar包 <!--验证码生成工具--><dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency> 配置 /*** Kaptcha验证

手机扬声器音量总是不够大?试试“扬声器助推器”吧

手机的扬声器音量总是不够大,尤其是在嘈杂的环境中,音乐和视频的声音总是不太清晰。直到我发现了这款“扬声器助推器”,我的手机音质瞬间提升了好几个档次。 软件简介: “扬声器助推器”利用先进的音频处理技术,能够提高手机扬声器的音量,让声音更加清晰响亮。此外,还可以设置最大允许增强量,避免音量过大损坏扬声器。 版本特点: 提升音量效果显著,音质清晰。可以自定义最大增强量,保护扬声器。 使用体

用手机做抢答器 低预算知识竞赛活动的选择

使用手机作为抢答器是低预算竞赛活动的一个理想选择。随着智能手机的普及,传统抢答器已经被手机抢答器所替代,这种转变不仅降低了成本,而且提供了更大的灵活性和便利性。通过手机扫码登录竞赛软件,参赛者可以直接在手机上进行抢答和答题,这种方式无需购买软件,只需要一台能上网的电脑连接大屏即可。知识竞赛在线租用系统通常包括后台管理、大屏展示、选手客户端三部分,通过租用方式使用系统,用户无需准备服务器硬件、相

Anroid BLE蓝牙(手机分别作为中心设备和外围设备)

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。  BLE蓝牙模块主要应用领域     1、移动扩展设备     2、汽车电子设备     3、健康医疗用品:心跳带、血压计等     4、定位应用:室内定位、井下定位等     5、近距离数据采集:无线

使用Charles对安卓手机进行抓包

写在前面的话 Charles 介绍 Charles 的主要功能 网络请求拦截与分析 Charles 通过将自己配置成系统的代理服务器,拦截所有通过它的 HTTP 和 HTTPS 请求与响应。开发者可以查看每个网络请求的详细信息,包括请求的 URL、请求头、请求体、响应头、响应体、状态码等,便于调试和分析网络通信问题。 SSL 抓包 Charles 支持 HTTPS 协议的抓包。通过安装