Thinkphp6使用騰訊雲傳送簡訊步驟
阿新 • • 發佈:2022-03-18
1.前提條件
國內簡訊地址:https://console.cloud.tencent.com/smsv2
已開通簡訊服務,具體操作請參見 國內簡訊快速入門。
如需傳送國內簡訊,需要先 購買國內簡訊套餐包。
已準備依賴環境:PHP 5.6.33 及以上版本。
已在訪問管理控制檯 >API金鑰管理頁面獲取 SecretID 和 SecretKey。
SecretID 用於標識 API 呼叫者的身份。
SecretKey 用於加密簽名字串和伺服器端驗證簽名字串的金鑰,SecretKey 需妥善保管,避免洩露。
2.安裝 SDKcomposer 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"}