美文网首页
laravel中使用阿里大于短信插件

laravel中使用阿里大于短信插件

作者: 山欧巴 | 来源:发表于2017-01-19 11:57 被阅读0次

    1.安装:在项目根目录下composer require iscms/alisms-for-laravel

    2.配置:在config/app.php文件中数组providers添加一行

    iscms\Alisms\AlidayuServiceProvider::class,
    

    3.执行:在项目根目录下php artisan vendor:publish然后config目录下应该增加了
    alisms.php文件

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

    .env文件中配置:SMS

    ALISMS_KEY=阿里大于证书账号
    ALISMS_SECRETKEY=阿里大于证书密码
    

    使用:引入命名空间use iscms\Alisms\SendsmsPusher as Sms;

    protected static $sms = null;
    //使用构造函数对静态属性进行初始化赋值
    public function __construct (Sms $Sms)
    {
        self::$sms = $Sms;
    }
    /**
     *阿里大于短信插件方法,参数传入一个11位的数字
     *$phone 用户的手机号
     *$name 短信签名,阿里大鱼申请的短信签名的名字
     *$content 替换短信模板中的变量,JSON字符串格式,所有值都是字符串,不能有整形
     *$code 阿里大鱼申请的短信模板编号
     */
    public function code (Request $request)
    {
        $input = $request->all();
        //判断该手机在10分钟内是否已经发过短信
        // redis中存在此key返回Integer(1),不存在返回integer(0)
        $exists = \Redis::exists('IT:STRING:USER:CODE:' . $input['phone']);
        if ($exists == true) {
            return response()->json(['ResultData' => '失败', 'info' => '10分钟内已经发过短信']);
        }
        //随机验证码,mt_rand比rand快
        $num = mt_rand(100000, 999999);
        $smsParams = [
            //阿里大于定义的变量名
            'int'  => "$num",
            'name' => '你好,欢迎你使用本平台'
        ];
        //要发送的号码
        $phone = $input['phone'];
        //阿里大于短信签名
        $name = '签名名称';
        //数组,要发送的值
        $content = json_encode($smsParams);
        //你的短信模板ID
        $code = '你的模板ID';
        $data = self::$sms->send($phone, $name, $content, $code);
        //判断是否发送成功
        if(property_exists($data,'result')){
            //把手机号码存入redis缓存,设置10分钟的有效时间
            //第一个参数是key,第二个参数是有效时间,单位是秒,第三个参数是value
            \Redis::sEtex('IT:STRING:USER:CODE:' . $phone, 600, $num);
            //发送成功时把短信验证存入session中去,也可以直接从redis中取
            \Session::put('num', $num);
            //发送成功返回成功
            return response()->json(['ResultData' => '成功', 'info' => '发送成功']);
        } else {
            //发送失败返回失败
            return response()->json(['ResultData' => '失败', 'info' => '发送失败']);
        }
    }
    

    注意:以上使用时需要安装Predis插件,如果与本地php已经安装了Redis的话就需要把Redis关闭,否则Preids无法使用

    在项目根目录下composer require predis/predis

    内容来源:吕倡个人博客

    相关文章

      网友评论

          本文标题:laravel中使用阿里大于短信插件

          本文链接:https://www.haomeiwen.com/subject/ancibttx.html