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;
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分钟内是否已经发过短信
$exists = \Redis::exists('phone'.$input['phone']);
f(!empty($exists)){
return response()->json(['ResultData'=>'失败','info'=>'已发送,请十分钟之后再试']);
}
//随机验证码
$num = 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缓存 设置600秒的有效时间
\Redis::sEtex('phone'.$phone,600,$num);
//发送成功返回成功
return response()->json(['ResultData'=>'成功','info'=>'已发送']);
}else{
//发送失败返回失败
return response()->json(['ResultData'=>'失败','info'=>'重复发送']);
}
}
注意:以上使用时需要安装Predis这个laravel扩展,如果本地已安装了Redis的话就需要把Redis关闭,否则会与Preids冲突
内容来源:吕倡个人博客