TP3.2.3 接入阿里sms 短信接口
2018-06-22 05:37:40来源:未知 阅读 ()
阿里云短信接口
配置文件
config.php
//阿里大鱼 'Ali_SMS' =>array( 'sms_temp' =>'短信模板', 'sms_sign' =>'签名', 'appkey' =>'appkey', 'secretKey'=>'secretKey', ),
TestController.php
Vendor('alisms.Alisms'); $alisms = new \Alisms(C('Ali_SMS.appkey'),C('Ali_SMS.secretKey')); $mobile = $phone; $temp_code = C('Ali_SMS.sms_temp'); $paramString = '{"code":"'.$code.'"}'; $alisms->signName = C('Ali_SMS.sms_sign'); $re = $alisms->smsend($mobile,$temp_code,$paramString); if($re['Code'] =='OK'){ $info['status'] = 1; $info['info'] = '短信发送成功!'; echo json_encode($info); exit; }else{ $info['info'] = '短信发送失败'; $info['status'] = 0; echo json_encode($info); exit; }
Alisms.php
<?php /** * 阿里云短信接口 * @author 墨白<453885726@qq.com> * 示例 * $alisms = new \Common\Model\Alisms($accessKeyId,$accessKeySecret); * $mobile = '18788830181'; * $code = 'SMS_36225243'; * $paramString = '{"code":"344556"}'; * $re = $alisms->smsend($mobile,$code,$paramString); * print_r($re); * */ class Alisms{ public $config = array( 'Format' =>'json', //返回值的类型,支持JSON与XML。默认为XML 'Version' =>'2017-05-25', //API版本号,为日期形式:YYYY-MM-DD,本版本对应为2016-09-27 'SignatureMethod' =>'HMAC-SHA1', //签名方式,目前支持HMAC-SHA1 'SignatureVersion'=>'1.0', ); private $accessKeySecret; private $http = 'http://dysmsapi.aliyuncs.com';//https://sms.aliyuncs.com/'; //短信接口 private $dateTimeFormat = 'Y-m-d\TH:i:s\Z'; public $signName = '短信签名'; //管理控制台中配置的短信签名(状态必须是验证通过) public $method = 'GET'; /** *发送短信 *@AccessKeyId 阿里云申请的 Access Key ID *@AccessKeySecret 阿里云申请的 Access Key Secret */ function __construct($accessKeyId,$accessKeySecret){ $this->config['AccessKeyId'] = $accessKeyId; $this->AccessKeySecret = $accessKeySecret; } /** *发送短信 *@mobile 目标手机号,多个手机号可以逗号分隔 *@code 短信模板的模板CODE *@ParamString 短信模板中的变量;,参数格式{“no”:”123456”}, 个人用户每个变量长度必须小于15个字符 */ public function smsend($mobile,$code,$ParamString){ $apiParams = $this->config; $apiParams["Action"] = 'SendSms';//'SingleSendSms'; $apiParams['TemplateCode'] = $code; //短信模板的模板CODE //$apiParams['RecNum'] = $mobile; //目标手机号,多个手机号可以逗号分隔 //$apiParams['ParamString'] = $ParamString; //短信模板中的变量;,此参数传递{“no”:”123456”}, 个人用户每个变量长度必须小于15个字符 $apiParams['SignName'] = $this->signName; //管理控制台中配置的短信签名(状态必须是验证通过) date_default_timezone_set("GMT"); $apiParams["Timestamp"] = date($this->dateTimeFormat); $apiParams["SignatureNonce"] = md5(md5('wbh').rand(100000,999999).uniqid()); //唯一随机数 $apiParams['RegionId'] = 'cn-hangzhou'; $apiParams['PhoneNumbers'] = $mobile; $apiParams['TemplateParam'] = $ParamString; $apiParams["Signature"] = $this->computeSignature($apiParams, $this->AccessKeySecret);//签名 $tag = '?'; $requestUrl = $this->http; foreach ($apiParams as $apiParamKey => $apiParamValue){ $requestUrl .= $tag."$apiParamKey=" . urlencode($apiParamValue); $tag = '&'; } return $this->postSMS($requestUrl); } private function postSMS($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch); return json_decode($output,true); /* $opts = array( 'http'=>array( 'method'=>$this->method, 'timeout'=>600, 'header'=>'Content-Type: application/x-www-form-urlencoded', ) ); $html = file_get_contents($url, false, stream_context_create($opts)); if($html){ return json_decode($html,true); }else{ return false; }*/ } //生成取短信签名 private function computeSignature($parameters, $accessKeySecret){ ksort($parameters); $canonicalizedQueryString = ''; foreach($parameters as $key => $value){ $canonicalizedQueryString .= '&' . $this->percentEncode($key). '=' . $this->percentEncode($value); } $stringToSign = $this->method.'&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1)); $signature = $this->signString($stringToSign, $accessKeySecret."&"); return $signature; } protected function percentEncode($str){ $res = urlencode($str); $res = preg_replace('/\+/', '%20', $res); $res = preg_replace('/\*/', '%2A', $res); $res = preg_replace('/%7E/', '~', $res); return $res; } private function signString($source, $accessSecret){ return base64_encode(hash_hmac('sha1', $source, $accessSecret, true)); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:php数组常用函数
下一篇:CDN的作用与基本过程
- ThinkPHP 在阿里云上的nginx.config配置实例详解 2019-12-25
- 阿里云轻量应用服务器 搭建配置详解 2019-01-01
- Hexo博客部署到个人服务器 2018-07-24
- tp5 接入腾讯对象存储COS 2018-06-22
- PHP开发实用-阿里短信服务(Short Message Service) 2018-06-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash