1.拉组件
composer require iscms/alisms-for-laravel
2.在config/app.php的providers数组中配置
iscms\Alisms\AlidayuServiceProvider::class,
3.在项目根目录执行
php artisan vendor:publish
4.config目录应该增加alisms.php配置文件
<?php
return [
'KEY' =>env('ALISMS_KEY',null),
'SECRETKEY'=>env('ALISMS_SECRETKEY',null),
];
5.项目的.ENV 配置文件中写入 SMS 配置 例如
ALISMS_KEY=31663166
ALISMS_SECRETKEY=**************
6.实例
use iscms\Alisms\SendsmsPusher as Sms;
public function sendSms($phone)
{
//数据验证
if (empty($phone)) ['ServerNo' => 400, 'ResultData' => '参数错误'];
// 生成验证码
$num = rand(100000, 999999);
// 定义用户名称和验证码
$smsParams = [
'phone' => '用户',
'code' => "$num"
];
// 定义接收用户和配置
$name = '贾济林';
$content = json_encode($smsParams);
$code = 'SMS_47955294';
// 执行发送动作
$data = $this->sms->send("$phone", "$name", "$content", "$code");
// 判断短信发送结果
if (property_exists($data, 'result')) {
// 如果成功,将验证码存入redis 设置2分钟失效时间
Redis::setex(CAPTCHA_SMS.$phone,120,$num);
\Log::info('注册--短信验证码发送成功,验证码是:'.Redis::get(CAPTCHA_SMS.$phone));
return ['ServerNo' => 200, 'ResultData' => '短信发送成功'];
} else {
return ['ServerNo' => 500, 'ResultData' => '短信失败'];
}
}
7.参数解释
登录阿里大于,在这里找到短信验证码的控制台。 你需要配置短信签名和短信模板,需要审批,审批的时候去消息中心可以看到审批不通过的原因。
可以看到,短信签名的签名名称 以及模板里的模板id,是方法中要用到的,需要注意那么模板长啥样呢。
可以看到模板中有一个${phone} ${code},意思是说,在这里定义一个变量区,再在方法中定义好$phone 和 $code ,并用作为数组的两个键值对。类似上面方法中的写法。
[
'phone' => '18106503226',
'code' => '这是验证码'
]
目前为止,方法中的四个参数已经都讲过了,再总结一下,
$data = $this->sms->send("$phone", "$name", "$content", "$code");
第一个参数是目标手机号,第二个参数是短信签名的名称,第三个参数是短信模板中使用到的参数,注意需要转成对象,第四个参数是短信模板ID。