php 阿里云 批量 单个 发送短信 (拿来即用)
官方:
错误码解析文档:https://help.aliyun.com/knowledge_detail/57717.html?spm=5176.11065259.1996646101.searchclickresult.2b5c60d4XBpIKC&aly_as=ytfSoeY-
短信文档:https://help.aliyun.com/document_detail/102364.html?spm=a2c4g.11186623.6.623.5e107535L4cPef
/*阿里云短信*//*单个发送短信*/public function sendMessageOne(){$AccessKeyId = '';$accessKeySecret = '';$Timestamp = gmdate ('Y-m-d\TH:i:s\Z' );$TemplateCode = '模版CODE';$SignName = '签名名称';$PhoneNumbers = '手机号';$TemplateParam = ['code'=>'随机验证码'];$TemplateParam = json_encode($TemplateParam);$parameters = ['AccessKeyId'=>$AccessKeyId,'Action'=>'SendSms','Format'=>'josn','RegionId'=>'cn-hangzhou','SignatureMethod'=>'HMAC-SHA1','SignatureNonce'=>'45e25e9b-0a6f-4070-8cda--5-29'.$this->createMyCode(),//随机字符串'SignatureVersion'=>'1.0','Timestamp'=>$Timestamp,'Version'=>'2017-05-25','TemplateCode'=>$TemplateCode,'PhoneNumbers'=>$PhoneNumbers,'SignName'=>$SignName,'TemplateParam'=>$TemplateParam,];$parameters['Signature'] = $this->computeSignature($parameters,$accessKeySecret);// 发送请求$target = "https://dysmsapi.aliyuncs.com/?";$result = $this->xml_to_array($this->https_request($target.http_build_query($parameters)));dump($result);die;}/*批量发送短信*/public function sendMessageAll(){$AccessKeyId = '';$accessKeySecret = '';$Timestamp = gmdate ('Y-m-d\TH:i:s\Z' );$TemplateCode = '模板code';$sign_name = '签名名称';$PhoneNumberJson = ['手机号'];$SignNameJson = [];$templateParamJson = [];foreach ($PhoneNumberJson as $k=>$v){$SignNameJson[] = $sign_name;$templateParamJson[] = ['name'=>$TemplateCode];}$PhoneNumberJson = json_encode($PhoneNumberJson);$SignNameJson = json_encode($SignNameJson);$templateParamJson = json_encode($templateParamJson);$parameters = ['AccessKeyId'=>$AccessKeyId,'Action'=>'SendBatchSms','Format'=>'josn','RegionId'=>'cn-hangzhou','SignatureMethod'=>'HMAC-SHA1','SignatureNonce'=>'45e25e9b-0a6f-4070-8cda--5-29'.$this->createMyCode(),//随机字符串'SignatureVersion'=>'1.0','Timestamp'=>$Timestamp,'Version'=>'2017-05-25','PhoneNumberJson'=>$PhoneNumberJson,'SignNameJson'=>$SignNameJson,'TemplateCode'=>$TemplateCode,'templateParamJson'=>$templateParamJson,];$parameters['Signature'] = $this->computeSignature($parameters,$accessKeySecret);// 发送请求$target = "https://dysmsapi.aliyuncs.com/?";$result = $this->xml_to_array($this->https_request($target.http_build_query($parameters)));dump($result);die;}public function computeSignature($parameters,$accessKeySecret){// 将参数Key按字典顺序排序ksort($parameters);// 生成规范化请求字符串$canonicalizedQueryString = '';foreach($parameters as $key => $value) {$canonicalizedQueryString .= '&' . $this->percentEncode($key) . '=' . $this->percentEncode($value);}// 生成用于计算签名的字符串 stringToSign$stringToSign = 'GET&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1));// 计算签名,注意accessKeySecret后面要加上字符'&'$signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));return $signature;}public function percentEncode($str){// 使用urlencode编码后,将"+","*","%7E"做替换即满足ECS API规定的编码规范$res = urlencode($str);$res = preg_replace('/\+/', '%20', $res);$res = preg_replace('/\*/', '%2A', $res);$res = preg_replace('/%7E/', '~', $res);return $res;}public 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;}public 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] = $this->xml_to_array( $subxml );}else{$arr[$key] = $subxml;}}}return @$arr;}/*随机邀请码*/public function createMyCode(){$count = 0;do {$code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';$rand = $code[rand(0,25)].strtoupper(dechex(date('m'))).date('d').substr(time(),-5).substr(microtime(),2,5).sprintf('%02d',rand(0,99));for($a = md5( $rand, true ),$s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',$d = '',$f = 0;$f < 8;$g = ord( $a[ $f ] ),$d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],$f++);$count = $d; //保证生成的邀请码不会重复,查询表是否存在此邀请码} while ($count > 0);return $d;}
php 阿里云 批量 单个 发送短信 (拿来即用)相关推荐
- 阿里云接口实现发送短信验证码
java 阿里云接口实现发送短信验证码 1. 阿里云后台配置短信相关 1.1 开通短信服务 1.2 添加模板签名 1.3 创建秘钥 1.4 短信需要后台授权--注意点 2 java--简单实现短信验证 ...
- 基于MFC与阿里云制作简易发送短信
***~~ 做到最后可能会只是不能识别汉字,但是能识别英文和数字,有待改进的地方` ` ~~ *** # 详细步骤见如下 一. 新建一个MFC项目:打开VS2013,文件->新建->项目 ...
- 阿里云API定时发送短信(小记)
定时任务的代码:import com.google.gson.Gson; import com.jianke.bid.common.SMSUtils; import org.springframewo ...
- java 阿里云接口实现发送短信验证码
1.先去阿里云开通短信服务: 2.添加模板及签名:需要审核,个人账户审核就几分钟就OK 先解释一下模板及签名: 标准参照:https://help.aliyun.com/document_detail ...
- 使用阿里云短信通知服务发送短信--工具类
public class AliyunUtils {public static boolean sendSMS(String mobilephone,Integer status) throws Se ...
- Yii2 + 阿里云 后台配置发送短信
1.登录阿里云账号之后 首先鼠标移动到你的头像上 点击AccessKey之后 创建 2.找到短信服务这里 申请签名 和 模板 3.登录yii2框架后台 填写上相对应的信息. 4.在控制器中: publ ...
- 移动云mas-sdk方式发送短信
移动云mas-sdk方式发送短信 https://mas.ecloud.10086.cn/ 因业务需要,发送短信的方式由http方式改为sdk,项目使用springboot 云mas账号 http原有 ...
- 阿里云短信服务不对个人开放?如何在阿里云市场免费购买短信服务?云市场购买到的短信服务如何使用?(以谷粒学院项目为例)
问题描述: 在做谷粒学院项目时,需要使用阿里云的短信服务用于注册验证,但是阿里云的短信服务目前不对个人开放了,看到弹幕说可以在云市场购买,于是果断尝试了一把,这过程中又遇到头疼的依赖版本兼容问题,好在 ...
- 阿里云验证码与通知短信
1.入住阿里云 首先,注册阿里云账号或者快捷登陆 其次,实名认证 根据情况选择是企业还是个人用户(以个人用户为例) 然后选择个人支付宝授权认证 最后,根据实际情况填写个人信息 2.开通短信服务 首先, ...
- 阿里云——Java实现手机短信验证码功能
目录 如何实现短信验证码功能 1.准备工作 1.1 注册 阿里云 账号,并完成实名认证.找到短信服务功能. 1.2 开通短信服务 1.3 签名与模板 1.4 获取AccessKey 1.5 打开短信控 ...
最新文章
- 802.11帧聚合技术
- 逻辑分析仪上位机DSview的简单触发设置
- AI Fintech 驱动智能金融时代到来
- boost::safe_numerics::automatic相关的测试程序
- 从历史角度讲现代数学
- Java Hashtable containsValue()方法与示例
- autojs长按坐标没反应_Auto.js 一个主要由无障碍服务实现的不需要Root权限的类似按键精灵的自动操作软件...
- using和名空间namespace
- 分形与数据结构第一篇(神奇的色子)
- 【Python】一句话 if else 简洁写法
- HDFS API操作的访问方式及JUnit测试类的使用
- sqlplus操作命令
- 安防互联网摄像头视频流媒体服务器EasyNVR对接海康流媒体V4.X客户端实现方法
- 2022-2027年中国酒店餐饮行业市场调研及未来发展趋势预测报告
- 汉字笔顺字帖在线生成器网站源码
- @RunWith注解找不到,怎么办?
- 如何成为名副其实的测试架构师?
- matlab用switch画出分段函数,matlab用switch语句绘出分段函数 在 的图像
- SOYO的主板如何进入BIOS系统
- linux下文件结构收藏