TP5調用阿里雲短信接口實現發送短信功能

因爲項目中需要用到阿里雲短信驗證碼功能,所以就購買了相應的短信包進行測試,以下就是完整代碼:

use Aliyun\Core\Config;  
use Aliyun\Core\Profile\DefaultProfile;  
use Aliyun\Core\DefaultAcsClient;  
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; 
/**
 * 短信發送
 * @param $to    接收人
 * @param $model    短信模板ID
 * @param $code   短信驗證碼
 * @return json
 * @說明:有優惠,先領卷在購買,不謝!https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=ob1nyal1
 */
function send_sms($to, $model, $code){
    require_once '../extend/alisms/vendor/autoload.php';
    Config::load(); //加載區域結點配置  
    $config = '根據你的實際情況讀取配置文件或讀取數據庫,本項目是將配置寫入數據庫實現';
    $accessKeyId = '你的AccessKeyID';
    $accessKeySecret = '你的AccessKeySecret';
    $templateParam = $code;
    //短信簽名  
    $signName = $config['sign_name'];
    //短信模板ID 
    switch($model){
        case 1:
            $templateCode = $config['model_code_rl']; // 註冊登錄短信驗證碼模板
        break;
        case 2:
            $templateCode = $config['model_code_reset']; // 重置密碼短信驗證碼模板
        break;
    }
    //短信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($to);  
    // 必填,設置簽名名稱  
    $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); 
    // 具體返回值參考文檔:https://help.aliyun.com/document_detail/55451.html?spm=a2c4g.11186623.6.563.YSe8FK
    return $result; 
}
以下列舉詳細步驟:

在開始之前你必須在阿里雲控制檯中將你的accessKeyId、accessKeySecret獲取並紀錄起來,如果你的賬戶沒有開啓AccessKey需要進行開啓操作:

1、登錄阿里雲控制檯。
 
2、將鼠標放在右上方的用戶名區域,在彈出的快捷菜單中選擇accesskeys。
 
3、系統彈出安全提示對話框,單擊繼續使用AccessKey。頁面顯示AccessKeyId和AccessKeySecret。
其次,你需要申請好對應的模板及簽名,然後在進行以下操作。

第一步:下載PHP短信發送Dome,將文件夾api_sdk複製到你的項目extend目錄下,並任意重命名;

第二步:在你項目應用公共(函數)文件common.php頭部添加

use Aliyun\Core\Config;  
use Aliyun\Core\Profile\DefaultProfile;  
use Aliyun\Core\DefaultAcsClient;  
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; 
第三步:將封裝好的函數寫入common.php中

/**
 * 短信發送
 * @param $to    接收人
 * @param $model    短信模板ID
 * @param $code   短信驗證碼
 * @return json
 * @說明:有優惠,先領卷在購買,不謝!https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=ob1nyal1
 */
function send_sms($to, $model, $code){
    require_once '../extend/alisms/vendor/autoload.php';
    Config::load(); //加載區域結點配置  
    $config = '根據你的實際情況讀取配置文件或讀取數據庫,本項目是將配置寫入數據庫實現';
    $accessKeyId = '你的AccessKeyID';
    $accessKeySecret = '你的AccessKeySecret';
    $templateParam = $code;
    //短信簽名  
    $signName = $config['sign_name'];
    //短信模板ID 
    switch($model){
        case 1:
            $templateCode = $config['model_code_rl']; // 註冊登錄短信驗證碼模板
        break;
        case 2:
            $templateCode = $config['model_code_reset']; // 重置密碼短信驗證碼模板
        break;
    }
    //短信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($to);  
    // 必填,設置簽名名稱  
    $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); 
    // 具體返回值參考文檔:https://help.aliyun.com/document_detail/55451.html?spm=a2c4g.11186623.6.563.YSe8FK
    return $result; 
}
第四步:在你需要用到的控制器中調用send_sms(‘電話號碼’,‘短信模板’,‘需要替換的變量’),OK大功告成!

$send = send_sms($sender, 1, ['code'=>$code]);
--------------------- 
作者:白山老楊 
來源:CSDN 
原文:https://blog.csdn.net/list_yang/article/details/81626593 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章