200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Java后端利用腾讯云短信服务发短信

Java后端利用腾讯云短信服务发短信

时间:2022-03-03 03:02:03

相关推荐

Java后端利用腾讯云短信服务发短信

利用手机验证码进行注册或进行下一步操作已经是非常普遍的,这篇文章就教你如何是用腾讯云短信服务发送手机验证码。

文章目录

一、前提条件

二、代码实现

1.引入依赖

2.Java代码实现

3.代码改进

4.实现效果

三,关于项目中验证码验证逻辑分享

1.发送手机验证码并进行Redis存储

2.验证逻辑

一、前提条件

腾讯云官网账号,已开通短信服务

需要用到的参数 1.短信签名id,(需要审核)

2.短信正文签名模板,(需要创建审核)

3.应用id,(创建)

4.有剩余短信包(新用户开通后有免费200条,可购买)

上面是需要具备的前提条件,腾讯云还可以设置条数限制。代码开发需要用到上面的参数,不懂得如何获得参数的可以去看这个视频 /video/BV1KE411K7Sd

二、代码实现

1.引入依赖

<!--腾讯云手机验证码--><dependency><groupId>com.github.qcloudsms</groupId><artifactId>qcloudsms</artifactId><version>1.0.6</version></dependency>

2.Java代码实现

package com.liyingjie.lyjalipay.controller;import cn.hutool.core.util.RandomUtil;import com.github.qcloudsms.SmsSingleSender;import com.github.qcloudsms.SmsSingleSenderResult;import com.github.qcloudsms.httpclient.HTTPException;import com.liyingjie.lyjalipay.domain.Sms;import org.json.JSONException;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException;@SpringBootTestclass SmsControllerTest {@Testpublic void sms(){//腾讯云固定参数int appid = 1400655460; //腾讯云应用idString appkey="133213"; //腾讯云应用Keyint templateId= 1354718; //模板idString smsSign="杰杰不会hellowor"; //签名内容//可变参数String phoneNumber ="123456";//手机号码String code="131";//手机验证码String min="5";//有效时长try {String[] params = {code,min}; //param1,手机验证码;param2,有效时长,配合正文模板参数SmsSingleSender smsSingleSender = new SmsSingleSender(appid, appkey);SmsSingleSenderResult smsSingleSenderResult = smsSingleSender.sendWithParam("86", phoneNumber, templateId, params, smsSign, "", "");System.out.println(smsSingleSenderResult);} catch (IOException e) {e.printStackTrace();} catch (HTTPException | JSONException e) {e.printStackTrace();}}}

3.代码改进

package com.liyingjie.lyjalipay.controller;import cn.hutool.core.util.RandomUtil;import com.github.qcloudsms.SmsSingleSender;import com.github.qcloudsms.SmsSingleSenderResult;import com.github.qcloudsms.httpclient.HTTPException;import com.liyingjie.lyjalipay.domain.Sms;import org.json.JSONException;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException;@SpringBootTestclass SmsControllerTest {@Testpublic void sms(){//腾讯云固定参数int appid = 1400655460; //应用idString appkey="76bcf5ddb58******"; //应用Keyint templateId= 222222;//模板idString smsSign="杰杰不会hellowor";//用户参数Sms sms =new Sms();sms.setPhoneNumber("132");sms.setCode(RandomUtil.randomNumbers(6));//验证码6位随机sms.setMin(5); //验证码有效时长try {String[] params = {sms.getCode(),Integer.toString(sms.getMin())};SmsSingleSender smsSingleSender = new SmsSingleSender(appid, appkey);SmsSingleSenderResult smsSingleSenderResult = smsSingleSender.sendWithParam("86", sms.getPhoneNumber(), templateId, params, smsSign, "", "");System.out.println(smsSingleSenderResult);} catch (IOException e) {e.printStackTrace();} catch (HTTPException | JSONException e) {e.printStackTrace();}}}

4.实现效果

三,关于项目中验证码验证逻辑分享

以上只有验证码发送,在前后端项目中要实现验证码验证,可以用redis缓存数据库实现

1.发送手机验证码并进行Redis存储

将上面的发送手机验证码封装成一个工具类SmsUtil里的一个方法。返回随机六位的验证码

将返回的验证码存储在redis中,以手机号码为key,验证码为值,有效时间统一一下。

@ApiOperation("发送手机验证码")@GetMapping("/send/{phoneNumber}")public AjaxResult sendCode(@PathVariable("phoneNumber") String phoneNumber){String phoneCode = SmsUtil.send(phoneNumber);redisCache.setCacheObject(phoneNumber,phoneCode,5, TimeUnit.MINUTES);return AjaxResult.success(phoneCode);}

2.验证逻辑

在上一步发送完成之后,提交表单参数时携带者手机号与验证码参数,

String redisCode = redisCache.getCacheObject(phoneNumber);Boolean flag = redisCode.equals(phoneCode)

验证成功后再进行下一步操作,否则不执行

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。