一、sms-sdk:
一个集成腾讯云、短信宝短信发送的工具类
配置参数,可快速实现不同平台的短信发送(目前只支持腾讯云、短信宝)
1.下载composer包包
composer require mrwanghongda/sms-sdk
2.设置一个手机号文本框和一个短信验证码框
<div class="controls">
<div class="control-group">
<label class="control-label">手机号:</label>
<input type="text" id="phone" name="phone" placeholder="请输入你的手机号" class="input-xfat input-xlarge">
<span class="error"></span>
</div>
</div>
<div class="control-group">
<label for="inputPassword" class="control-label">验证码:</label>
<div class="controls">
<input type="text" id="code" name="code" placeholder="验证码" class="input-xfat input-xlarge" style="width:120px">
<button type="button" class="btn-xlarge code" id="dyMobileButton">发送验证码</button>
<span class="error"></span>
</div>
</div>
3.设置一个发送验证码的路由
Route::get('code','Login/code');
4.jquery代码
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function (){
//验证码
$(".code").click(function (){
//获取phone值
var phone = $("#phone").val();
$.ajax({
url:'code',
data:{phone:phone},
success:function (e){
}
})
})
</script>
5.控制器写方法
public function code(Request $request)
{
use App\Factory\SmsFactory;
/**
* 短信宝
*/
const SMS_BAO = 'bao';
/**
* 腾讯云
*/
const SMS_TENCENT = 'tencent';
/**
* 阿里云正在开发中...
*/
const SMS_ALIYUN = 'aliyun';
//接收传递的phone
$tel = $request->get('phone');
//工厂模式
$smsObj = (new SmsFactory(SmsFactory::SMS_BAO))->getSmsService();
/* 必要步骤:
* 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
* 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
* 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
* 以免泄露密钥对危及你的财产安全。
* CAM密匙查询: https://console.cloud.tencent.com/cam/capi*/
$config = [
/* 填写平台对应的CAM密匙secretId,短信宝填写平台账号*/
'secretId' => '',
/* 填写平台对应的CAM密匙secretKey,短信宝填写平台密码*/
'secretKey' => '',
/* 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId,示例如1400006666 ,短信宝默认为空*/
'smsSdkAppId' => '',
/* 验证码,示例如5039 */
'code' => $code,
/* 填写腾讯、阿里平台对应的签名内容,短信宝则默认为空 */
'signName' => '',
/* 发送的手机号,示例如17899873465 */
'tel' => $tel,
/* 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看 */
'templateId' => "",
/* 模板发送的短信内容,短信宝则需要填写 如:"【短信宝】您的验证码是"5390",3分钟有效。", 腾讯、阿里默认为空 */
'content' => '【短信宝】您的验证码是'.$code.',3分钟有效。',//
];
$result = $smsObj->send($config);
}