1.安裝:在項目根目錄下composer require iscms/alisms-for-laravel
2.配置:在config/app.php
文件中數(shù)組providers
添加一行
iscms\Alisms\AlidayuServiceProvider::class,
3.執(zhí)行:在項目根目錄下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;
//使用構造函數(shù)對靜態(tài)屬性進行初始化賦值
public function __construct (Sms $Sms)
{
self::$sms = $Sms;
}
/**
*阿里大于短信插件方法,參數(shù)傳入一個11位的數(shù)字
*$phone 用戶的手機號
*$name 短信簽名,阿里大魚申請的短信簽名的名字
*$content 替換短信模板中的變量,JSON字符串格式,所有值都是字符串,不能有整形
*$code 阿里大魚申請的短信模板編號
*/
public function code (Request $request)
{
$input = $request->all();
//判斷該手機在10分鐘內(nèi)是否已經(jīng)發(fā)過短信
// redis中存在此key返回Integer(1),不存在返回integer(0)
$exists = \Redis::exists('IT:STRING:USER:CODE:' . $input['phone']);
if ($exists == true) {
return response()->json(['ResultData' => '失敗', 'info' => '10分鐘內(nèi)已經(jīng)發(fā)過短信']);
}
//隨機驗證碼村视,mt_rand比rand快
$num = mt_rand(100000, 999999);
$smsParams = [
//阿里大于定義的變量名
'int' => "$num",
'name' => '你好,歡迎你使用本平臺'
];
//要發(fā)送的號碼
$phone = $input['phone'];
//阿里大于短信簽名
$name = '簽名名稱';
//數(shù)組,要發(fā)送的值
$content = json_encode($smsParams);
//你的短信模板ID
$code = '你的模板ID';
$data = self::$sms->send($phone, $name, $content, $code);
//判斷是否發(fā)送成功
if(property_exists($data,'result')){
//把手機號碼存入redis緩存文搂,設置10分鐘的有效時間
//第一個參數(shù)是key脊僚,第二個參數(shù)是有效時間,單位是秒确垫,第三個參數(shù)是value
\Redis::sEtex('IT:STRING:USER:CODE:' . $phone, 600, $num);
//發(fā)送成功時把短信驗證存入session中去粱锐,也可以直接從redis中取
\Session::put('num', $num);
//發(fā)送成功返回成功
return response()->json(['ResultData' => '成功', 'info' => '發(fā)送成功']);
} else {
//發(fā)送失敗返回失敗
return response()->json(['ResultData' => '失敗', 'info' => '發(fā)送失敗']);
}
}
注意:以上使用時需要安裝Predis插件,如果與本地php已經(jīng)安裝了Redis的話就需要把Redis關閉,否則Preids無法使用
在項目根目錄下composer require predis/predis
內(nèi)容來源:呂倡個人博客