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

相关文章

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k