Laravel 使用阿里云短信發(fā)送驗證碼

安裝:composer require mrgoon/aliyun-sms dev-master

在config/app.php里的providers配置

'providers'=>[
        /**
         * 阿里云短信
         */
        Mrgoon\AliSms\ServiceProvider::class,
]

順便設(shè)置別名

'aliases' => [
      /**
         * 阿里云短信
         */
        'AliSms'=>Mrgoon\AliSms\ServiceProvider::class,
]

運行 php artisan vendor:publish 命令

配置config/aliyunsms.php

return [
    'access_key'        => env('ALIYUN_ACCESSKEYID'), // accessKey
    'access_secret'     => env('ALIYUN_ACCESSKEYSECRET'), // accessSecret
    'sign_name'         => env('ALIYUN_SMS_SIGN_NAME'), // 簽名
];

在.env文件配置以下三項

ALIYUN_ACCESSKEYID=簽名id
ALIYUN_ACCESSKEYSECRET=簽名key 密碼
ALIYUN_SMS_SIGN_NAME=你的簽名

在Driver文件夾新建一個AliAliSMSDrv.php

class AliSMSDrv
{

    /**
     * 發(fā)送驗證碼
     * @param $account
     * @param $msg
     * @return bool|mixed
     */
    public function sendCode($account,$msg)
    {
        $response = $this->sendSMS($account,array('msgno'=>$msg));
        return $response;
    }

    /**
     * 通用
     * @param $mobile   手機號
     * @param $data     數(shù)據(jù)格式
     * $data = array('key1'=>'value1','key2'=>'value2', …… )
     * @param string $templateCode  短信模板Code
     * @return bool
     */
    public static function sendSMS($mobile, $data, $templateCode='你的模板id') {

        $aliSms = new AliSms();
        $response = $aliSms->sendSms($mobile,$templateCode, $data);
        if($response->Message == 'OK'){
            return true;
        }else {
            return false;
        }

    }

}

接著在需要使用的地方調(diào)用

驗證碼業(yè)務(wù)邏輯層

<?php
/**
 * 驗證碼業(yè)務(wù)邏輯層
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/12/26
 * Time: 10:12
 */
namespace App\Services;
use App\Models\ValidateCode;
use App\Models\User;
use App\Driver\AliSMSDrv;
use App\Exceptions\WrongException;

class ValidateCodeService extends BaseModelService {
    const PHONE_VALIDATE = 'phone';//獲取手機驗證碼
    private $phone_driver = AliSMSDrv::class;
    protected static function getModel()
    {
        return ValidateCode::class;
    }
    /**
     * 生成隨機的短信驗證碼貌笨,修改驗證碼長度在AppServiceProvider中驗證碼拓展校驗
     */
    private function genValidateCode()
    {
        return mt_rand(000000,999999);
    }
    /**
     * 獲取驗證碼
     */
    public function  getCode($account,$type)
    {
        //生成隨機的驗證碼
        $code = $this->genValidateCode();
        //發(fā)送驗證碼
        $driver = new $this->phone_driver();
        $result = $driver->sendCode($account,$code);
        if (!$result) {
            throw new WrongException('發(fā)送失敗');
        }
        //刪除舊的驗證碼
        ValidateCode::where(['account'=>$account,'v_type'=>$type])->delete();
        //發(fā)送成功后將驗證碼保存到數(shù)據(jù)庫
        $validate_code = new ValidateCode();
        $validate_code->account = $account;
        $validate_code->v_type = $type;
        $validate_code->send_time = time();
        $validate_code->v_code = $code;
        if(!$validate_code->save()){
            throw new WrongException('發(fā)送驗證碼失敗');
        }
        return $code;
    }
 
    /**
     * 驗證驗證碼是否正確
     */
    public function checkCode($mobile,$v_code)
    {
        $limit_secords = 900 + time();
        $record = ValidateCode::where('send_time','<',$limit_secords)
            ->where('account', '=', $mobile)
            ->orderBy('v_id','desc')
            ->first();
        if($record){
            if ($record->v_times >= 5) {
                throw new WrongException('請重新獲取驗證碼');
            }
            $record->v_times = $record->v_times + 1;
            $record->save();
            if($record->v_code == $v_code){
                ValidateCode::destroy($record->v_id);
                return true;
            }
        }
        throw new WrongException('驗證碼錯誤');
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冗酿,一起剝皮案震驚了整個濱河市巴柿,隨后出現(xiàn)的幾起案子梯码,更是在濱河造成了極大的恐慌为狸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乱陡,死亡現(xiàn)場離奇詭異虽缕,居然都是意外死亡,警方通過查閱死者的電腦和手機女淑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門瞭郑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸭你,你說我怎么就攤上這事凰浮。” “怎么了苇本?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵袜茧,是天一觀的道長。 經(jīng)常有香客問我瓣窄,道長笛厦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任俺夕,我火速辦了婚禮裳凸,結(jié)果婚禮上贱鄙,老公的妹妹穿的比我還像新娘。我一直安慰自己姨谷,他們只是感情好逗宁,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梦湘,像睡著了一般瞎颗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捌议,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天哼拔,我揣著相機與錄音,去河邊找鬼瓣颅。 笑死倦逐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宫补。 我是一名探鬼主播檬姥,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粉怕!你這毒婦竟也來了穿铆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤斋荞,失蹤者是張志新(化名)和其女友劉穎荞雏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體平酿,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡凤优,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜈彼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筑辨。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖幸逆,靈堂內(nèi)的尸體忽然破棺而出棍辕,到底是詐尸還是另有隱情,我是刑警寧澤还绘,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布楚昭,位于F島的核電站,受9級特大地震影響拍顷,放射性物質(zhì)發(fā)生泄漏抚太。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尿贫。 院中可真熱鬧电媳,春花似錦、人聲如沸庆亡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽又谋。三九已至拼缝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搂根,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工铃辖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剩愧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓娇斩,卻偏偏與公主長得像仁卷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子犬第,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Laravel 學(xué)習(xí)交流 QQ 群:375462817 本文檔前言Laravel 文檔寫的很好锦积,只是新手看起來會有...
    Leonzai閱讀 7,912評論 2 12
  • 基礎(chǔ)請參考上篇入門: Webpack4.x 入門上手實戰(zhàn)(2018.08) 一、開始 根據(jù)入門篇構(gòu)建一個基礎(chǔ)的項目...
    River_mx閱讀 1,501評論 2 1
  • title: 變更git 遠程的賬號和密碼 1. 使用情形: 今天幫同事在 安裝 git 軟件歉嗓,感覺重新復(fù)習(xí)了下流...
    勤勞的螞蟻閱讀 2,251評論 0 0
  • 四丰介、MES服務(wù)端部分 4.1 開發(fā)環(huán)境 jdk1.8+SpringBoot 2.1.1 + MyBatis3.4....
    戎碼一生12138閱讀 337評論 0 0
  • 1.要少看電腦手機,必須少看鉴分,每天兩個小時左右哮幢,其他的時間就想一下,看一下書志珍。 2.經(jīng)濟學(xué)確實是很有趣的橙垢。 3.所...
    智囊團閱讀 123評論 0 0