[干货] Laravel 对接阿里云 SMS 发送短信验证码

本案例采用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

// 未安装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,看到如下界面就是访问正常了。

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 update
composer dumpautoload


组件下载完成后,如下图:

里面已经有阿里云的SDK包了,配置文件也生成了。

4、开通短信服务

1、登录阿里云网站,点击短信服务,进入开通。

2、点击国内消息

3、添加签名

4、添加模板

5. 配置阿里云access_key和access_secret配置

这里很关键:我的是单独写了一个文件进行配置

第一步:在config/app.phpproviders下添加:

'providers'  =>  [Mrgoon\AliSms\ServiceProvider::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', '\App\Http\Controllers\Index\SmsController@index');

第二步:编写控制器,发送短信(核心代码)

<?php
namespace App\Http\Controllers\Index;
use  App\Http\Controllers\Controller;
use  Illuminate\Http\Request;

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工具接口测试

了解更多干货知识请关注公众号Laravel技术社区

本作品采用《CC 协议》,转载必须注明作者和本文链接
让编程成为一种习惯!
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

的确是干货,支持!已关注公众号 :blush:

3年前 评论

赞,好文章,学习了!

3年前 评论
Affren (作者) 3年前
Laravel技术社区 (楼主) 3年前
Affren (作者) 3年前

没用

3年前 评论
Laravel技术社区 (楼主) 3年前

is_mobile()方法是laravel 自带的吗

3年前 评论
Laravel技术社区 (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!