本案例采用Laravel5.6对接阿里云SMS发送短信验证码,【全干货】,按步骤操作即可完成。
在部署环境之前,我们需要去阿里云平台注册一个账号,个人账号和公司账号都可以,注册完成后,复制access_key和access_secret配置在项目中就完成了项目的基本设置。
一. 新建项目,安装Laravel5.6版本的框架代码
1. 环境配置要求
Laravel 对系统有一些要求,您的服务器满足下面的要求:
- PHP >= 7.1.3
- OpenSSL PHP
- PHP PDO 扩展
- PHP Mbstring 扩展
- PHP Tokenizer 扩展
- PHP XML 扩展
- PHP Ctype 扩展
- PHP JSON 扩展
备注:您需要达到以上的配置要求,这个就不具体详细说明,具体看PHP语法
2. 安装Laravel5.6框架
Laravel5.6使用 Composer 来管理项目依赖。因此,在使用 Laravel5.6之前,请确保你的机器已经安装了 Composer。
composer -v
![363342fd665eeb69150dcb17e5167049.png](https://img-blog.csdnimg.cn/img_convert/363342fd665eeb69150dcb17e5167049.png)
// 未安装composer,请参照以下网址安装https://www.phpcomposer.com/
备注:composer具体安装请参照上面链接,按文档安装即可.
下面我们具体安装Larvael5.6框架,在控制窗口输入一下内容(本人windows操作系统),等待安装完成。
composer create-project --prefer-dist laravel/laravel blog
安装完成后执行以下代码,为应用程序设置随机字符串密钥。
php artisan key:generate
在浏览器中输入:http://localhost/blog/public/index.php,看到如下界面就是访问正常了。
![c4c08088d3bb825afe58d9e8c15aebdb.png](https://img-blog.csdnimg.cn/img_convert/c4c08088d3bb825afe58d9e8c15aebdb.png)
3. composer.json配置阿里云组件包
在require中添加"mrgoon/aliyun-sms": "dev-master"
“require”: { “php”: “^7.1.3”, “fideloper/proxy”: “^4.0”, “laravel/framework”: “5.8.*”, “laravel/tinker”: “^1.0”, "mrgoon/aliyun-sms": "dev-master"}
然后执行命令:
composer updatecomposer dumpautoload
![b3cabc95a1df767f8e6feac6caec3848.png](https://img-blog.csdnimg.cn/img_convert/b3cabc95a1df767f8e6feac6caec3848.png)
组件下载完成后,如下图:
![994ff42eeb9457fcf4fb637e4994cc92.png](https://img-blog.csdnimg.cn/img_convert/994ff42eeb9457fcf4fb637e4994cc92.png)
里面已经有阿里云的SDK包了,配置文件也生成了。
![ec4379e028d304dbedb04a97a76686fd.png](https://img-blog.csdnimg.cn/img_convert/ec4379e028d304dbedb04a97a76686fd.png)
4、开通短信服务
1、登录阿里云网站,点击短信服务,进入开通。
![498a2eab573ddab9714103fd7ae416ad.png](https://img-blog.csdnimg.cn/img_convert/498a2eab573ddab9714103fd7ae416ad.png)
2、点击国内消息
![90c800e90695859d955870282d73688e.png](https://img-blog.csdnimg.cn/img_convert/90c800e90695859d955870282d73688e.png)
3、添加签名
![a1fe9348f460237450c7fc4ab3cbe5b4.png](https://img-blog.csdnimg.cn/img_convert/a1fe9348f460237450c7fc4ab3cbe5b4.png)
4、添加模板
![0ec253aef71dbbe35144fb82e5713245.png](https://img-blog.csdnimg.cn/img_convert/0ec253aef71dbbe35144fb82e5713245.png)
5. 配置阿里云access_key和access_secret配置
这里很关键:我的是单独写了一个文件进行配置
第一步:在config/app.php的providers下添加:
'providers' => [MrgoonAliSmsServiceProvider::class,],
第二步:在app/aliyunsms.php中添加配置:
return [ 'access_key' => env('ALIYUN_SMS_AK', '填你自己的'), 'access_secret' => env('ALIYUN_SMS_AS', '填你自己的'), ],
第三步:在.env文件中配置常量
ALIYUN_ACCESSKEYID=填你自己的
文件就已经配置完成。
二. 编写接口控制器方法
新建控制器:UploadsController 继承 Controller类,方便操作。
第一步:编写API路由
Route::post('/index/sendsms', 'AppHttpControllersIndexSmsController@index');
第二步:编写控制器,发送短信(核心代码)
<?phpnamespace AppHttpControllersIndex;use AppHttpControllersController;use IlluminateHttpRequest;class SmsController extends Controller { public function index(Request $request) { if (!is_mobile($request->mobile)) { return array_format('手机号格式错误', 414); } //发送过快验证 $repeat_cache_key = md5($request->mobile . $request->type . 'repeat'); if (cache()->store('file')->has($repeat_cache_key)) { return array_format('发送过快,请稍后再试', 414); } $mobile_code = rand_num(6); $sms = new AliSms(); $temp = $sms->sendSms($request->mobile, '填你自己的', ['code'=> $mobile_code]); if (!$temp) { return array_format('发送短信失败', 414); } //缓存验证码 $cache_key = md5($request->mobile); cache()->store('file')->put($cache_key, $mobile_code, 5); cache()->store('file')->put($repeat_cache_key, $mobile_code, 0.1); return array_format('发送成功', 200); }}
. Postman工具接口测试
![63ad4c9cf68e9707f115f0d650749580.png](https://img-blog.csdnimg.cn/img_convert/63ad4c9cf68e9707f115f0d650749580.png)
了解更多干货知识请关注公众号(Laravel技术社区)