Laravel 使用阿里云的短信验证码

阿里大鱼
[需求暂时只需要发送验证码所以使用的是阿里短信 对短信和流量有更多操作的可以使用阿里大鱼]
composer require flc/dysms                //安装
<?php   namespace App\Service;

define("UID_MOBILE_CODE_CACHE_KEY", "uid_mobile_code_cache_");
define("UID_MOBILE_CODE_CACHE_TIME", 300 );

use Flc\Dysms\Client;
use Flc\Dysms\Request\SendSms;
use Illuminate\Support\Facades\Redis;
use Log;

class  aliyunSendSms
{
    public function sendSms($mobile){

        $config = [
            'accessKeyId'    => '*******',
            'accessKeySecret' => '*******',
        ];
        $code = $this->getPhoneCode();
        $client  = new Client($config);
        $sendSms = new SendSms;
        $sendSms->setPhoneNumbers($mobile);
        $sendSms->setSignName('短信签名');
        $sendSms->setTemplateCode('短信模板');
        $sendSms->setTemplateParam(['code' => $code]);
        $sendSms->setOutId('5286');
        $cliReturn = $client->execute($sendSms);

        if($cliReturn->Code=="OK"){    
            $cacheKey = UID_MOBILE_CODE_CACHE_KEY.$mobile;
        Redis::setex($cacheKey,UID_MOBILE_CODE_CACHE_TIME,$code);
   Log::info("生成短信缓存:".$code);
return true ; } else { return false ; } }            //验证短信验证码是否正确 public function isCheckPhoneCode ( $mobile , $phoneCode ){ $cacheKey = UID_MOBILE_CODE_CACHE_KEY . $mobile ; $redisCode = Redis :: get ( $cacheKey ); if ( !empty ( $redisCode ) && $redisCode == $phoneCode ) { Log :: info ( " 短信验证码正确! " ); return true ; } Log :: info ( " 短信证验码错误 : { $mobile } |imgcode: { $phoneCode } |redisCode:" . json_encode ( $redisCode ) ); return false ; }    //二维码生成方式 public function getPhoneCode () { $max = 9 ; $y1 = rand ( 0 , $max ); $y2 = rand ( 0 , $max ); $y3 = rand ( 0 , $max ); $y4 = rand ( 0 , $max ); return $y4 . $y3 . $y2 . $y1 ; }        //验证手机号是否正确 public function isMobile ( $string ){ return !! preg_match ( '/^1[3|4|5|7|8]\d{9}$/' , $string ); }

猜你喜欢

转载自blog.csdn.net/linyunping/article/details/80417704