前段时间想实现一个短信验证码的功能,但是卡了很长时间。

首先我用的是阿里云的短信服务业务,其首次接入流程如下:

在阿里云上开通短信服务后需要做的:

1,申请签名  2,申请模板   3,创建Accesskey ,值得说的是,可以通过阿里云提供的子用户进行Accesskey的创建,这样可以更安全  4,充值

laravel有很多的进行短信业务的扩展包,之前我用的是阿里大于,使用如下:

1,从终端或者命令进入您的项,运行:composer require iscms/alisms-for-laravel

2,将:iscms\Alisms\AlidayuServiceProvider::class加入config\app.php的Providers下 类似:

3,运行:php artisan vendor:publish,这样会在config文件夹下新增一个alisms.php文件,内容如下:

<?phpreturn ['KEY' =>env('ALISMS_KEY',null),'SECRETKEY'=>env('ALISMS_SECRETKEY',null),];

4,在.env文件中写入:

ALISMS_KEY=23305789

ALISMS_SECRETKEY=**************

注意:ALISMS_KEY和ALISMS_SECRETKEY就是阿里云生成的访问秘钥成对(AccessKeyId 与 AccessKeySecret)

开始使用:

1,在您需要调用短信服务的控制器中引入SMS:

  use iscms\Alisms\SendsmsPusher as Sms;

    public function __construct(Sms $sms){$this->sms=$sms;}public function index(){$result=$this->sms->send("$phone","$name","$content","$code");}参数说明:$phone,$name,$content,$code
  1. $phone 指接受短信方的短信号码,
  2. $name 指短信签名 可以在阿里大鱼短信签名 http://www.alidayu.com/admin/service/sign 找到
  3. $content 是指短信模板中的变量内容.举个例子
在自己的阿里大鱼模板里面有下面一个短信模板模板名称: 身份验证验证码
模板ID: SMS_3910275
*模板内容: 验证码${code},您正在进行${product}身份验证,打死不要告诉别人哦!
那么对应的我们的$content 就应该为
   {code:"生成的验证码",product:"示例项目"}到此就可以正常使用,但是不知道为什么,我在使用过程中,控制台返回了code=11的错误码,在淘宝上查证后是因为isv权限的问题,之后我在阿里云上将用户的权限控制开到了最大,但是依旧会出现这个错误,
换了一个扩展包还是这个问题,到现在还没有解决,于是我就在laravel中写原生的。首先从阿里云官网上下载关于短信服务的sdk包
SDK工具包中一共包含了2个类库,一个aliyun-php-sdk-core包,另外一个是alicom-dysms-api包,将这两个包添加到工程类库中依赖。
选择PHP版本的sdk包将压缩包解压,里面有四个文件夹:api_demo,api_sdk,msg_demo,msg_sdk
在laravel项目的app文件夹下新建一个名为libs的文件夹,将api_sdk和msg_sdk复制到libs文件夹下。
找到根目录下的composer.json文件,找到composer.json中定义的classmap选项,写入引入的两个包:

终端进入项目文件夹中运行:composer dumpautoload
这样子就在laravel中引入了第三方类库。
创建代码文件
我将其简单的封装了一下:
<?php// namespace App\Http\Controllers\sms;use Aliyun\Core\Config;use Aliyun\Core\Profile\DefaultProfile;use Aliyun\Core\DefaultAcsClient;use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;use App\Http\Controllers\Controller;// 加载区域结点配置Config::load();class SmsController extends Controller {/*** 构造器* @param string $accessKeyId    必填,AccessKeyId* @param string $accessKeySecret 必填,AccessKeySecret*/public function __construct($accessKeyId="######",$accessKeySecret="#######"){// 短信API产品名$product = "Dysmsapi";// 短信API产品域名$domain = "dysmsapi.aliyuncs.com";// 暂时不支持多Region$region = "cn-hangzhou";// 服务结点$endPointName = "cn-hangzhou";// 初始化用户Profile实例$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);// 增加服务结点DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);// 初始化AcsClient用于发起请求$this->acsClient = new DefaultAcsClient($profile);}/***  发送短信范例* @param  [type] $phoneNumbers 必填, 短信接收号码* @param  string $signName    必填, 短信签名,应严格"签名名称"填写,* @param  string $templateCode  必填, 短信模板Code,应严格按"模板CODE"填写,* @param  [type] $outId        选填, 假如模板中存在变量需要替换则为必填项* @return [type]               [description]*/public function sendSms($phoneNumbers,$signName="XX软件",$templateCode="SMS_XXXXXX",$outId=null){// 初始化SendSmsRequest实例用于设置发送短信的参数$request = new SendSmsRequest;// 必填,设置雉短信接收号码$request->setPhoneNumbers($phoneNumbers);// 必填,设置签名名称$request->setSignName($signName);// 必填,设置模板CODE$request->setTemplateCode($templateCode);$num = rand(100000,999999);// 可选,设置模板参数$request->setTemplateParam(json_encode(Array("code" => "$num")));// 可选,设置流水号if($outId) {$request->setOutId($outId);}// 发起访问请求$acsResponse = $this->acsClient->getAcsResponse($request);}/*** 查询短信发送情况范例* @param  [type]  $phoneNumbers 必填, 短信接收号码* @param  [type]  $sendDate     必填,短信发送日期,格式Ymd,支持近30天记录查询 * @param  integer $pageSize   必填,分页大小* @param  integer $currentPage  必填,当前页码* @param  [type]  $bizId        选填,短信发送流水号* @return [type]                [description]*/public function queryDetails($phoneNumbers,$sendDate,$pageSize=10,$currentPage=1,$bizId=null){// 初始化QuerySendDetailsRequest实例用于设置短信查询的参数$request = new QuerySendDetailsRequest();$request->setPhoneNumber($phoneNumbers);$request->setSendDate($sendDate);$request->setPageSize($pageSize);$request->setCurrentPage($currentPage);if($bizId) {$request->setBizId($bizId);}$acsResponse = $this->acsClient->getAcsResponse($request);}}
之后用就实例化调用方法就可以了。

