mesalution/laravel-mesms
Composer 安装命令:
composer require mesalution/laravel-mesms
包简介
A simple laravel package that helps you send SMS though various service providers
README 文档
README
แพ็กเกจ Laravel สำหรับส่งและจัดการ OTP ผ่านผู้ให้บริการ SMS ได้หลายเจ้า รองรับการเปลี่ยน driver ได้ง่าย และรองรับการเขียน fake สำหรับการทดสอบ
Feature
- รองรับการขอ OTP / ยืนยัน OTP / ขอ OTP ซ้ำ
- สลับ driver ได้ตาม environment (เช่น Production ใช้ gateway จริง, Local ใช้ Fake)
- ออกแบบตามหลัก SOLID ใช้งานร่วมกับ Laravel ได้เต็มรูปแบบ
- รองรับการจัดการ error ผ่าน Exception เฉพาะทาง
Spec Requirement
- PHP >= 8.2
- Laravel >= 10
- Support
Illuminate\Support\Facades\App - Recommend use with Laravel Service Container
Installation
composer require mesalution/laravel-mesms
Configuration
Publish the config:
php artisan vendor:publish --provider="Mesalution\LaravelMesms\SmsServiceProvider"
Edit config/sms.php:
return [ 'driver' => env('SMS_DRIVER', 'promotech'), 'providers' => [ 'fake' => [ 'class' => \Mesalution\LaravelMesms\Providers\FakeSms::class, 'options' => [] ], 'promotech' => [ 'class' => \Mesalution\LaravelMesms\Providers\Promotech::class, 'options' => [ 'url' => env('PROMOTECH_URL', 'http://apisms.promotech.co.th'), 'username' => env('PROMOTECH_USERNAME'), 'password' => env('PROMOTECH_PASSWORD'), 'otcId' => env('PROMOTECH_OTC_ID'), 'senderName' => env('PROMOTECH_SENDER_NAME'), ], ] ] ];
Or config in .env
SMS_DRIVER=promotech
PROMOTECH_USERNAME={{username}}
PROMOTECH_PASSWORD={{password}}
PROMOTECH_OTC_ID={{otcId}}
PROMOTECH_SENDER_NAME={{senderName}}
Usage
Create instance from app() helper
use Mesalution\LaravelMesms\Sms; $sms = app(Sms::class); $otp = $sms->requestOTP('0812345678'); $sms->verifyOTP('otp-id-xxx', '123456'); $sms->resendOTP('otp-id-xxx');
Manual create instance
use Mesalution\LaravelMesms\Sms; $options = [ 'username'=>'{{username}}', 'password'=>'{{password}}', 'otcId'=>'{{otcId}}', 'senderName'=>'{{senderName}}', ]; $sms = new Sms('promotech',$options); $otp = $sms->requestOTP('0812345678'); $sms->verifyOTP('otp-id-xxx', '123456'); $sms->resendOTP('otp-id-xxx');
Inject in controller
use Mesalution\LaravelMesms\Sms; class ExampleController extends Controller { public function __constructor(protected Sms $sms){} public function index() { $otp = $this->sms->requestOTP('0812345678'); $this->sms->verifyOTP('otp-id-xxx', '123456'); $this->sms->resendOTP('otp-id-xxx'); } }
How to implement new driver
Driver must be implement interface Mesalution\LaravelMesms\Contract\Sms
use Mesalution\LaravelMesms\Contracts\Sms; use Mesalution\LaravelMesms\Data\Otp; class MySmsDriver implements Sms { public function requestOTP(string $mobile): Otp { // your logic } public function verifyOTP(string $otpId, string $otpCode): bool { // your logic } public function resendOTP(string $otpId): bool { // your logic } }
Error Handler
this package will throw exception :
- RequestOtpException
- VerifyOtpException
- ResendOtpException
- AuthException
- BadResponseException
- ClientException
- ConfirmedOtpException
- ConnectionException
- ExpiredOtpException
- ExternalException
- InternalException
- InvalidOtpException
- OtpException
- SmsException
You can use try-catch for handle:
try {
$sms->verifyOTP('otp-id', '000000');
} catch (\Mesalution\LaravelMesms\Exceptions\VerifyOtpException $e) {
// จัดการกรณี otp ผิด
}
Testing
./vendor/bin/phpunit
mesalution/laravel-mesms 适用场景与选型建议
mesalution/laravel-mesms 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 07 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 mesalution/laravel-mesms 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 mesalution/laravel-mesms 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-25