ThinkPHP3.2.3中集成阿里大於短信發送SDK

SDK集成,步驟以下:
1.下載SDK工具包  SDK&DEMO[下載地址]php

2.將壓縮包解壓,拷貝出文件夾「api_sdk」,並將文件夾重命名爲「dysms」,放入本身的工程項目json

3.在用到此服務的控制器文件頭部,引入相應的模塊api

use Aliyun\Core\Config;  
use Aliyun\Core\Profile\DefaultProfile;  
use Aliyun\Core\DefaultAcsClient;  
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;

4.代碼實現短信發送app

/** 
 * 判斷輸入的字符串是不是手機號 
 * @return [bool]   true || false 
 */  
function isPhoneNum($mobile){  
    if(!preg_match("/^1[34578]{1}\d{9}$/",$mobile)){  
      return false;  
    }  
    return true;  
}  
  
/** 
 * 發送驗證碼 
 * @param string $mobile    接收手機號 
 * @param string $code      驗證碼 
 * @return array 
 */  
public function sendMsg($mobile,$code){  
    if( empty($mobile) || empty($code) ) return array('Message'=>'缺乏參數','Code'=>'Error');  
    if(!isPhoneNum($mobile)) return array('Message'=>'無效的手機號','Code'=>'Error');  
      
    require_once APP_ROOT.'/Api/dysms/vendor/autoload.php';  
    Config::load();             //加載區域結點配置  
      
    $config = C('dysms');       //取出參數配置  
  
    $accessKeyId = $config['alims_appkey'];  
    $accessKeySecret = $config['alims_appsecret'];  
    $templateParam = array("code"=>$code);           //模板變量替換  
    $signName = (empty($config['signname'])?'阿里大於測試專用':$config['signname']);  
    $templateCode = $config['notice_templateid'];   //短信模板ID  
      
      
    //短信API產品名(短信產品名固定,無需修改)  
    $product = "Dysmsapi";  
    //短信API產品域名(接口地址固定,無需修改)  
    $domain = "dysmsapi.aliyuncs.com";  
    //暫時不支持多Region(目前僅支持cn-hangzhou請勿修改)  
    $region = "cn-hangzhou";  
      
    // 初始化用戶Profile實例  
    $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);  
    // 增長服務結點  
    DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);  
    // 初始化AcsClient用於發起請求  
    $acsClient= new DefaultAcsClient($profile);  
      
    // 初始化SendSmsRequest實例用於設置發送短信的參數  
    $request = new SendSmsRequest();  
    // 必填,設置雉短信接收號碼  
    $request->setPhoneNumbers($mobile);  
  
    // 必填,設置簽名名稱  
    $request->setSignName($signName);  
  
    // 必填,設置模板CODE  
    $request->setTemplateCode($templateCode);  
  
    // 可選,設置模板參數  
    if($templateParam) {  
        $request->setTemplateParam(json_encode($templateParam));  
    }  
      
    //發起訪問請求  
    $acsResponse = $acsClient->getAcsResponse($request);  
      
    //返回請求結果  
    $result = json_decode(json_encode($acsResponse),true);  
    return $result;  
}
相關文章
相關標籤/搜索