laravel+阿里大于实现发送验证码短信

一、短信服务使用阿里大于提供的短信接口

阿里大于官方网站上的接入流程:

在阿里大于申请接口后,需要做以下操作:

  1. 申请签名
  2. 申请短信模板
  3. 创建Accesskey,可以通过权限最大的Accesskey创建子Accesskey,便于权限控制
  4. 充值,如果账户中余额不足的话,是发布出去短信的

二、在laravel中使用阿里大于接口

之前在laravel中使用composer安装阿里大于的扩展包,但是尝试之后,一直返回code=11的错误码,是扩展包的权限不足,具体原因还未找到

然后就在laravel引入官方提供的skd包,下面介绍具体在laravel中使用官方sdk包的过程:

  1. 从官网上下载php版短信服务的skd包,解压后有四个文件夹,分别是:api_demo,api_sdk,msg_demo,msg_sdk
  2. 在laravel中根目录下的 app文件夹下新建一个文件夹 libs,把api_sdk和msg_sdk复制到libs文件夹下.
  3. 利用composer自动加载文件     关于laravel利用composer自动加载介绍,请参考:http://laravelacademy.org/post/7074.html
  4. 找到项目根目录下的composer.json文件,利用composer的classmap选项加载

然后执行 composer dumpautoload

  1. 代码:
    1. 之后用就实例化调用方法就可以了。
  1 <?php
  2 
  3 
  4 
  5   //use 命名空间+类名
  6 
  7     use Aliyun\Core\Config;  //命名空间 Aliyun\Core  类名是 Config  (命名空间不必一定存在)
  8     use Aliyun\Core\Profile\DefaultProfile;
  9     use Aliyun\Core\DefaultAcsClient;
 10     use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
 11     use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;
 12 
 13 
 14     use App\Http\Controllers\Controller;
 15 
 16 
 17 
 18 
 19     // 加载区域结点配置
 20     Config::load();
 21 
 22 
 23     class SmsController extends Controller 
 24     {
 25 
 26 
 27         /**
 28          * 构造器
 29          * @param string $accessKeyId    必填,AccessKeyId
 30          * @param string $accessKeySecret 必填,AccessKeySecret
 31          */
 32         public function __construct($accessKeyId="######",$accessKeySecret="#######")
 33         {
 34 
 35 
 36             // 短信API产品名
 37              $product = "Dysmsapi";
 38 
 39 
 40             // 短信API产品域名
 41              $domain = "dysmsapi.aliyuncs.com";
 42 
 43 
 44               // 暂时不支持多Region
 45              $region = "cn-hangzhou";
 46 
 47 
 48               // 服务结点
 49              $endPointName = "cn-hangzhou";
 50 
 51 
 52               // 初始化用户Profile实例
 53              $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
 54 
 55 
 56               // 增加服务结点
 57              DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);
 58 
 59 
 60               // 初始化AcsClient用于发起请求
 61              $this->acsClient = new DefaultAcsClient($profile);
 62 
 63 
 64         }
 65 
 66 
 67 
 68 
 69         /**
 70          *  发送短信范例
 71          * @param  [type] $phoneNumbers 必填, 短信接收号码
 72          * @param  string $signName    必填, 短信签名,应严格"签名名称"填写,
 73          * @param  string $templateCode  必填, 短信模板Code,应严格按"模板CODE"填写,
 74          * @param  [type] $outId        选填, 假如模板中存在变量需要替换则为必填项
 75          * @return [type]               [description]
 76          */
 77         public function sendSms($phoneNumbers,$signName="XX软件",$templateCode="SMS_XXXXXX",$outId=null)
 78         {
 79 
 80 
 81              // 初始化SendSmsRequest实例用于设置发送短信的参数
 82             $request = new SendSmsRequest;
 83 
 84 
 85              // 必填,设置雉短信接收号码
 86             $request->setPhoneNumbers($phoneNumbers);
 87 
 88 
 89              // 必填,设置签名名称
 90             $request->setSignName($signName);
 91 
 92 
 93             // 必填,设置模板CODE
 94             $request->setTemplateCode($templateCode);
 95 
 96 
 97             $num = rand(100000,999999);
 98 
 99 
100              // 可选,设置模板参数
101             $request->setTemplateParam(json_encode(
102                 Array(
103                     "code" => "$num"
104                 )
105             ));
106 
107 
108               // 可选,设置流水号
109             if($outId) {
110                 $request->setOutId($outId);
111             }
112 
113 
114              // 发起访问请求
115             $acsResponse = $this->acsClient->getAcsResponse($request);
116 
117 
118 
119 
120         }
121 
122 
123         /**
124          * 查询短信发送情况范例
125          * @param  [type]  $phoneNumbers 必填, 短信接收号码
126          * @param  [type]  $sendDate     必填,短信发送日期,格式Ymd,支持近30天记录查询 
127          * @param  integer $pageSize   必填,分页大小
128          * @param  integer $currentPage  必填,当前页码
129          * @param  [type]  $bizId        选填,短信发送流水号
130          * @return [type]                [description]
131          */
132         public function queryDetails($phoneNumbers,$sendDate,$pageSize=10,$currentPage=1,$bizId=null)
133         {
134 
135 
136              // 初始化QuerySendDetailsRequest实例用于设置短信查询的参数
137             $request = new QuerySendDetailsRequest();
138 
139 
140             $request->setPhoneNumber($phoneNumbers);
141 
142 
143             $request->setSendDate($sendDate);
144 
145 
146             $request->setPageSize($pageSize);
147 
148 
149             $request->setCurrentPage($currentPage);
150 
151 
152             if($bizId) {
153                 $request->setBizId($bizId);
154             }
155 
156 
157             $acsResponse = $this->acsClient->getAcsResponse($request);
158 
159 
160         }
161 
162 
163     }

 本文参考:http://blog.csdn.net/lishanleilixin/article/details/78126955

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Kubernetes

