国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

基于PHP實(shí)現(xiàn)短信驗(yàn)證碼接口(容聯(lián)運(yùn)通訊)

2024-05-04 23:49:35
字體:
供稿:網(wǎng)友

自己也是剛剛研究,希望對也在研究的伙伴有幫助。

步驟:

1、登錄榮聯(lián)運(yùn)通訊注冊獲取ACCOUNT SID、AUTH TOKEN、Rest URL(生產(chǎn))、AppID(默認(rèn));

2、注冊測試用手機(jī)號碼(先注冊測試號碼方可使用);

3、下載demo示例,并將代碼放到項(xiàng)目中(最好單獨(dú)建文件夾存儲)。

代碼區(qū):

一、新建test.app.php(測試用控制器)

<?php/** 短信接口測試*/class TestApp extends ShoppingbaseApp{public function index(){$this->display('test.html');}public function get_info(){include_once(ROOT_PATH.'/includes/rly_message/rest.app.php');//引入模板文件//主帳號,對應(yīng)開官網(wǎng)發(fā)者主賬號下的 ACCOUNT SID$accountSid = '';//主帳號令牌,對應(yīng)官網(wǎng)開發(fā)者主賬號下的 AUTH TOKEN$accountToken = '';//應(yīng)用Id,在官網(wǎng)應(yīng)用列表中點(diǎn)擊應(yīng)用,對應(yīng)應(yīng)用詳情中的APP ID//在開發(fā)調(diào)試的時候,可以使用官網(wǎng)自動為您分配的測試Demo的APP ID$appId ='';//請求地址//沙盒環(huán)境(用于應(yīng)用開發(fā)調(diào)試):sandboxapp.cloopen.com//生產(chǎn)環(huán)境(用戶應(yīng)用上線使用):app.cloopen.com$serverIP ='app.cloopen.com';//請求端口,生產(chǎn)環(huán)境和沙盒環(huán)境一致$serverPort ='8883';//REST版本號,在官網(wǎng)文檔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);//手機(jī)號碼,替換內(nèi)容數(shù)組,模板ID}}/*** 發(fā)送模板短信* @param to 手機(jī)號碼集合,用英文逗號分開* @param datas 內(nèi)容數(shù)據(jù) 格式為數(shù)組 例如:array('Marry','Alon'),如不需替換請?zhí)?null* @param $tempId 模板Id,測試應(yīng)用和未上線應(yīng)用使用測試模板請?zhí)顚?,正式應(yīng)用上線后填寫已申請審核通過的模板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);// 發(fā)送模板短信echo "Sending TemplateSMS to $to <br/>";$result = $rest->sendTemplateSMS($to,$datas,$tempId);if($result == NULL ) {echo "result error!";exit();}if($result->statusCode!=0) {echo "error code :" . $result->statusCode . "<br>";echo "error msg :" . $result->statusMsg . "<br>";//TODO 添加錯誤處理邏輯}else{echo "Sendind TemplateSMS success!<br/>";// 獲取返回信息$smsmessage = $result->TemplateSMS;echo "dateCreated:".$smsmessage->dateCreated."<br/>";echo "smsMessageSid:".$smsmessage->smsMessageSid."<br/>";//TODO 添加成功處理邏輯}}}

二、模板文件(rest.app.php可根據(jù)自己使用的框架重新命名,也可直接使用demo原先的名字)

<?phpclass RestApp {private $AccountSid ; private $AccountToken ; private $AppId ; private $ServerIP; // ='app.cloopen.com'private $ServerPort ; //='8883'private $SoftVersion ; // ='2013-12-26'private $Batch; //時間戳private $BodyType = "xml";//包體格式,可填值:json 、xmlprivate $enabeLog = true; //日志開關(guān)??商钪担簍rue、private $Filename="./log.txt"; //日志文件private $Handle; function __construct($ServerIP,$ServerPort,$SoftVersion) {$this->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');}/*** 設(shè)置主帳號* * @param AccountSid 主帳號* @param AccountToken 主帳號Token*/ function setAccount($AccountSid,$AccountToken){$this->AccountSid = $AccountSid;$this->AccountToken = $AccountToken; }/*** 設(shè)置應(yīng)用ID* @param AppId 應(yīng)用ID*/function setAppId($AppId){$this->AppId = $AppId; }/*** 打印日志* * @param log 日志內(nèi)容*/function showlog($log){if($this->enabeLog){fwrite($this->Handle,$log."/n"); }}/*** 發(fā)起HTTPS請求*/function curl_post($url,$data,$header,$post=1){//初始化curl$ch = curl_init();//參數(shù)設(shè)置 $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/":/"網(wǎng)絡(luò)錯誤/"}";} else {$result = "<?xml version=/"1.0/" encoding=/"UTF-8/" standalone=/"yes/"?><Response><statusCode>172001</statusCode><statusMsg>網(wǎng)絡(luò)錯誤</statusMsg></Response>"; } }curl_close($ch);return $result;} /*** 發(fā)送模板短信* @param to 短信接收彿手機(jī)號碼集合,用英文逗號分開* @param datas 內(nèi)容數(shù)據(jù)* @param $tempId 模板Id*/ function sendTemplateSMS($to,$datas,$tempId){//主帳號鑒權(quán)信息驗(yàn)證,對必選參數(shù)進(jìn)行判空。//$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參數(shù) $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);// 生成授權(quán):主帳戶Id + 英文冒號 + 時間戳。$authen = base64_encode($this->AccountSid . ":" . $this->Batch);// 生成包頭 $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");// 發(fā)送請求$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 = '返回包體錯誤'; // }//重新裝填數(shù)據(jù)if($datas->statusCode==0){if($this->BodyType=="json"){$datas->TemplateSMS =$datas->templateSMS;unset($datas->templateSMS); }}return $datas; } /*** 主帳號鑒權(quán)*/ 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 = '應(yīng)用ID為空';return $data;} }}?>

三、前臺模板代碼(test.html)

<div style="height:100px;border:1px solid gray;text-align:center;padding-top:20px;"><form action="" method="post">請輸入手機(jī)號碼:<input type="text" name="phone_mob" ><input type="button" name="btn" value="點(diǎn)擊獲取驗(yàn)證碼"><br />輸入驗(yàn)證碼:<input type="text" name="yzm" value=""><br /><input type="submit" name="sbt" value="提交"></form></div>

四、js代碼

<script type="text/javascript">$(function(){$('input[name=btn]').on('click',function(){var phone_mob = $('input[name=phone_mob]').val();$.ajax({type: "GET",url: "index.php?app=test&act=get_info",//請求后臺的URL地址dataType: "json",data:{'phone_mob' : phone_mob},success:function(data){if(data.done && data.retval){ //console.log(data.retval);alert('成功!');}}});}); });</script>

以上所述是小編給大家介紹的基于PHP實(shí)現(xiàn)短信驗(yàn)證碼接口(容聯(lián)運(yùn)通訊),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 汉寿县| 盱眙县| 晋江市| 芷江| 准格尔旗| 临西县| 沂水县| 兰坪| 三门县| 南宁市| 安平县| 东方市| 咸阳市| 山阳县| 正阳县| 桃源县| 桓台县| 和林格尔县| 米脂县| 禹州市| 甘南县| 台北县| 崇义县| 吉木萨尔县| 隆德县| 东阿县| 白沙| 洞头县| 祁东县| 天镇县| 耒阳市| 南丰县| 抚宁县| 朔州市| 正定县| 民县| 天全县| 隆子县| 滦南县| 五家渠市| 兴义市|