搜索
首页php教程php手册短信验证码接口(容联运通讯)

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

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

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

代码区:

一、新建test.app.php(测试用控制器)

<?php
/*
 * 短信接口测试
 */
class TestApp extends ShoppingbaseApp{
    public function index(){
        $this->display(&#39;test.html&#39;);
    }
    public function get_info()
    {
        include_once(ROOT_PATH.&#39;/includes/rly_message/rest.app.php&#39;);//引入模板文件
        //主帐号,对应开官网发者主账号下的 ACCOUNT SID
        $accountSid = &#39;&#39;;
        //主帐号令牌,对应官网开发者主账号下的 AUTH TOKEN
        $accountToken = &#39;&#39;;
        //应用Id,在官网应用列表中点击应用,对应应用详情中的APP ID
        //在开发调试的时候,可以使用官网自动为您分配的测试Demo的APP ID
        $appId =&#39;&#39;;
        //请求地址
        //沙盒环境(用于应用开发调试):sandboxapp.cloopen.com
        //生产环境(用户应用上线使用):app.cloopen.com
        $serverIP =&#39;app.cloopen.com&#39;;
        //请求端口,生产环境和沙盒环境一致
        $serverPort =&#39;8883&#39;;
        //REST版本号,在官网文档REST介绍中获得。
        $softVersion =&#39;2013-12-26&#39;;
        //global $accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion;
        $phone_mob = isset($_GET[&#39;phone_mob&#39;]) ? $_GET[&#39;phone_mob&#39;] : &#39;&#39;;
        if($phone_mob){
            $this->sendTemplateSMS($phone_mob,array(&#39;3519&#39;,&#39;5&#39;),"1",$accountSid,$accountToken,$appId,$serverIP,$serverPort,$softVersion);//手机号码,替换内容数组,模板ID
        }
    }
    
  /**
  * 发送模板短信
  * @param to 手机号码集合,用英文逗号分开
  * @param datas 内容数据 格式为数组 例如:array(&#39;Marry&#39;,&#39;Alon&#39;),如不需替换请填 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 <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可根据自己使用的框架重新命名,也可直接使用demo原先的名字)

<?php
class RestApp {
    private $AccountSid ;   
    private $AccountToken ;  
    private $AppId ;         
    private $ServerIP;       // =&#39;app.cloopen.com&#39;
    private $ServerPort ;    //=&#39;8883&#39;
    private $SoftVersion ;   // =&#39;2013-12-26&#39;
    private $Batch;  //时间戳
    private $BodyType = "xml";//包体格式,可填值:json 、xml
    private $enabeLog = true; //日志开关。可填值:true、
    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, &#39;a&#39;);
    }
    
   /**
    * 设置主帐号
    * 
    * @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==&#39;json&#39;){
                $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 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. "&#39;".$datas[$i]."&#39;,"; 
            }
            $body= "{&#39;to&#39;:&#39;$to&#39;,&#39;templateId&#39;:&#39;$tempId&#39;,&#39;appId&#39;:&#39;$this->AppId&#39;,&#39;datas&#39;:[".$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 = &#39;172003&#39;;
//            $datas->statusMsg = &#39;返回包体错误&#39;; 
//        }
        //重新装填数据
        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 = &#39;172004&#39;;
            $data->statusMsg = &#39;IP为空&#39;;
          return $data;
        }
        if($this->ServerPort<=0){
            $data = new stdClass();
            $data->statusCode = &#39;172005&#39;;
            $data->statusMsg = &#39;端口错误(小于等于0)&#39;;
          return $data;
        }
        if($this->SoftVersion==""){
            $data = new stdClass();
            $data->statusCode = &#39;172013&#39;;
            $data->statusMsg = &#39;版本号为空&#39;;
          return $data;
        } 
        if($this->AccountSid==""){
            $data = new stdClass();
            $data->statusCode = &#39;172006&#39;;
            $data->statusMsg = &#39;主帐号为空&#39;;
          return $data;
        }
        if($this->AccountToken==""){
            $data = new stdClass();
            $data->statusCode = &#39;172007&#39;;
            $data->statusMsg = &#39;主帐号令牌为空&#39;;
          return $data;
        }
        if($this->AppId==""){
            $data = new stdClass();
            $data->statusCode = &#39;172012&#39;;
            $data->statusMsg = &#39;应用ID为空&#39;;
          return $data;
        }   
   }
}
?>

三、前台模板代码(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>

四、js代码

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

相关文章:

基于PHP实现短信验证码接口

PHP集成发送手机短信验证码、语音验证码接口函数及使用方法

天翼开放平台免费短信验证码接口使用实例

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。