聊聊你可能误解的Kubernetes Deployment滚动更新机制

Author: xidianwangtao@gmail.com 定义Deployment时与rolling update的相关项 以下面的frontend...

5038
来自专栏娱乐心理测试

iOS ipa包进行重新签名安装好brew,先用brew安装ruby,然后用gem安装sigh。安装好后,就可以直接使用了

1814
来自专栏Python爬虫与数据挖掘

windows服务器ssl证书安装及配置https

然后下载证书压缩包到服务器解压有三个文件夹根据自己的需要选择不同文件夹中的证书即可,这里我用的IIS所以只需要IIS文件夹里的证书即可

1.3K5
来自专栏轻量级微服务

Kubernetes Dashboard 及监控组件 Heapster 部署

3、修改 yaml 文件中的 Dashboard Service,暴露服务使外部能够访问

1993
来自专栏向治洪

iOS开发证书管理

最近,没啥事情,就逛逛论坛,研究一些新技术,偶尔导入github上一些开源的iOS项目学习学习别人的一些写法。不过有时间,在运行别人的项目的时候,总会报一些错误...

2938
来自专栏V站

一张验证码引发对DOS的思考

他的目的就是为了让攻击目标网站或者在线服务失去相应,或者因为大量流量和IP一时间如洪水般涌入服务器,导致服务器拒绝服务,甚至宕机。

1562
来自专栏云原生架构实践

Docker Data Center系列(五)- 使用自定义的TLS安全认证

commonName(CN)设置为UCP(DTR)所在主机名或FQDN。也可以设置为一个泛域名(*.yourcompany.com),其它都使用默认值。

2247
来自专栏移动端周边技术扩展

Charles抓包 - https

Charles下载地址 关于Charles4.2.1破解,下载完成后替换Charles显示包内容>Contents>Java>charles.jar文件

1390
来自专栏魏艾斯博客www.vpsss.net

腾讯云服务器创建 SSH 密钥及如何使用 提高 SSH 连接安全性

腾讯云服务器内置创建 SSH 密钥功能,创建并使用之后就是有密钥才能使用 SSH 连接服务器,相对于几位数的登陆密码来说,2048 位密钥显然更安全。本文是阿里...

3817
来自专栏Google Dart

Dart服务器端 shelf_auth包 原

Shelf Auth提供了一个authenicate函数,它接受一个Authenticators列表和一个可选的SessionHandler(见下文)并创建Sh...

962

扫码关注云+社区

领取腾讯云代金券