阿里云短信发送接口php版

技术分享 2019-10-01 00:00:00
从腾讯的短信平台换到阿里云,就是图的他的稳定一看php的demo和sdk就傻眼了,妈啊,发个短信还要弄个短信sdk?
php载入一大堆文件,那还能有效率,阿里果然是java系的多,php程序员都是java硬转过来的吧


别的不说上php代码,一个函数搞定的事情://发送手机短信
//test
echo send_MM('18801079XX4',"北京小瓶科技","SMS_86355020",'{"code":"12369"}');

//发送成功返回true,结果仅供参数,不保证完全正确
function send_MM($PhoneNumbers,$SignName,$TemplateCode,$ParamString,$AccessKeyId='LTAIy0srVZ5b4A',$AccessKeySecret='61LcnzVoW3CPYeBqTWvpLrNWQN')
{
$url='https://dysmsapi.aliyuncs.com/';//短信网关地址
$Params='SendSms';//操作接口名,系统规定参数,取值:SendSms
$Params='cn-hangzhou';//机房信息
$Params=$AccessKeyId;//阿里云颁发给用户的访问服务所用的密钥ID
$Params="JSON";//返回值的类型,支持JSON与XML。默认为XML
$Params=$ParamString;//短信模板中的变量;数字需要转换为字符串;个人用户每个变量长度必须小于15个字符。
$Params=$PhoneNumbers;//目标手机号
$Params='HMAC-SHA1';//签名方式,目前支持HMAC-SHA1
$Params=uniqid();//唯一随机数
$Params='1.0';//签名算法版本,目前版本是1.0
$Params=$SignName;//管理控制台中配置的短信签名(状态必须是验证通过)
$Params=$TemplateCode;//管理控制台中配置的审核通过的短信模板的模板CODE(状态必须是验证通过)
$Params=gmdate("Y-m-d\TH:i:s\Z");
$Params='2017-05-25';//API版本号,当前版本2017-05-25
ksort($Params);

$sortedQueryStringTmp = "";
foreach ($Params as $key => $value) {
$sortedQueryStringTmp .= "&" . aliyunmsgencode($key) . "=" . aliyunmsgencode($value);
}
$stringToSign = "GET&%2F&" . aliyunmsgencode(substr($sortedQueryStringTmp, 1));
$sign = base64_encode(hash_hmac("sha1", $stringToSign, $AccessKeySecret . "&",true));
$signature = aliyunmsgencode($sign);

$url = $url."?Signature={$signature}{$sortedQueryStringTmp}";
//echo $url;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(substr($url, 0,5) == 'https') {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
$rtn = curl_exec($ch);
if($rtn === false) {
trigger_error(": " . curl_error($ch), E_USER_ERROR);
}
curl_close($ch);
//var_dump($rtn);
$rtnobj = json_decode($rtn);
return $rtnobj->Message;
}
function aliyunmsgencode($str){
$res = urlencode($str);
$res = preg_replace("/\+/", "%20", $res);
$res = preg_replace("/\*/", "%2A", $res);
$res = preg_replace("/%7E/", "~", $res);
return $res;
}
返回OK 发送成功
阿里和腾讯很多技术细节很坑的啊,最近差点被weex坑死,果断facebook reactnative了,微信api坑也不少
咨询小瓶科技
咨询我们
顶部