1. 程式人生 > >TP5呼叫阿里雲簡訊介面實現傳送簡訊功能

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]);