Laravel 短信扩展包 - 目前支持短信服务商:阿里云 / 云片网 / 腾讯云 / 短信宝 / 赛邮云 /SendCloud/ 互亿无线(支持全网短信扩展)
SMS - 短信发送,从未如此简单。全网首款支持所有短信服务商,自由扩展,无缝对接。
该插件已经在laravel开发的商城系统中进行使用, 配合laravel-settings 扩展插件使用更安逸!
特点:自动通过 templateCode(config/sms.php中templates预设对应的短信服务商调用标识,如:verify_code该标识表示调用短信验证码对应的模板CODE或文字内容) 查找短信模板CODE或模板内容,发送对应的短信,全网独家。
起源:开发商城系统时,需要发送短信,每种短信服务商支持发送格式不一样,有的传模板code,有的直接传中文模板,找遍了GitHub没有能让我满意的短信扩展插件,为了统一短信调用方式,故而开发此款插件,方便你我他!
使用场景: 如果你的项目中短信是固定用一种,确认是采用模板CODE还是文字内容,则无需该插件, 如果你的项目需要多种短信服务商, 同时调用短信时候又想根据短信服务商自动去调用短信对应的模板code或文字内容, 则本插件为首选
安装:
composer require hongyukeji/laravel-sms
发布配置文件:
php artisan vendor:publish --provider="Hongyukeji\LaravelSms\LaravelSmsServiceProvider"
使用方式:
$sms = sms_send('13952101395', 'verify_code', ['code' => '1234']);
print_r($sms);
上述代码可以看出来使用方式非常So Easy!使用助手函数sms_send,第一个参数传入手机号,第二个参数传入短信sms.config配置文件中的templates预设的模板编号,第三个参数填写对应的短信模板参数。短信sms.config配置文件中driver为使用的短信服务商。其余不懂的可以看代码,相当简单,却能实现如此方便的功能,如果您有好的代码优化建议,可以在GitHub中给我留言,我会及时关注的。
评论区有位小伙伴没理解到位该插件的使用场景, overtrue/easy-sms 如果系统使用者通过后台切换了短信服务商,如原有短信服务商是阿里短信, 该短信调用方式为:手机号+模板CODE+参数, 切换至短信宝短信: 手机号+文字内容+参数,不可能在系统里面每个短信调用的地方都去写上全部短信服务商的调用方式, 本插件可以在调用方式不改变的情况下, 兼容各个短信服务商, 后台任意切换短信服务商, 短信调用写法就一种, 全系统任何地方都只有一种调用方式. 这位小伙伴如果你做过平台系统, 用户可以后台自动切换短信服务商的那种功能, 你或许就能明白该款插件的好处了, overtrue/easy-sms 这个扩展包实现的功能, 和本人写的hongyukeji/sms这个扩展包是一样的,只能单纯的调用发送短信, 不能做到智能化嵌入各类laravel开发的应用中, hongyukeji/laravel-sms就是为了在laravel中实现, 一种短信调用方式, 可以做到随意切换短信服务商, 和不必去考虑每个调用的地方是传模板CODE还是文本内容而诞生的扩展插件
- 特别提醒: overtrue/easy-sms 该款短信扩展插件, 发送短信第二个参数为数组, 数组里面分为content(文字内容)和template(模板 ID), 本人开发平台系统时候, 短信传参时候不可能再去判断是哪个服务商, 是传模板code还是传模板编码, 所以统一把content(文字内容)和template(模板 ID)合为一个参数,由[hongyukeji/laravel-sms]插件自行去识别是模板code还是短信内容,下面是代码示例:
// get_sms_code()该助手函数配合config/sms.php实现了只需要传参预设好的templates中标识(如: verify_code)就可以自动调用短信服务商对应的content(文字内容)或template(模板 ID) if (!function_exists('get_sms_code')) { /** * 根据key获取短信模板Code或文字内容 * * @param $key * @return \Illuminate\Config\Repository|mixed */ function get_sms_code($key) { $gateway = config('sms.driver'); return config("sms.templates.{$gateway}." . $key); } }
// config/sms.php 'templates' => [ 'yunpian' => [ 'verify_code' => env('SMS_YUNPIAN_VERIFICATION_CODE'), 'user_account_pay' => '', 'user_order_deliver_goods' => '', 'seller_new_order' => '', 'seller_order_account_pay' => '', ], 'duanxinbao' => [ 'verify_code' => '您的验证码是%s。有效期为15分钟,请尽快验证!', 'user_account_pay' => '已经收到您的订单,订单编号:%s,我们将尽快给您发货。', 'user_order_deliver_goods' => '您的订单已发货,订单编号:%s,收货人:%s,联系电话:%s,收货地址:%s,请注意查收!', 'seller_new_order' => '您有一条新订单,订单编号:%s,请注意查看。', 'seller_order_account_pay' => '客户已付款,订单编号:%s,收货人:%s,联系电话:%s,订单金额:%s。', ], // Other... ],
本作品采用《CC 协议》,转载必须注明作者和本文链接
https://github.com/overtrue/easy-sms 了解一下
直接定义全局函数sms可能会和本地的冲突