laravel框架:手机验证注册,短信提供商

一篇介绍基于laravel框架实现短信验证码注册的demo文章。文章篇幅适中,适宜阅读,有不清楚的地方可以私信博主询问,谢谢大家:)

1. 服务商注册

短信的服务商有很多,这里介绍云片,选择云片作为我们的短信服务商,注册成功后,会有 10 条短信的免费额度,但愿够了。

然后点击注册,注册账户

注册成功后,会要求填写姓名及公司名称,可以填写一下相关信息,学生可以填写班级或学校,使用一下而已,之后可能会有电话回访,不影响使用!

基本每个短信服务商都需要设置以及后才允许发送验证码,这一点每个短信服务商都大同小异

然后我们开始添加,签名一般都是跟随在短信的开始或者末尾的比如:

【云片网】云片网验证功能码:XXXXXXX

【云片网】就是签名

在添加或者之前,如果是还没有添加开发者信息,记得去添加

选个人然后提交证件照片即可,然后添加签名,等待通过审核

添加模板也是差不多的操作

2. 安装相关组件

然后我们需要利用composer安装一个组件,使用phpstorm的Terminal输入以下代码:

composer require "overtrue/easy-sms"

为了方便使用我们需要封装一下该组件的ServiceProvider

在config中添加easysms.php文件

也可以使用Terminal命令行添加:

touch config/easysms.php

然后填入如下内容

 5.0,

 // 默认发送配置
 'default' => [
 // 网关调用策略,默认:顺序调用
 'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,

 // 默认可用的发送网关
 'gateways' => [
 'yunpian',
 ],
 ],
 // 可用的网关配置
 'gateways' => [
 'errorlog' => [
 'file' => '/tmp/easy-sms.log',
 ],
 'yunpian' => [
 'api_key' => env('YUNPIAN_API_KEY'),
 ],
 ],
];

然后修改文件:
app/providers/EasySmsServiceProvider.php

app->singleton(EasySms::class, function ($app) {
 return new EasySms(config('easysms'));
 });

 $this->app->alias(EasySms::class, 'easysms');
 }
}

最后 打开config/app.php在providers中添加

App\Providers\EasySmsServiceProvider::class,

然后我们要获取key值

.env 中配置 YUNPIAN_API_KEY

YUNPIAN_API_KEY=*********

.env.example 中也要加入配置示例

YUNPIAN_API_KEY=

3.测试短信

使用artisan调试一下

打开tinker

php artisan tinker

输入以下代码

$sms = app('easysms');
try {
 $sms->send(111111, [
 'content' => '【您的签名】您的验证码是1234。如非本人操作,请忽略本短信',
 ]);
} catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) {
 $message = $exception->getException('yunpian')->getMessage();
 dd($message);
}

注意将111111替换为您的手机号,

【您的签名】您的验证码是1234。如非本人操作,请忽略本短信 改成您的和

然后你可能会报如下错误

curl: (60) SSL certificate problem: unable to get local issuer certificate 错误

解决方法:这是因为缺少相关证书导致的,下载cacert .pem

然后打开php.ini文件

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = "****"

将 **** 替换为你的 cacert .pem 的绝对路径即可

然后再次尝试如果返回乱码,就代表你成功了,返回乱码是因为编码问题,但是你的手机还是不会受到短信,因为乱码的模板没有找到,但是你可以在云片的失败发送里看到这个信息,这个时候新建路由与方法,修改方法,再次测试即可!

成功了记得打赏点积分

参与评论