天天看點

關于短信功能開發說明通用版流程說明(不限開發語言)

1.這裡以騰訊雲為例(php版本),其他平台的也都是類似(例如阿裡雲),有的平台有自己規則(看平台的具體說明)

 完整sdk檔案,官方的缺少檔案下載下傳:https://download.csdn.net/download/mo3408/85534634

如果出現後面調用報錯,請下載下傳cacert.pem這個檔案放置php安裝目錄,修改目前php版本的php.ini檔案

curl.cainfo =D:\phpstudy_pro\Extensions\php\cacert.pem(修改成你自己的路徑)

證書問題

如果您的 PHP 環境證書有問題,可能會遇到報錯,類似于

cURL error 60: See http://curl.haxx.se/libcurl/c/libcurl-errors.html

,請嘗試按以下步驟解決:

  1. 到 https://curl.haxx.se/ca/cacert.pem 下載下傳證書檔案

    cacert.pem

    ,将其儲存到 PHP 安裝路徑下。
  2. 編輯

    php.ini

    檔案,删除

    curl.cainfo

    配置項前的分号注釋符(;),值設定為儲存的證書檔案

    cacert.pem

    的絕對路徑。
  3. 重新開機依賴 PHP 的服務。

2.首先增加通路權限(阿裡雲也是一樣)

       已在通路管理控制台 >API密鑰管理頁面擷取 SecretID 和 SecretKey。

  • SecretID 用于辨別 API 調用者的身份。
  • SecretKey 用于加密簽名字元串和伺服器端驗證簽名字元串的密鑰,SecretKey 需妥善保管,避免洩露

3.購買短信包(根據自己需求購買)

4.最重要的一步申請短信簽名和短信模闆,根據應用場景申請,例如使用者登入短信驗證碼申請等(多寫一些,不然可能不會通過)

5.将下載下傳的sdk引入項目(如何引入這裡不具體說明,根據項目的需求引入)

6.可以寫個公共發送的方法(修改如下方法)

<?php
require_once '/path/to/vendor/autoload.php';
// 導入對應産品子產品的client
use TencentCloud\Cvm\V20170312\CvmClient;
// 導入要請求接口對應的Request類
use TencentCloud\Cvm\V20170312\Models\DescribeInstancesRequest;
use TencentCloud\Cvm\V20170312\Models\Filter;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Credential;
// 導入可選配置類
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;

try {
    // 執行個體化一個證書對象,入參需要傳入騰訊雲賬戶secretId,secretKey
    $cred = new Credential("secretId", "secretKey");

    // 執行個體化一個http選項,可選的,沒有特殊需求可以跳過
    $httpProfile = new HttpProfile();
    // 配置代理
    // $httpProfile->setProxy("https://ip:port");
    $httpProfile->setReqMethod("GET");  // post請求(預設為post請求)
    $httpProfile->setReqTimeout(30);    // 請求逾時時間,機關為秒(預設60秒)
    $httpProfile->setEndpoint("cvm.ap-shanghai.tencentcloudapi.com");  // 指定接入地域域名(預設就近接入)

    // 執行個體化一個client選項,可選的,沒有特殊需求可以跳過
    $clientProfile = new ClientProfile();
    $clientProfile->setSignMethod("TC3-HMAC-SHA256");  // 指定簽名算法(預設為HmacSHA256)
    $clientProfile->setHttpProfile($httpProfile);

    // 執行個體化要請求産品(以cvm為例)的client對象,clientProfile是可選的
    $client = new CvmClient($cred, "ap-shanghai", $clientProfile);

    // 執行個體化一個cvm執行個體資訊查詢請求對象,每個接口都會對應一個request對象。
    $req = new DescribeInstancesRequest();

    // 填充請求參數,這裡request對象的成員變量即對應接口的入參
    // 你可以通過官網接口文檔或跳轉到request對象的定義處檢視請求參數的定義
    $respFilter = new Filter();  // 建立Filter對象, 以zone的次元來查詢cvm執行個體
    $respFilter->Name = "zone";
    $respFilter->Values = ["ap-shanghai-1", "ap-shanghai-2"];
    $req->Filters = [$respFilter];  // Filters 是成員為Filter對象的清單

    // 通過client對象調用DescribeInstances方法發起請求。注意請求方法名與請求對象是對應的
    // 傳回的resp是一個DescribeInstancesResponse類的執行個體,與請求對象對應
    $resp = $client->DescribeInstances($req);

    // 輸出json格式的字元串回包
    print_r($resp->toJsonString());

    // 也可以取出單個值。
    // 你可以通過官網接口文檔或跳轉到response對象的定義處檢視傳回字段的定義
    print_r($resp->TotalCount);
}
catch(TencentCloudSDKException $e) {
    echo $e;
}      

7.測試發送就可以了

路是自己走出來的,而不是選出來的。