1. 程式人生 > 其它 >Thinkphp6使用騰訊雲傳送簡訊步驟

Thinkphp6使用騰訊雲傳送簡訊步驟

1.前提條件
國內簡訊地址:https://console.cloud.tencent.com/smsv2

已開通簡訊服務,具體操作請參見 國內簡訊快速入門
如需傳送國內簡訊,需要先 購買國內簡訊套餐包
已準備依賴環境:PHP 5.6.33 及以上版本。
已在訪問管理控制檯 >API金鑰管理頁面獲取 SecretID 和 SecretKey。
SecretID 用於標識 API 呼叫者的身份。
SecretKey 用於加密簽名字串和伺服器端驗證簽名字串的金鑰,SecretKey 需妥善保管,避免洩露。

2.安裝 SDK
composer require tencentcloud/tencentcloud-sdk-php

3.檢視thinkphp6是否已經安裝成功了

4.在框架中,控制器中建立一個方法(sendSms),用於傳送簡訊

5.框架中引入傳送簡訊的類檔案

// 匯入對應產品模組的client
use TencentCloud\Sms\V20210111\SmsClient;
// 匯入要請求介面對應的Request類
use TencentCloud\Sms\V20210111\Models\SendSmsRequest;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Credential;
// 匯入可選配置類 use TencentCloud\Common\Profile\ClientProfile; use TencentCloud\Common\Profile\HttpProfile;

6.例項程式碼

public function sendSms(){
 try {
          /* 必要步驟:
             * 例項化一個認證物件,入參需要傳入騰訊雲賬戶金鑰對secretId,secretKey。
             * 這裡採用的是從環境變數讀取的方式,需要在環境變數中先設定這兩個值。
             * 你也可以直接在程式碼中寫死金鑰對,但是小心不要將程式碼複製、上傳或者分享給他人,
             * 以免洩露金鑰對危及你的財產安全。
             * CAM密匙查詢: https://console.cloud.tencent.com/cam/capi
*/ /********************************************1.secretId,secretKey***********************************************/ $cred = new Credential("XXX", "YYY"); //$cred = new Credential(getenv("TENCENTCLOUD_SECRET_ID"), getenv("TENCENTCLOUD_SECRET_KEY")); // 例項化一個http選項,可選的,沒有特殊需求可以跳過 $httpProfile = new HttpProfile(); // 配置代理 // $httpProfile->setProxy("https://ip:port"); $httpProfile->setReqMethod("GET"); // post請求(預設為post請求) $httpProfile->setReqTimeout(30); // 請求超時時間,單位為秒(預設60秒) $httpProfile->setEndpoint("sms.tencentcloudapi.com"); // 指定接入地域域名(預設就近接入) // 例項化一個client選項,可選的,沒有特殊需求可以跳過 $clientProfile = new ClientProfile(); $clientProfile->setSignMethod("TC3-HMAC-SHA256"); // 指定簽名演算法(預設為HmacSHA256) $clientProfile->setHttpProfile($httpProfile); // 例項化要請求產品(以sms為例)的client物件,clientProfile是可選的 // 第二個引數是地域資訊,可以直接填寫字串 ap-guangzhou,或者引用預設的常量 $client = new SmsClient($cred, "ap-guangzhou", $clientProfile); // 例項化一個 sms 傳送簡訊請求物件,每個介面都會對應一個request物件。 $req = new SendSmsRequest(); /* 填充請求引數,這裡request物件的成員變數即對應介面的入參 * 你可以通過官網介面文件或跳轉到request物件的定義處檢視請求引數的定義 * 基本型別的設定: * 幫助連結: * 簡訊控制檯: https://console.cloud.tencent.com/smsv2 * sms helper: https://cloud.tencent.com/document/product/382/3773 */ /************************ 2.簡訊應用ID: 簡訊SdkAppId在 [簡訊控制檯] 新增應用後生成的實際SdkAppId,示例如1400006666 */ $req->SmsSdkAppId = "1400616870"; /**************************3.簡訊簽名內容: 使用 UTF-8 編碼,必須填寫已稽核通過的簽名,簽名信息可登入 [簡訊控制檯] 檢視 */ $req->SignName = "芒果魚個人網"; /* 簡訊碼號擴充套件號: 預設未開通,如需開通請聯絡 [sms helper] */ $req->ExtendCode = ""; /* 下發手機號碼,採用 E.164 標準,+[國家或地區碼][手機號] * 示例如:+8613711112222, 其中前面有一個+號 ,86為國家碼,13711112222為手機號,最多不要超過200個手機號*/ /**************************4.手機號*****************************/ $req->PhoneNumberSet = array("+8615238831671"); /* 國際/港澳臺簡訊 SenderId: 國內簡訊填空,預設未開通,如需開通請聯絡 [sms helper] */ $req->SenderId = ""; /* 使用者的 session 內容: 可以攜帶使用者側 ID 等上下文資訊,server 會原樣返回 */ $req->SessionContext = "xxx"; /****************************5.模板 ID: 必須填寫已稽核通過的模板 ID。模板ID可登入 [簡訊控制檯] 檢視 */ $req->TemplateId = "1262642"; /****************************6.模板變數 模板引數: 若無模板引數,則設定為空*/ $code = mt_rand(1000,9999); $req->TemplateParamSet = array($code); // 通過client物件呼叫SendSms方法發起請求。注意請求方法名與請求物件是對應的 // 返回的resp是一個SendSmsResponse類的例項,與請求物件對應 $resp = $client->SendSms($req); // 輸出json格式的字串回包 print_r($resp->toJsonString()); } catch(TencentCloudSDKException $e) { echo $e; } }

7.傳送成功後的響應收據

"SendStatusSet":[{"SerialNo":"2997:184567926916409342794633167","PhoneNumber":"+8615238831671","Fee":1,"SessionContext":"xxx","Code":"Ok","Message":"send success","IsoCode":"CN"}],"RequestId":"0922c611-4392-48f2-8619-4cfa9657155c"}