TP5快速使用腾讯短信接口封装的方法

直接讲方法就行了
1.请自行下载附件(SmsMultiSender.php ,SmsSenderUtil.php,SmsSingleSender)有三个文件,请注意我的命名空间为namespace sms;下载解压出来放在sms文件夹里(注意三个文件放在sms根目录下)
2.把sms文件夹放在TP5目录下的extend 展类库目录即可。
3.如何使用:在需要发短信的controller程序页面头先引入
use sms\SmsMultiSender;
use sms\SmsSenderUtil;
use sms\SmsSingleSender; 这样就可以使用了。
4.我在附件里加了一个官方的demo,标题已注明哦,切记不可以直接运行哦,你可把它复制出来制作成一个函数来调用即可,顺便我把生成验证码的函数也贴在里面了,具体使用方法自己看注解吧。


function sendsms($tel){
try {
// 请根据实际 appid 和 appkey 进行开发,以下只作为演示 sdk 使用
$appid = 000000;//请自己申请填入
$appkey = "d0000000"; //请自己申请填入
$templId = 0000000;//请自己申请填入
$singleSender = new \sms\SmsSingleSender($appid, $appkey);//不用解说了吧
// 指定模板单发
// 假设模板内容为:测试短信,{1},{2},{3},
$mobilelz=$this->generate_code();//生成验证码
//把手机号码和验证码写入数据库

$where['mobile']=$tel;
$user=Db::name('mobile')->where($where)->find();//写放数据库前查询一下是否有登记
if(!$user){//没有登记就先登记
$member['mobile']=$tel;
$member['mobilelz']=$mobilelz;
$member['credate']=date('Y-m-d H:i:s');//创建时间
$member['enddate']=date('Y-m-d H:i:s',strtotime('+180 second'));//验证码失效时间我这里设置3分钟后失效
$mobid=Db::name('mobile')->insert($member,false,true);//写入数据库
if($mobid){//写入库成功才到验证码发送出去
$params = array($mobilelz, "3");//我申请的短信模板只有两个参数 $mobilelz这个是生成的随机验证码 “3” 收到短信上显示3分钟后失效
$result = $singleSender->sendWithParam("86", $member['mobile'], $templId, $params, "", "", "");//开始发短信
$rsp = json_decode($result);
if($result=null){ //如果发送出去没有返回数据,表示短信没有发送成功 这里好像有点问题,还得查看下官方解释才能完善,希望大家提出很好处理方法
Db::name('mobile')->where('mobile',$tel)->delete(); //没有发送成功,应该把已写入的数据 清除
return false;
}else{
return $result; //返回短信有关信息 你可以用dump 显示看下返回了那些信息
}
}else{
return false;//数据写有问题的话返回假
}

}elseif((date('Y-m-d H:i:s')>$user['enddate'])){//当前时候大于失效时间
Db::name('mobile')->where('mobile',$tel)->delete();//如果失效先删除 避免重复产生冗余
return ['error'=>'手机验证码失效'];
}

} catch (\Exception $e) {
echo var_dump($e);
}
}

修正了
function sendsms($tel){
try {
// 请根据实际 appid 和 appkey 进行开发,以下只作为演示 sdk 使用
$appid = 00000;
$appkey = "0000000";
$templId = 00000;
//$phoneNumber1 = $tel;
$singleSender = new \sms\SmsSingleSender($appid, $appkey);
// 指定模板单发
// 假设模板内容为:测试短信,{1},{2},{3},
$mobilelz=$this->generate_code();//生成验证码
//把手机号码和验证码写入数据库

$where['mobile']=$tel;
$user=Db::name('mobile')->where($where)->find();
if(!$user){
$member['mobile']=$tel;
$member['mobilelz']=$mobilelz;
$member['credate']=date('Y-m-d H:i:s');//创建时间
$member['enddate']=date('Y-m-d H:i:s',strtotime('+180 second'));//验证码失效时间
$mobid=Db::name('mobile')->insert($member,false,true);//没有登记就写入
if($mobid){//写入库成功才到验证码发送出去
$params = array($mobilelz, "5");
$result = $singleSender->sendWithParam("86", $member['mobile'], $templId, $params, "", "", "");
$rsp = json_decode($result);
if($rsp['result']!=0){//放送失败的话
Db::name('mobile')->where('mobile',$tel)->delete();
return false;
}else{
return true; //返回短信信息
}
}else{
return false;
}

}elseif((date('Y-m-d H:i:s')>$user['enddate'])){//当前时候大于失效时间
Db::name('mobile')->where('mobile',$tel)->delete();
return false;
}

} catch (\Exception $e) {
echo var_dump($e);
}
}

猜你喜欢

转载自blog.csdn.net/jianai0602/article/details/77937009