ThinkPHP5.0 中使用荣联云通讯

本文详细介绍了如何在ThinkPHP5.0项目中集成荣联云通讯服务,包括注册荣联云账号、充值、创建短信模板、下载官方Demo并放置到extend目录、修改REST接口配置以及调用接口发送短信的步骤。
摘要由CSDN通过智能技术生成

1.注册荣联云

https://www.yuntongxun.com/doc.html

2.充钱

3.新增短信模板(只有完成首冲300元才能使用)

4.待审核通过后下载官方给的Demo

 5.下载Demo后在放到tp中的extend目录下

我这里把CCPRestSDK和SendTemplateSMS分别改成了REST,SendCode 

(注意:这里改不改都行,随你开心)

6.更改REST (注意:我把接口配置都写在函数里了)

你们可以在application/extra中配置自己phone.php

<?php 
 /**
  *发送手机验证码
  */
 
return [
	
   'accountSid' => "",   //主帐号
   
   'accountToken' =>'' , //主帐号Token
           
   'appId' => "",         //应用Id           
   
   'serverIP' => 'app.cloopen.com',   //请求地址,格式如下,不需要写https://      
  
   'serverPort' => '8883',            //请求端口 
   
   'softVersion'=>'2013-12-26',       //REST版本号
 
 
];

配置完phone.php后

下面这个应该都能用,复制就行了,如果不能用那么就恭喜你中奖了

<?php
/*
 *  Copyright (c) 2014 The CCP project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license
 *  that can be found in the LICENSE file in the root of the web site.
 *
 *   http://www.yuntongxun.com
 *
 *  An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */
namespace phone;

class REST {
  private $AccountSid;
  private $AccountToken;
  private $AppId;
  private $SubAccountSid;
  private $SubAccountToken; 
  private $ServerIP;
  private $ServerPort;
  private $SoftVersion;
  private $Batch;  //时间sh
  private $BodyType = "xml";//包体格式,可填值:json 、xml
  private $enabeLog = true; //日志开关。可填值:true、
  private $Filename="../log.txt"; //日志文件
  private $Handle; 
  function __construct($ServerIP,$ServerPort,$SoftVersion)  
  {
    $this->Batch = date("YmdHis");
    $this->ServerIP = config('phone.serverIP');             //请求地址
    $this->ServerPort = config('phone.serverPort');         //请求端口 
    $this->SoftVersion = config('phone.softVersion');       //REST版本号
        $this->Handle = fopen($this->Filename, 'a');
  }

   /**
    * 设置主帐号
    * 
    * @param AccountSid 主帐号
    * @param AccountToken 主帐号Token
    */    
    function setAccount($AccountSid,$AccountToken){
      $this->AccountSid = config('phone.accountSid');         //你的主帐号
      $this->AccountToken = config('phone.accountToken');    //你的主帐号Token
    }
    
   /**
    * 设置子帐号
    * 
    * @param SubAccountSid 子帐号
    * @param SubAccountToken 子帐号Token
    */    
    function setSubAccount($SubAccountSid,$SubAccountToken){
      $this->SubAccountSid = $SubAccountSid;
      $this->SubAccountToken = $SubAccountToken;    
    }
    
   /**
    * 设置应用ID
    * 
    * @param AppId 应用ID
    */
    function setAppId($AppId){
       $this->AppId = config('phone.appId');    //你的应用ID
    }
    
   /**
    * 打印日志
    * 
    * @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>
      
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值