因為各種業務需求原因,又重複造輪子了,造的不好,歡迎大家指正。
基於業務需求在 overtrue/easy-sms 進行擴充套件開發,主要實現如下功能:
- 支援簡訊驗證碼直接在 config 中配置模板ID
- 支援簡訊驗證碼自定義長度
- 支援簡訊驗證碼有效分鐘,預設5分鐘
- 支援簡訊驗證碼重試次數,防止使用者意外輸錯驗證碼導致需要再次傳送驗證碼的問題
- 支援簡訊驗證碼未驗證時,使用者再次請求驗證碼,在有效分鐘內驗證碼保持一致
- 整合簡訊傳送路由,支援 web 和 api 傳送方式
- 支援驗證碼除錯,debug 模式下可直接查詢手機號目前有效的驗證碼,debug 模式下同時不會驗證驗證碼的正確性
- 支援驗證碼傳送記錄到資料庫,方便檢視傳送日誌和錯誤原因
TODO:
- 支援語音驗證碼
安裝
composer require ibrand/laravel-sms:~1.0 -vvv
低於 Laravel5.5 版本
config/app.php
檔案中 'providers' 新增
iBrand\Sms\ServiceProvider::class
config/app.php
檔案中 'aliases' 新增
'Sms'=> iBrand\Sms\Facade::class
使用
傳送驗證碼
實現了傳送簡訊驗證碼路由,支援 web 和 api ,可以自定義路由的 prefix。
'route' => [
'prefix' => 'sms',
'middleware' => ['web'],
],
or
'route' => [
'prefix' => 'sms',
'middleware' => ['api'],
],
POST請求 http://your.domain/sms/verify-code
引數:mobile
備註:為了支援開發時的除錯,在傳送驗證碼時不去驗證手機號本身的有效性,請在傳送驗證碼前自行驗證。
返回引數:
{
"status": true,
"message": "簡訊傳送成功"
}
驗證驗證碼
use iBrand\Sms\Facade as Sms;
if (!Sms::checkCode(\request('mobile'), \request('code'))) {
//驗證失敗,處理自身業務
}
配置模板 ID
在 config/ibrand/sms.php
的 gateways
引數可以直接新增 code_template_id
來配置模板 id
// 可用的閘道器配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'yunpian' => [
'api_key' => '824f0ff2f71cab52936axxxxxxxxxx',
],
'aliyun' => [
'access_key_id' => 'dalvTXXX',
'access_key_secret' => 'XXXX',
'sign_name' => '阿里雲簡訊測試專用',
'code_template_id' => 'SMS_80215252'
],
'alidayu' =>
//...
],
],
配置 Content
非模板類通道,可以透過 config/ibrand/sms.php 自定義簡訊內容
'content' => '【your signature】親愛的使用者,您的驗證碼是%s。有效期為%s分鐘,請儘快驗證。'
debug
在實際開發中會存在並不用真實發出驗證碼的情況,因此在 debug 模式下,可以透過
http://your.domain/api/sms/info?mobile=1898888XXXX
來直接只看某個手機號當前有效驗證碼資訊。
歡迎大家 star 和提交 issue :)
本作品採用《CC 協議》,轉載必須註明作者和本文連結