手机版

手机短信发送验证码的实现方法

时间:2021-08-31 来源:互联网 编辑:宝哥软件园 浏览:

前言

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

首先,我使用的是阿里巴巴云的短信服务,它的首次访问流程如下:

在阿里巴巴云上开通短信服务后怎么办:

1.申请签名2。申请模板3。创建访问密钥。值得一说的是,Accesskey可以通过阿里巴巴云提供的子用户创建,可以更安全4。再充电

Laravel有很多短信服务的扩展包。我以前用阿里比以前大,用了如下:

1.从终端或命令输入您的项目,然后运行:composer require是CMS/alism-for-laravel

2.将:iscms \ alism \ alidayuserviceprovider :3360类添加到config\app.php的Providers:

3.运行:php artisan vendor:publish,它将在配置文件夹下添加一个alisms.php文件,内容如下:

?php返回[ 'KEY'=env('ALISMS_KEY ',null),' secrettkey '=env(' ALISMS _ secrettkey ',null),];4.写在。环境文件:

ALISMS_KEY=23305789 ALISMS _ secrettkey=* * * * * * * * * * * *注:ALISMS _ KEY和ALISMS_SECRETKEY是阿里巴巴云生成的访问密钥对(AccessKeyId和AccessKeySecret)

开始吧:

1.在需要呼叫短信服务的控制器中引入短信:

使用iscms \ Alisms \ SendsmsPusher作为Sms

公共函数_ _ construct(SmS $ SmS){ $ this-SmS=$ SmS;} public function index(){ $ result=$ this-SMS-send(' $ phone ',' $name ',' $content ',' $ code ');}参数描述:$phone,$name,$content,$code

$phone指的是收件人的短信号码,$name指的是短信签名,这可以在阿里大禹短信签名中找到http://www.alidayu.com/admin/service/sign. $ content指的是短信模板中的可变内容。比如你的阿里大禹模板里有以下短信模板。

模板名称:认证验证码

模板ID:短信_3910275

*模板内容:验证码$[code],你是在进行${product}认证,所以被杀的时候不要告诉任何人!

那么我们相应的$内容应该是

{code: '生成的验证码',product: '示例项目' }在这里可以正常使用,但是不知道为什么,我使用的时候控制台返回了一个错误代码,代码=11,因为isv权限问题在淘宝上验证过。之后我在阿里巴巴云上把用户权限控制到了最大,但是这个错误还是发生了。更改扩展包仍然是个问题。

首先,从阿里巴巴云官网下载关于短信服务的sdk包

SDK工具包中有两个类库,一个是阿里云-php-sdk-core包,另一个是alicom-dyms-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 /命名空间应用\ Http \控制器\短信使用阿里云\核心\配置;使用阿里云\核心\配置文件\默认配置文件;使用阿里云\核心\默认客户端;使用阿里云\ Api \短信\请求\ V20170525 \发送短信请求;使用阿里云\ Api \ Sms \ Request \ v 20170525 \ query send details Request;使用app \ Http \ Controller \ Controller;//加载区域结点配置config :加载();类SMS控制器扩展了控制器{ /** *构造器* @param字符串$accessKeyId必填,AccessKeyId * @param字符串$ accessKeySecret必填,access key secret */public function _ _ construct($ access key id=' # # # # # ',$ access key secret=' # # # # '){//短信应用程序接口产品名$ product=' Dysmsapi//短信应用程序接口产品域名$ domain=' dysmapi。阿里云克斯。com ';//暂时不支持多区域$ region=' cn-杭州;//服务结点$ EndPointName=' cn-杭州;//初始化用户轮廓实例$ profile=default profile : get profile($ region,$accessKeyId,$ accesskey secret);//增加服务结点default profile :3360 addendpoint($ endpoint name,$region,$product,$ domain);//初始化AcsClient用于发起请求$ this-acsClient=new Defaultacsclient($ profile);} /** * 发送短信范例* @param [type] $phoneNumbers必填,短信接收号码* @param字符串$ signName必填,短信签名,应严格'签名名称'填写,* @param字符串$templateCode必填,短信模板代码,应严格按'模板"代码"填写,* @ param[type]$ OtiD选填,假如模板中存在变量需要替换则为必填项* @返回[类型][描述]*/public函数发送短信($phoneNumbers,$ signName=' XX软件,$templateCode='SMS_XXXXXX ',$outId=null) { //初始化发送请求实例用于设置发送短信的参数$ request=new SendSmsRequest//必填,设置雉短信接收号码$请求设置电话号码($电话号码);//必填,设置签名名称$ request-SetSigname($ Signame);//必填,设置模板CODE $ request-setTemplateCode($ templateCode);$num=兰特(100000,999999);//可选,设置模板参数$ request-setTemplateParam(JSON _ encode(Array(' code '=' $ num ')));//可选,设置流水号if($ OUtid){ $ request-setutid($ OUtid);} //发起访问请求$ acsResponse=$ this-acsClient-getAcsResponse($ request);} /** * 查询短信发送情况范例* @param [type] $phoneNumbers必填,短信接收号码* @param [type] $sendDate必填,短信发送日期,格式Ymd,支持近30天记录查询* @param整数$pageSize必填,分页大小* @param整数$currentPage必填,当前页码* @param [type] $bizId选填,短信发送流水号* @ return[type][description]*/public function queryDetails($ phoneNumbers,$sendDate,$pageSize=10,$currentPage=1,$bizId=null) { //初始化QuerySendDetailsRequest实例用于设置短信查询的参数$ request=新查询send details request();$ request-set电话号码($电话号码);$ request-set send date($ send date);$ request-SetPageSize($ PageSize);$ request-setCurrentPage($ currentPage);if($ BizID){ $ request-SetBizID($ BizID);} $ acsResponse=$ this-acsClient-getAcsResponse($ request);} }之后用就实例化调用方法就可以了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

版权声明:手机短信发送验证码的实现方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。