php實現阿里雲API短信驗證發送代碼

//參數說明  
//$RecNum 目標手機號  
//$ParamString 短信模板中的變量;數字需要轉換爲字符串;個人用戶每個變量長度必須小於15個字符。  
//$SignName 管理控制檯中配置的短信簽名(狀態必須是驗證通過)  
//$TemplateCode 管理控制檯中配置的審覈通過的短信模板的模板CODE(狀態必須是驗證通過)  
//$AccessKeyId 阿里雲頒發給用戶的訪問服務所用的密鑰ID  
//$AccessKeySecret 阿里雲頒發給用戶的訪問服務所用的驗證串  
//返回值  
//發送成功返回true,結果僅供參數,不保證完全正確  
function SendSMS($RecNum,$ParamString,$SignName,$TemplateCode,$AccessKeyId,$AccessKeySecret)  
{  
  $url='https://sms.aliyuncs.com/';//短信網關地址  
  $Params['Action']='SingleSendSms';//操作接口名,系統規定參數,取值:SingleSendSms  
  //$Params['RegionId']='cn-hangzhou';//機房信息  
  $Params['AccessKeyId']=$AccessKeyId;//阿里雲頒發給用戶的訪問服務所用的密鑰ID  
  //$Params['Format']='JSON';//返回值的類型,支持JSON與XML。默認爲XML  
  $Params['ParamString']=rawurlencode($ParamString);//短信模板中的變量;數字需要轉換爲字符串;個人用戶每個變量長度必須小於15個字符。  
  $Params['RecNum']=$RecNum;//目標手機號  
  $Params['SignatureMethod']='HMAC-SHA1';//簽名方式,目前支持HMAC-SHA1  
  $Params['SignatureNonce']=time();//唯一隨機數  
  $Params['SignatureVersion']='1.0';//簽名算法版本,目前版本是1.0  
  $Params['SignName']=rawurlencode($SignName);//管理控制檯中配置的短信簽名(狀態必須是驗證通過)  
  $Params['TemplateCode']=$TemplateCode;//管理控制檯中配置的審覈通過的短信模板的模板CODE(狀態必須是驗證通過)  
  $Params['Timestamp']=rawurlencode(gmdate("Y-m-d\TH:i:s\Z"));//請求的時間戳。日期格式按照ISO8601標準表示,  
                                                              //並需要使用UTC時間。格式爲YYYY-MM-DDThh:mm:ssZ  
  $Params['Version']='2016-09-27';//API版本號,當前版本2016-09-27  
  ksort($Params);  
  $PostData='';  
  foreach ($Params as $k => $v) $PostData.=$k.'='.$v.'&';  
  $PostData.='&Signature='.rawurlencode(base64_encode(hash_hmac('sha1','POST&%2F&'.rawurlencode(substr($PostData,0,-1)),$AccessKeySecret.'&',true)));  
  $httphead['http']['method']="POST";  
  $httphead['http']['header']="Content-type:application/x-www-form-urlencoded\n";  
  $httphead['http']['header'].="Content-length:".strlen($PostData)."\n";  
  $httphead['http']['content']=$PostData;  
  $httphead=stream_context_create($httphead);  
  $result=@simplexml_load_string(file_get_contents($url,false,$httphead));  
  return !isset($result->Code);  
}  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章