Steps: 1. Log in to Ronglianyun Communication to register and obtain ACCOUNT SID, AUTH TOKEN, Rest URL (production), AppID (default);
2. Register a mobile phone number for testing (first register a test number before using it);
3. Download the demo example and put the code into the project (it is best to create a separate folder for storage).
Code area:
1. Create new test.app.php (controller for testing)
<?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');//引入模板文件 //主帳號,對應開官網發(fā)者主賬號下的 ACCOUNT SID $accountSid = ''; //主帳號令牌,對應官網開發(fā)者主賬號下的 AUTH TOKEN $accountToken = ''; //應用Id,在官網應用列表中點擊應用,對應應用詳情中的APP ID //在開發(fā)調試的時候,可以使用官網自動為您分配的測試Demo的APP ID $appId =''; //請求地址 //沙盒環(huán)境(用于應用開發(fā)調試):sandboxapp.cloopen.com //生產環(huán)境(用戶應用上線使用):app.cloopen.com $serverIP ='app.cloopen.com'; //請求端口,生產環(huán)境和沙盒環(huán)境一致 $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 } } /** * 發(fā)送模板短信 * @param to 手機號碼集合,用英文逗號分開 * @param datas 內容數據 格式為數組 例如:array('Marry','Alon'),如不需替換請?zhí)?null * @param $tempId 模板Id,測試應用和未上線應用使用測試模板請?zhí)顚?,正式應用上線后填寫已申請審核通過的模板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 添加成功處理邏輯 } } }
2. Template file (rest.app.php can be renamed according to the framework you use, or you can use it directly demo’s original name)
<?php class 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 、xml private $enabeLog = true; //日志開關??商钪担簍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'); } /** * 設置主帳號 * * @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"); } } /** * 發(fā)起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; } /** * 發(fā)送模板短信 * @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"); // 發(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 = '返回包體錯誤'; // } //重新裝填數據 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; } } } ?>
Three, front-end template code (test.html)
<p style="height:100px;border:1px solid gray;text-align:center;padding-top:20px;"> <form action="" method="post"> 請輸入手機號碼:<input type="text" name="phone_mob" ><input type="button" name="btn" value="點擊獲取驗證碼"><br /> 輸入驗證碼:<input type="text" name="yzm" value=""><br /> <input type="submit" name="sbt" value="提交"> </form> </p>
Four, js code
<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>
Related articles:
Implementing SMS verification code interface based on PHP
Tianyi open platform free SMS verification code interface usage examples

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)
