短信宝 短信接入

一、在短信宝官网注册账号,获取用户名和密码

二、新增模板,正文内容:您的验证码是{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 ?: '短信发送异常');
        }

 

posted @ 2022-10-01 12:43  深山居士123  阅读(420)  评论(0)    收藏  举报