laravel中实现短信发送验证码相关推荐

  1. 邮箱发送验证码和短信发送验证码的学习笔记

    邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...

  2. jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】

    文章目录 jeecg 项目效果展示 短息通知页面入口 代码中调用短信api 配置和代码 API中的重要参数配置项: 阿里控制台注册 注册签名 注册短信模板  阿里云短信发送验证码配置和项目使用 je ...

  3. 阿里云短信服务——短信发送验证码

    引言 短信服务现在在很多地方都用的到,我们最多接触到的可能就是验证码的发送了:现在很多大厂都提供由短信服务对应的api,直接调用就可以轻松实现短信发送:下面我以阿里云为例,演示一下如何短信发送验证码: ...

  4. thinkphp5+阿里短信发送验证码

    一.申请阿里短信接口,开通服务,申请AccessKey ID和Access Key Secret 二.申请短信发送模板 三.在thinkphp5中的config文件中添加一下配置 //短信配置'SMS ...

  5. 短信发送验证码实现验证

    写在前面   你们好,我是小庄.很高兴能和你们一起学习短信发送功能.如果您对Java感兴趣的话可关注我的动态.   写博文是一种习惯,在这过程中能够梳理和巩固知识点. 实现思路:前台将手机号码发送到后 ...

  6. PHP 手机短信发送验证码

    点击链接加入群[php/web 学习课堂]:https://jq.qq.com/?_wv=1027&k=5645xiw 欢迎大家加入,一起讨论学习 本篇设计的知识点有点多,我会分类将,同学们可 ...

  7. 阿里云短信发送验证码使用记录

    官网:https://www.aliyun.com/product/sms 0.首先需要注册阿里云账号,可以直接用支付宝登陆. 1.登陆阿里云短信管理控制台,选择快速学习,使用测试短信发送 2.测试手 ...

  8. php短信验证案例,PHP项目之容联云短信发送验证码

    一.简介 短信验证码功能,在一些网站中,都有普遍使用,容联云是国内领先的云通信平台,很多网站都在使用,本专题讲解一下,使用容联云平台的短信验证码功能. 二.特性 5秒必达.资费低.接入快,流程如下: ...

  9. springboot实现短信发送验证码及消息队列发送注册成功短信

    需要源码小伙伴可以到微信小程序:"MINIIT资源库"获取,作者承诺免费 PS:在编写功能之前,需要得到阿里云短信服务API: 使用消息队列(mq)可以将主业务和副业务分离,主业务 ...

最新文章

  1. Python实现迭代器协议
  2. 如何快速正确的安装 Ruby, Rails 运行环境
  3. java.net.SocketException: Permission denied解决
  4. 数据结构期末复习(に)--链式栈定义及使用
  5. Python | 这是过七夕吗?这是趁机学习一下下,就一下~~
  6. 一行代码就能解决微服务分布式事务问题,你知道GTS怎么做到的吗?
  7. 真实到可怕!英伟达MIT造出马良的神笔
  8. 微博同步ValidatorException
  9. 042 实例10-文本词频统计
  10. 7.运输层---UDP
  11. unity ugui序列帧动画
  12. 香农码字matlab,香农编码的MATLAB实现.ppt
  13. 在线识别图片中的字体的网站
  14. Chrome上关于微信网页版WeChat不能正常登录的解决方案
  15. python实现报表的分组统计_Python 分组处理
  16. JSP ssh房地产项目管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  17. 8421码、5421码、2421码及余三码
  18. SAP-QM中途取消检验类型+质检变成非限制
  19. STM32单片机控制A1333角度传感器磁编码器
  20. 「镁客早报」NASA公布“门户计划”,未来将在月球轨道建立空间站;特斯拉裁掉Model3交付部门一半以上...

热门文章

  1. 设计原则03:会修电脑不会修收音机-依赖倒转原则
  2. C语言---指针优先级
  3. 华为OD机试用java实现 -【最优调度策略】
  4. python1_Python学习之路(一)之Python基础1
  5. vue--获取手机短信验证码
  6. PLSQL:设定关闭sql窗口的快捷键为Ctrl+W
  7. vivo图像算法工程师双非研究生可以吗_2021 校招算法岗, 劝退还是继续
  8. 三个字组成的字:晶、鑫、淼……
  9. slq语句定义表以及对表的删除、修改
  10. Android大牛的博客