php阿里云短信接口簽名參數(shù)生成Demo

詳細參考網(wǎng)址:https://help.aliyun.com/document_detail/56189.html?spm=5176.doc55359.6.568.4mdtA2

對照參數(shù)

生成的簽名
<?php  
session_start();  
header("Content-type:text/html; charset=UTF-8");  
  
function https_request($url)  
    {  
    $curl = curl_init();  
    curl_setopt($curl, CURLOPT_URL, $url);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
    $data = curl_exec($curl);  
    if (curl_errno($curl)) {return 'ERROR '.curl_error($curl);}  
    curl_close($curl);  
    return $data;  
    }  
function xml_to_array($xml){  
    $reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";  
    if(preg_match_all($reg, $xml, $matches)){  
        $count = count($matches[0]);  
        for($i = 0; $i < $count; $i++){  
        $subxml= $matches[2][$i];  
        $key = $matches[1][$i];  
            if(preg_match( $reg, $subxml )){  
                $arr[$key] = xml_to_array( $subxml );  
            }else{  
                $arr[$key] = $subxml;  
            }  
        }  
    }  
    return @$arr;  
}  

if(empty($mobile)){  
    //exit('手機號碼不能為空');  
}  
  
if(empty($_SESSION['send_code']) or $send_code!=$_SESSION['send_code']){  
    //防用戶惡意請求  
    //exit('請求超時屉栓,請刷新頁面后重試');  
}  
  
function percentEncode($str)  
{  
    // 使用urlencode編碼后孔轴,將"+","*","%7E"做替換即滿足ECS API規(guī)定的編碼規(guī)范  
    $res = urlencode($str);  
    $res = preg_replace('/\+/', '%20', $res);  
    $res = preg_replace('/\*/', '%2A', $res);  
    $res = preg_replace('/%7E/', '~', $res);  
    return $res;  
}  

function computeSignature($parameters, $accessKeySecret)  
{  
    // 將參數(shù)Key按字典順序排序  
    ksort($parameters);  
    // 生成規(guī)范化請求字符串  
    $canonicalizedQueryString = '';  
    foreach($parameters as $key => $value)  
    {  
    $canonicalizedQueryString .= '&' . percentEncode($key)  
        . '=' . percentEncode($value);  
    }  
    // 生成用于計算簽名的字符串 stringToSign  
    $stringToSign = 'GET&%2F&' . percentencode(substr($canonicalizedQueryString, 1));  
    //echo "<br>".$stringToSign."<br>";  
    // 計算簽名,注意accessKeySecret后面要加上字符'&'  
    $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));  
    return $signature;  
}  
// 注意使用GMT時間  
date_default_timezone_set("GMT");  
$target = "https://dysmsapi.aliyuncs.com/?";  
$dateTimeFormat = 'Y-m-d\TH:i:s\Z'; // ISO8601規(guī)范  
$accessKeyId = 'testId';      // 這里填寫您的Access Key ID  
$accessKeySecret = 'testSecret';  // 這里填寫您的Access Key Secret  
$ParamString="{\"customer\":\"test\"}";  

$data = array(  
    'AccessKeyId' => $accessKeyId,
    'Action' => 'SendSms',
    'Format' => 'XML', 
    'OutId' => '123', 
    'PhoneNumbers' => '15300000001',
    'RegionId' => 'cn-hangzhou',
    'SignName'=>'阿里云短信測試專用',
    'SignatureMethod' => 'HMAC-SHA1',
    'SignatureNonce'=> '45e25e9b-0a6f-4070-8c85-2956eda1b466',
    'SignatureVersion' => '1.0',
    'TemplateCode' => 'SMS_71390007', 
    'TemplateParam' => $ParamString,
    'Timestamp' => '2017-07-12T02:42:19Z',
    'Version' => '2017-05-25'
);  
// 計算簽名并把簽名結(jié)果加入請求參數(shù)  
//echo $data['Version']."<br>";  
//echo $data['Timestamp']."<br>";  
$data['Signature'] = computeSignature($data, $accessKeySecret);  
// 發(fā)送請求  
    $result = xml_to_array(https_request($target.http_build_query($data)));  
    echo $result['Error']['Code']."--->".$result['Error']['Message'];  
    echo "<br><br>".$target . http_build_query($data);  
?>
運行后的結(jié)果

生成的簽名編碼與阿里云短信接口提供的一致生音,算法驗證成功。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跨跨,一起剝皮案震驚了整個濱河市蔑舞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淹办,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恶复,死亡現(xiàn)場離奇詭異怜森,居然都是意外死亡,警方通過查閱死者的電腦和手機谤牡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門副硅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拓哟,你說我怎么就攤上這事想许。” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵流纹,是天一觀的道長糜烹。 經(jīng)常有香客問我,道長漱凝,這世上最難降的妖魔是什么疮蹦? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮茸炒,結(jié)果婚禮上愕乎,老公的妹妹穿的比我還像新娘。我一直安慰自己壁公,他們只是感情好感论,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著紊册,像睡著了一般比肄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上囊陡,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天芳绩,我揣著相機與錄音,去河邊找鬼撞反。 笑死妥色,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的遏片。 我是一名探鬼主播嘹害,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吮便!你這毒婦竟也來了吼拥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤线衫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后惑折,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體授账,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年惨驶,在試婚紗的時候發(fā)現(xiàn)自己被綠了白热。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡粗卜,死狀恐怖屋确,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤攻臀,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布焕数,位于F島的核電站,受9級特大地震影響刨啸,放射性物質(zhì)發(fā)生泄漏堡赔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一设联、第九天 我趴在偏房一處隱蔽的房頂上張望善已。 院中可真熱鬧,春花似錦离例、人聲如沸换团。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艘包。三九已至,卻和暖如春洒扎,著一層夾襖步出監(jiān)牢的瞬間辑甜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工袍冷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留磷醋,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓胡诗,卻偏偏與公主長得像邓线,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子煌恢,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容