短信宝 短信接入
一、在短信宝官网注册账号,获取用户名和密码
二、新增模板,正文内容:您的验证码是{code}。如非本人操作,请忽略本短信
三、新增路由,routes/api.php
<?php
use Illuminate\Http\Request;
Route::prefix('v1')->name('api.v1.')->group(function () {
// 短信验证码
Route::post('verificationCodes', 'VerificationCodesController@store')
->name('verificationCodes.store');
});
四、创建 API 表单请求验证类
php artisan make:request Api/FormRequest
app/Http/Requests/Api/FormRequest.php
<?php
namespace App\Http\Requests\Api;
use Illuminate\Foundation\Http\FormRequest as BaseFormRequest;
class FormRequest extends BaseFormRequest
{
public function authorize()
{
return true;
}
}
五、创建验证码的验证类
php artisan make:request Api/VerificationCodeRequest
app/Http/Requests/Api/VerificationCodeRequest.php
<?php
namespace App\Http\Requests\Api;
class VerificationCodeRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
* @return array
*/
public function rules()
{
return [
'phone' => [
'required',
'regex:/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199)\d{8}$/',
]
];
}
}
六、安装 easy-sms
$ composer require "overtrue/easy-sms"
创建一个 ServiceProvider
php artisan make:provider EasySmsServiceProvider
修改app/providers/EasySmsServiceProvider.php
<?php
namespace App\Providers;
use Overtrue\EasySms\EasySms;
use Illuminate\Support\ServiceProvider;
class EasySmsServiceProvider extends ServiceProvider
{
public function boot()
{
//
}
public function register()
{
$this->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
即: 'providers' => [ . .
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\EasySmsServiceProvider::class,
]
七,增加短信模板配置
config/easysms.php
return [
// HTTP 请求的超时时间(秒)
'timeout' => 10.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'smsbao',
],
],
// 可用的网关配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'aliyun' => [
'access_key_id' => env('SMS_ALIYUN_ACCESS_KEY_ID'),
'access_key_secret' => env('SMS_ALIYUN_ACCESS_KEY_SECRET'),
'sign_name' => 'Larabbs',
'templates' => [
'register' => env('SMS_ALIYUN_TEMPLATE_REGISTER'),
]
],
'smsbao' =>[
'user'=>'******',
'password' => '******'
]
]
];
八、修改控制器 VerificationCodesController
try {
$result = $easySms->send($phone, [
'content'=>"您的验证码是{$code}。如非本人操作,请忽略本短信"
]);
} catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) {
$message = $exception->getException('smsbao')->getMessage();
abort(500, $message ?: '短信发送异常');
}

浙公网安备 33010602011771号