shabayek/laravel-sms

Laravel SMS 发送包

v1.3.5 2022-08-16 14:00 UTC

This package is auto-updated.

Last update: 2024-09-17 15:28:54 UTC


README

Github Status Styleci Status Packagist version mit Packagist PHP Version Support Packagist Downloads

这是一个用于短信网关集成的 Laravel 包。现在发送短信变得简单。

支持的网关列表

安装

通过 Composer

composer require shabayek/laravel-sms

使用方法

  • 发布配置文件
php artisan vendor:publish --provider="Shabayek\Sms\SmsServiceProvider"
  • 选择您希望为您的应用程序使用的网关。然后将其设置为默认驱动,这样您就不必在每处都指定它。但是,您也可以在一个项目中使用多个网关。
'default' => 'smseg',
  • 然后在驱动数组中填写该网关的凭证。
SMS_CONNECTION=smseg
SMS_USERNAME=username
SMS_PASSWORD=password
SMS_SENDER_ID=sender
SMS_SERVICE=normal
  • 发送普通短信消息
use Shabayek\Sms\Facades\Sms;
    
$sms = Sms::send('0120000000', 'Hello world');
  • 发送 OTP 短信消息

如果您设置短信服务为 normal,则将通过短信消息发送;如果您设置短信服务为 otp,则将通过短信消息发送。

use Shabayek\Sms\Facades\Sms;

$sms = Sms::sendOtp('0120000000');
  • 验证手机号码
use Shabayek\Sms\Facades\Sms;

$phone = '09121234567'; // phone number
$otp = '123456'; // otp that you sent to phone
$actualOtp = '123456'; // this is the actual otp that you sent to the user

$verify = Sms::verify($phone, $otp, $actualOtp); // third params is optional with service otp
  • 您可以为 OTP 短信消息设置语言。

en: 英语 ar: 阿拉伯

use Shabayek\Sms\Facades\Sms;

$sms = Sms::setLanguage('ar');
        ->sendOtp('0120000000');

添加自定义缓存驱动器

  • 编写驱动程序

为了创建我们的自定义短信驱动程序,我们首先需要实现 Shabayek\Sms\Contracts\SmsGatewayContract 合同。因此,一个新的 SMS 网关实现可能看起来像这样

namespace Shabayek\Sms\Contracts;

class CustomSms implements SmsGatewayContract
{
    public function send($phone, $message): array;

    public function sendOtp($phone, $message = null);

    public function verify(string $phone, int $otp, $actualOtp = null): bool;

    public function balance() { }
}

然后,我们需要在我们的自定义短信驱动程序中添加一个新的配置。在 sms 配置中的 connections 键下

'connections' => [
    ...
    'custom' => [
        'driver' => 'custom',
        'username' => 'username',
        'password' => 'password',
        'sender_id' => 'sender',
        'service' => 'normal',
    ],
    ...
],

我们可以通过调用 Sms 门面的 extend 方法来完成我们的自定义驱动程序注册

Sms::extend('custom', function ($app) {
    return new CustomSms(config());
});

测试

composer test

安全漏洞

如果您发现了有关安全性的错误,请通过 esmail.shabayek@gmail.com 发送邮件,而不是使用问题跟踪器。

许可

Laravel SMS 网关包是开源软件,许可协议为 MIT 许可证