<?php
class AliMessage
{
private $sign_name = '';
private $template_code = '';
private $phone_number = '';
private $access_key_id = '';
private $access_key_secret = '';
private $template_param = [];
private $url = 'https://dysmsapi.aliyuncs.com/?';
function __construct($shop_id,$phone,$template_code,$access_key_id,$access_key_secret,$sign_name){
$this->template_param = [
'name' => '123' ,
'place_order' => date("Y-m-d H:i:s") ,
'shop_name' => ''
];
$this->phone_number = $phone;
$this->template_code = $template_code;
$this->access_key_id = $access_key_id;
$this->access_key_secret = $access_key_secret;
$this->sign_name = $sign_name;
}
public function getSend()
{
date_default_timezone_set("UTC");
$msg = [];
$msg['AccessKeyId'] = $this->access_key_id;// 密钥ID
$msg['Action'] = 'SendSms';// API名称
$msg['Format'] = 'json';// 返回数据类型
$msg['SignatureMethod'] = 'HMAC-SHA1';// 加密方式
$msg['SignatureNonce'] = uniqid();// 随机数
$msg['SignatureVersion'] = '1.0';// 版本号
$msg['Timestamp'] = date(DATE_ISO8601,time());// 请求时间 ISO8601标准
$msg['Version'] = '2017-05-25';// 版本日期
$msg['PhoneNumbers'] = $this->phone_number;// 手机号码
$msg['SignName'] = $this->sign_name;// 短信签名名称
$msg['TemplateCode'] = $this->template_code;// 短信模板ID
$msg['TemplateParam'] = json_encode($this->template_param, JSON_UNESCAPED_UNICODE);// 短信模板变量
$msg['Signature'] = $this->MakeSign($msg); // 签名
$url = $this->url.http_build_query($msg);
$data = $this->https_request($url);
$arr = json_decode($data,true);
if ($arr['Message'] == 'OK' && $arr['Code'] == 'OK') {
return true;
}
return false;
}
private function MakeSign($data)
{
//签名步骤一:按字典序排序参数
ksort($data);
$string = http_build_query($data);
$string = 'GET&'.urlencode("/").'&'.urlencode($string);
return $this->ShaSign($string);
}
private function ShaSign($str){
$signatrue = "";
$signature = base64_encode(hash_hmac("sha1", $str, $this->access_key_secret."&", true));
return $signature;
}
/**
* curl请求
*/
private function https_request($url,$data=null,$time_out=60,$out_level="s",$headers=array())
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_NOSIGNAL, 1);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
if($out_level=="s") {
//超时以秒设置
curl_setopt($curl, CURLOPT_TIMEOUT,$time_out);//设置超时时间
}elseif ($out_level=="ms"){
curl_setopt($curl, CURLOPT_TIMEOUT_MS,$time_out); //超时毫秒,curl 7.16.2中被加入。从PHP 5.2.3起可使用
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
if($headers){
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//如果有header头 就发送header头信息
}
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
}
php阿里云短信
于 2021-01-21 18:02:11 首次发布