#PHP# 華為雲 API 方式發送短信


使用給華為雲 消息 服務 API 方式發送短信

代碼來自華為雲,已通過測試

<?php
/**
 * 華為雲發送短信示例代碼
 * 本段代碼需要使用自己的配置信息才能正常運行,出配置信息外,不需要改動任何代碼內容即可運行
 * 
 * @version 0.1
 * @author   huawei cloud(https://support.huaweicloud.com/devg-msgsms/sms_04_0003.html)
 * 
 * 2019-03-05 IIS10 + PHP 7.2.5調試通過
 */

 //
 // 為避免誤調用而加入的提示,測試&部署時需移除本段代碼
 //
$tips = array(
            "code"=>"200",
            "msg"=>"Config ur info first",
            "time"=>date("h:i:sa")
        );
die(json_encode($tips));

//必填,請參考"開發准備"獲取如下數據,替換為實際值
$url = 'https://api.rtc.huaweicloud.com:10443/sms/batchSendSms/v1'; //APP接入地址+接口訪問URI
$APP_KEY = ''; //APP_Key
$APP_SECRET = ''; //APP_Secret
$sender = ''; //國內短信簽名通道號或國際/港澳台短信通道號
$TEMPLATE_ID = ''; //模板ID

//條件必填,國內短信關注,當templateId指定的模板類型為通用模板時生效且必填,必須是已審核通過的,與模板類型一致的簽名名稱
//國際/港澳台短信不用關注該參數
$signature = ''; //簽名名稱

//必填,全局號碼格式(包含國家碼),示例:+8615123456789,多個號碼之間用英文逗號分隔
$receiver = '+8615123456789,+8615123456789'; //短信接收人號碼

//選填,短信狀態報告接收地址,推薦使用域名,為空或者不填表示不接收狀態報告
$statusCallback = '';

/**
 * 選填,使用無變量模板時請賦空值 $TEMPLATE_PARAS = '';
 * 單變量模板示例:模板內容為"您的驗證碼是${NUM_6}"時,$TEMPLATE_PARAS可填寫為'["369751"]'
 * 雙變量模板示例:模板內容為"您有${NUM_2}件快遞請到${TXT_32}領取"時,$TEMPLATE_PARAS可填寫為'["3","人民公園正門"]'
 * 查看更多模板變量規則:常見問題>業務規則>短信模板內容審核標准
 * @var string $TEMPLATE_PARAS
 */
$TEMPLATE_PARAS = '["369751"]'; //模板變量,根據自身使用的模板,其值長度和個數與模板對應

//請求Headers
$headers = [
    'Content-Type: application/x-www-form-urlencoded',
    'Authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey"',
    'X-WSSE: ' . buildWsseHeader($APP_KEY, $APP_SECRET)
];
//請求Body
$data = http_build_query([
    'from' => $sender,
    'to' => $receiver,
    'templateId' => $TEMPLATE_ID,
    'templateParas' => $TEMPLATE_PARAS,
    'statusCallback' => $statusCallback,
//    'signature' => $signature //使用國內短信通用模板時,必須填寫簽名名稱
]);

$context_options = [
    'http' => ['method' => 'POST', 'header'=> $headers, 'content' => $data],
    'ssl' => ['verify_peer' => false, 'verify_peer_name' => false] //為防止因HTTPS證書認證失敗造成API調用失敗,需要先忽略證書信任問題
];
print_r($context_options) . PHP_EOL; //打印請求信息

$response = file_get_contents($url, false, stream_context_create($context_options));
print_r(json_decode($response)) . PHP_EOL; //打印響應信息

/**
 * 構造X-WSSE參數值
 * @param string $appKey
 * @param string $appSecret
 * @return string
 */
function buildWsseHeader(string $appKey, string $appSecret){
    date_default_timezone_set('Asia/Shanghai');
    $now = date('Y-m-d\TH:i:s\Z'); //Created
    $nonce = uniqid(); //Nonce
    $base64 = base64_encode(hash('sha256', ($nonce . $now . $appSecret))); //PasswordDigest
    return sprintf("UsernameToken Username=\"%s\",PasswordDigest=\"%s\",Nonce=\"%s\",Created=\"%s\"",
        $appKey, $base64, $nonce, $now);
}
?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM