PHPackages                             curder/laravel-sms - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. curder/laravel-sms

ActiveLibrary

curder/laravel-sms
==================

ibrand laravel sms base overtrue's easy-sms

2.0.0(1y ago)01MITPHPPHP ^8.1

Since Dec 10Pushed 1y agoCompare

[ Source](https://github.com/curder/laravel-sms)[ Packagist](https://packagist.org/packages/curder/laravel-sms)[ RSS](/packages/curder-laravel-sms/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (5)Versions (2)Used By (0)

Laravel Sms
===========

[](#laravel-sms)

Laravel 贴合实际需求同时满足多种通道的短信发送组件

[![Build Status](https://camo.githubusercontent.com/31e97c95af26a292fe338615eb735336eb466120d8e80f6c7bd4d9a9ccda9f92/68747470733a2f2f7472617669732d63692e6f72672f67756f6a69616e67636c75622f6c61726176656c2d736d732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/guojiangclub/laravel-sms)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/bd88f192394ac4d9e62b6a782e0797d985a87aef7dcd52efdb2efdfe0042bb9d/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f67756f6a69616e67636c75622f6c61726176656c2d736d732f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/guojiangclub/laravel-sms/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/a1ceff18b386011630f5b353a9eb9967310716851716aa5b6fddf45946ac5420/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f67756f6a69616e67636c75622f6c61726176656c2d736d732f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/guojiangclub/laravel-sms/?branch=master)[![Build Status](https://camo.githubusercontent.com/12ae419f37714cf6527e839ca0ae854dbd92bbb8462389613f55577a43037bb7/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f67756f6a69616e67636c75622f6c61726176656c2d736d732f6261646765732f6275696c642e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/guojiangclub/laravel-sms/build-status/master)[![Latest Stable Version](https://camo.githubusercontent.com/6116f2f6cd7f067ed3678f4d0cfa74631838f6202e4b5819a794263fc00d7075/68747470733a2f2f706f7365722e707567782e6f72672f696272616e642f6c61726176656c2d736d732f762f737461626c65)](https://packagist.org/packages/ibrand/laravel-sms)[![Latest Unstable Version](https://camo.githubusercontent.com/0924c04ac295a243af0b47873b6d70d8fb104fe840658dfc93c854660cff5b6a/68747470733a2f2f706f7365722e707567782e6f72672f696272616e642f6c61726176656c2d736d732f762f756e737461626c65)](https://packagist.org/packages/ibrand/laravel-sms)[![License](https://camo.githubusercontent.com/952d008c0643cbae2389f3d0ec74cf3b62f27332344ae41976419eca93840b74/68747470733a2f2f706f7365722e707567782e6f72672f696272616e642f6c61726176656c2d736d732f6c6963656e7365)](https://packagist.org/packages/ibrand/laravel-sms)

Featrue
-------

[](#featrue)

基于业务需求在 [overtrue/easy-sms](https://github.com/overtrue/easy-sms/) 基础进行扩展开发，主要实现如下目标：

1. 支持短信验证码直接在 config 中配置模板ID
2. 支持短信验证码自定义长度
3. 支持短信验证码有效分钟，默认5分钟
4. 支持短信验证码重试次数，防止用户意外输错验证码导致需要再次发送验证码的问题。
5. 支持短信验证码未验证时，用户再次请求验证码，在有效分钟内验证码保持一致。
6. 集成短信发送路由，支持 web 和 api 发送方式。
7. 支持验证码调试，debug 模式下可直接查询手机号目前有效的验证码
8. 支持短信验证码发送记录保存到数据库
9. 短信发送频率限制，同一 IP 限定时间内请求次数

安装
--

[](#安装)

```
composer require curder/laravel-sms -vvv
```

发布
--

[](#发布)

```
php artisan vendor:publish --provider='iBrand\Sms\ServiceProvider'
```

使用
--

[](#使用)

### 发送验证码

[](#发送验证码)

1. 实现了发送短信验证码路由，支持 web 和 api ，可以自定义路由的 prefix。

```
'route' => [
        'prefix' => 'sms',
        'middleware' => ['web'],
    ],

or

'route' => [
        'prefix' => 'sms',
        'middleware' => ['api'],
    ],

```

POST请求 `http://your.domain/sms/verify-code`

参数：mobile

备注：为了开发调试方便，在 debug 模式下不会验证手机的有效性。

返回参数：

```
{
    "status": true,
    "message": "短信发送成功"
}
```

如果需要自定义路由，也可以通过使用 Facade 发送验证码：

```
use iBrand\Sms\Facade as Sms;

Sms::send(request('mobile'));
```

由于使用多网关发送，所以一条短信要支持多平台发送，每家的发送方式不一样，但是我们抽象定义了以下公用属性：

- `content` 文字内容，使用在像云片类似的以文字内容发送的平台
- `template` 模板 ID，使用在以模板ID来发送短信的平台
- `data` 模板变量，使用在以模板ID来发送短信的平台

```
use iBrand\Sms\Facade as Sms;

Sms::send(request('mobile'), [
    'content'  => '您的验证码为: 83115',
    'template' => 'SMS_001',
    'data' => [
        'code' => 83115
    ],
]);
```

默认使用 `default` 中的设置来发送，如果某一条短信你想要覆盖默认的设置。在 `send` 方法中使用第三个参数即可：

```
use iBrand\Sms\Facade as Sms;

Sms::send((request('mobile'), [
    'content'  => '您的验证码为: 83115',
    'template' => 'SMS_001',
    'data' => [
        'code' => 83115
    ],
], ['aliyun']); // 这里的网关配置将会覆盖全局默认
```

### 定义短信

[](#定义短信)

已**容联云通讯**为例：你可以根据发送场景的不同，定义不同的短信类，通过继承 `Overtrue\EasySms\Message` 来定义短信模型：

```
