阿里大鱼短信验证码技术

时间:2022-09-25 21:03:02
注:   api接口文件在附件中
接口文件放置位置:
阿里大鱼短信验证码技术 
/**
* 阿里大鱼短信发送
*/
public function sms($tel) {
if (IS_AJAX) {
$sms=M('ShortMsg');
$res=$sms->getByTel($tel);//看看数据库有没有传过来的手机号
$data['name']='阿里阿沙哟';
$code['tel']=$tel;
if($res){//如果有数据
//判断是否是当天发送的,不是则直接把次数清零
if(date('Y-m-d',NOW_TIME)!=date('Y-m-d',$res["send_time"])){
$sms->where(['tel'=>$tel])->setField(['times'=>0]);
}
if($res['times']>5){//限制每天最多发送五次,防刷
$this->ajaxReturn('error');
}
//解决用户网络信号差等接收不到短信而收到不同验证码的问题
//五分钟内发送相同验证码
if(NOW_TIME-$res["send_time"]<300){
$data['code']=$res['code'];
$code['send_time']=$res["send_time"];
$code['code'] = $data['code'];
}else{
$data['code']=\Org\Util\String::randNumber(1000, 9999);
$code['send_time']=NOW_TIME;
$code['code'] = $data['code'];
}
$code['times']=$res['times']+1;//发送后,次数加一
$sms->where(['tel'=>$tel])->save($code);
}else{
$data['code']=\Org\Util\String::randNumber(1000, 9999);//取出四位随机整数
$code['code']=$data['code'];
$code['send_time']=NOW_TIME;
$sms->add($code);
}
vendor('Alidayu.TopSdk');//引入api文件
date_default_timezone_set('Asia/Shanghai');//设置时区
//这下面的代码可以去阿里大鱼官网测试好后copy下来
$c = new \TopClient;//实例化阿里大鱼类
$c->appkey ='appkey';//参数,来自于自己账户
$c->secretKey = 'secretKey';//参数,来自于自己账户
$req = new \AlibabaAliqinFcSmsNumSendRequest;
$req->setExtend("");
$req->setSmsType("normal");
$req->setSmsFreeSignName("短信接口测试");//这个参数也是自己申请设定的
//将验证码存放到session中
session('TEL_CODE', $code);
$data= json_encode($data);
$req->setSmsParam($data);
$req->setRecNum($tel);
$req->setSmsTemplateCode("SMS_25915334");
$resp = $c->execute($req);
if (isset($resp->result->success)) {
//发送成功了
$this->ajaxReturn(true);
}
}
//代表发送失败,可能是接口速度限制,缺钱,或者是非ajax调用
$this->ajaxReturn(false);
}