/*
* 发送短信验证码通用接口
* 请求参数,tel_num
* */
public function sendCode(Request $request)
{
//验证请求方式!
if (!$request->isPost()){
return json(['status'=>1000,'msg'=>'请求方式错误!']);
}
//验证参数
$rule = [
'tel_num'=>'require|length:11',
'captcha|验证码'=>'require|captcha'
];
$msg = [
'tel_num.require'=>'电话号码不能为空!',
'tel_num.length'=>'手机号位数错误!',
'captcha.require'=>'图形验证码不能为空!',
'captcha.captcha'=>'图形验证码不正确!'
];
$validate = Validate::make($rule,$msg);
if (!$validate->check($request->param())){
return json(['code'=>1001,'msg'=>$validate->getError()]);
}
$sms = new SendTemplateSMS();
$str = mt_rand(1000,9999);
$result = $sms->sendSms($_POST['tel_num'],array($str,5),206235);
if($result == false) {
return json(['status'=>1003,'msg'=>'短信发送失败,请稍后重试!']);
}else if($result == 1){
return json(['status'=>1003,'msg'=>'当日发送短信次数上限!']);
}else{
Cache::set($request->param('tel_num'),$str,300);
return json(['status'=>200,'msg'=>'success']);
}
}
下面是调用的SendTemplateSMS类
<?php
//发送短信通用方法
namespace myFun;
use sms\SMS;
use think\Config;
class SendTemplateSMS
{
private $accountSid;
private $accountToken;
private $appId;
private $serverPort;
private $serverIP;
private $softVersion;
public function sendSms($to,$datas,$tempId){
$this->accountSid = Config::get('smsConfig.accountSid');
$this->accountToken = Config::get('smsConfig.accountToken');
$this->appId = Config::get('smsConfig.appId');
$this->serverIP = Config::get('smsConfig.serverIP');
$this->serverPort = Config::get('smsConfig.serverPort');
$this->softVersion = Config::get('smsConfig.softVersion');
$rest = new SMS($this->serverIP,$this->serverPort,$this->softVersion);
$rest->setAccount($this->accountSid,$this->accountToken);
$rest->setAppId($this->appId);
// 发送模板短信
$result = $rest->sendTemplateSMS($to,$datas,$tempId);
if($result == NULL ) {
return false;
}else if($result->statusCode==160040 || $result->statusMsg=='验证码超出同模板同号码天发送上限'){
return 1;
}else if($result->statusCode!=0) {
return false;
}else{
return true;
}
}
}
?>