基于PHP实现短信验证码接口的方法
阅读原文时间:2023年07月08日阅读:2

步骤:

1、登录荣联运通讯注册获取ACCOUNT SID、AUTH TOKEN、Rest URL(生产)、AppID(默认);

2、注册测试用手机号码(先注册测试号码方可使用);

3、下载demo示例,并将代码放到项目中(最好单独建文件夹存储)。

代码区:

display('test.html'); } public function get\_info() { include\_once(ROOT\_PATH.'/includes/rly\_message/rest.app.php');//引入模板文件 //主帐号,对应开官网发者主账号下的 ACCOUNT SID $accountSid = ''; //主帐号令牌,对应官网开发者主账号下的 AUTH TOKEN $accountToken = ''; //应用Id,在官网应用列表中点击应用,对应应用详情中的APP ID //在开发调试的时候,可以使用官网自动为您分配的测试Demo的APP ID $appId =''; //请求地址 //沙盒环境(用于应用开发调试):sandboxapp.cloopen.com //生产环境(用户应用上线使用):app.cloopen.com $serverIP ='app.cloopen.com'; //请求端口,生产环境和沙盒环境一致 $serverPort ='8883'; //REST版本号,在官网文档REST介绍中获得。 $softVersion ='2013-12-26'; //global $accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion; $phone\_mob = isset($\_GET\['phone\_mob'\]) ? $\_GET\['phone\_mob'\] : ''; if($phone\_mob){ $this->sendTemplateSMS($phone\_mob,array('3519','5'),"1",$accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion);//手机号码,替换内容数组,模板ID } } /\*\* \* 发送模板短信 \* @param to 手机号码集合,用英文逗号分开 \* @param datas 内容数据 格式为数组 例如:array('Marry','Alon'),如不需替换请填 null \* @param $tempId 模板Id,测试应用和未上线应用使用测试模板请填写1,正式应用上线后填写已申请审核通过的模板ID \*/ public function sendTemplateSMS($to,$datas,$tempId,$accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion) { // 初始化REST SDK $rest = new RestApp($serverIP,$serverPort,$softVersion); $rest->setAccount($accountSid,$accountToken); $rest->setAppId($appId); // 发送模板短信 echo "Sending TemplateSMS to $to
"; $result = $rest->sendTemplateSMS($to,$datas,$tempId); if($result == NULL ) { echo "result error!"; exit(); } if($result->statusCode!=0) { echo "error code :" . $result->statusCode . "
"; echo "error msg :" . $result->statusMsg . "
"; //TODO 添加错误处理逻辑 }else{ echo "Sendind TemplateSMS success!
"; // 获取返回信息 $smsmessage = $result->TemplateSMS; echo "dateCreated:".$smsmessage->dateCreated."
"; echo "smsMessageSid:".$smsmessage->smsMessageSid."
"; //TODO 添加成功处理逻辑 } } } **二、模板文件(rest.app.php可根据自己使用的框架重新命名,也可直接使用demo原先的名字)** RestApp($ServerIP,$ServerPort,$SoftVersion); } function RestApp($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; } /\*\* \* 设置应用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 = "172001网络错误"; } } curl\_close($ch); return $result; } /\*\* \* 发送模板短信 \* @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".$datas\[$i\].""; } $body=" $to $this->AppId $tempId ".$data." "; } $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; } /\*\* \* 主帐号鉴权 \*/ 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; } } } ?>

三、前台模板代码(test.html)

请输入手机号码:
输入验证码:

四、js代码

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器