Laravel5.4中使用阿里大于(鱼)发送短信验证码

首先,百度【阿里大于】,打开页面注册,登录(阿里云账号密码就可以)

Laravel5.4中使用阿里大于(鱼)发送短信验证码_第1张图片

登录成功,点击控制台

Laravel5.4中使用阿里大于(鱼)发送短信验证码_第2张图片

进入【短信服务】—增加签名–增加模板—增加订阅–点击api文档观看

Laravel5.4中使用阿里大于(鱼)发送短信验证码_第3张图片

API接口文档【如图】

Laravel5.4中使用阿里大于(鱼)发送短信验证码_第4张图片

到此设置结束开始在laravel中进行操作

安装laravel阿里大于(鱼)服务

composer require iscms/alisms-for-laravel

注册服务(config/app.php)

在文件中找到Providers数组,写入

iscms/Alisms/AlidayuServiceProvider::class

生成阿里大于(鱼)配置文件(config文件夹)

php artisan vendor:publish

此时,在config.php中会出现一个阿利大于的配置文件为:alisms.php

/**
 * 阿里大鱼短信配置
 */
return [
    // 短信应用key
    'app_key' => '******',

    /*
    | 短信应用密钥
   */
    'app_secret' => '******',

    /*
    | 类型
    */
    'type' => 'normal',
    // 扩展
    'extend' => '',

    /*
    | 短信签名
    */
    'sign_name' => 'summer', //阿塞布
    /*
    | 短信模板
    */
    'template' => [
        'verify' => 'SMS_47470198',
    ]
];

**在生成的依赖包中:如果想引用的话:记得配置好,否则app_key和secretKey找不到

Laravel5.4中使用阿里大于(鱼)发送短信验证码_第5张图片

新建一个控制器,在其中这样写来发短信:



namespace App\Http\Controllers;

use Illuminate\Http\Request;
/*调用短信*/
use iscms\Alisms\SendsmsPusher as Sms;
//laravel中的session的过期时间在config.php--session.php 默认进行了设置;所以使用redis进行存储
use Illuminate\Support\Facades\Redis;

class HomeController extends Controller
{
   /*初始化 得到appkey+secretKey */
    public function __construct(Sms $sms)
    {
        $this->sms=$sms;   //得到在SendSmsPusher.php中的所有配置信息

    }

    public function Alidayu(Request $request)
    {
        //第一步:引入配置文件,得到需要的预先设置好的参数
        $smsconf = config('alisms');

        $mobile = '18335108888'; // 用户手机号,接收验证码

        $name = $smsconf['sign_name'];  // 短信签名,可以在阿里大鱼的管理中心看到
        $num = rand(100000, 999999); // 生成随机验证码 **键值和之前设定的短信模板变量保持一致
        $smsParams = [
            'verify_code' => "$num"
        ];
        $content = json_encode($smsParams); // 转换成json格式的
        $code = $smsconf['template']['verify'];   // 阿里大于(鱼)短信模板ID
        $interval = 300;

        Redis::set($mobile, json_encode([
            'captcha' => $code,
            'expire' => time() + $interval
        ]));

        $result = $this->sms->send($mobile, $name, $content, $code);

        //property_exists — 检查对象或类是否具有该属性
        if (property_exists($result, "code") && $result->code > 0) {
            return response()->json(['status'=>201, 'error'=>$result->msg]);
        }else{
            return response()->json(['status'=>200, 'error'=>'短信发送成功']);

        }

    }

    /*验证填写的验证码和给该手机发送的验证码是否匹配*/
    public function verify(Request $req)
    {
        //第一步:接收到手机号+验证码
        $mobile = $req->input('mobile');
        $captcha =$req->input('captcha');

        // 检查验证码
        $redisCaptcha = json_decode(Redis::get($mobile), true);
        $now = time();

        if ($redisCaptcha['expire'] < $now) {
            Redis::del($mobile);
            return response()->json(['status' => 204, 'error' => '验证码过期']);
        }

        if ($redisCaptcha['captcha'] != $captcha) {
            return response()->json(['status' => 201, 'error' => '验证码错误']);
        }


        return response()->json(['status'=>200, 'error'=>'输入的验证码和发送的验证码一致']);
    }
}
*****************控制器所写方法的打印结果展示****************************************
打印构造函数中的$sms
结果如下:

iscms\Alisms\SendsmsPusher Object
(
    [TopClient:iscms\Alisms\SendsmsPusher:private] => iscms\AlismsSdk\TopClient Object
        (
            [appkey] => 23639393
            [secretKey] => 273f3cc8ffbd47f269e35a42c872f54a
            [gatewayUrl] => http://gw.api.taobao.com/router/rest
            [format] => json
            [connectTimeout] => 
            [readTimeout] => 
            [checkRequest] => 1
            [signMethod:protected] => md5
            [apiVersion:protected] => 2.0
            [sdkVersion:protected] => top-sdk-php-20151012
            [simplify] => 1
        )

    [name:iscms\Alisms\SendsmsPusher:private] => 
    [content:iscms\Alisms\SendsmsPusher:private] => 
    [phone:iscms\Alisms\SendsmsPusher:private] => 
    [code:iscms\Alisms\SendsmsPusher:private] => 
)



打印返回值$result

A。发送短信成功时,返回的对象信息

stdClass Object
(
    [result] => stdClass Object
        (
            [err_code] => 0
            [model] => 513811803394124578^0
            [msg] => *
            [success] => 1
        )

    [request_id] => 43ebsfmfind5
)

B。发送短信失败时,返回的对象信息

stdClass Object
(
    [code] => 28
    [msg] => Missing app key
    [request_id] => 2fpg7qvs6r7l
)
参数说明:

$phone 手机号,用户输入的手机号
$name  短信签名,阿里大鱼申请的短信签名的名字
$content 替换短信模板中的变量,JSON字符串格式,所有值都是字符串,不能有整形
$code   阿里大鱼申请的短信模ID:SMS_39***4

阿里大于(鱼)短信模板(http://www.alidayu.com/)
模板名称: 身份验证
 模板ID: SMS_39***4
 *模板内容:验证码${code},您正在进行个人身份验证,打死不要告诉别人哦!
那么里面存在着变量${code}需要替换成验证码,那么对应的$content 就应该为{code:"生成的验证码"} 
e.g {code:'123456'}

你可能感兴趣的:(laravel)