200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 基于SpringBoot+腾讯云短信服务实现接收手机验证码功能

基于SpringBoot+腾讯云短信服务实现接收手机验证码功能

时间:2022-10-04 09:32:30

相关推荐

基于SpringBoot+腾讯云短信服务实现接收手机验证码功能

在腾讯云中配置需要的服务申请签名和短信模板创建应用在项目application.yml中配置相关参数在项目中安装腾讯云短信服务的依赖包

<!--腾讯云--><dependency><groupId>com.github.qcloudsms</groupId><artifactId>qcloudsms</artifactId><version>1.0.6</version></dependency>

创建SmsConstantUtil工具类来获取配置文件中的参数

import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.ponent;/**腾讯云短信服务 */@Component@PropertySource("classpath:application.yml")public class SmsConstantUtil implements InitializingBean {@Value("${tencent.appid}")private Integer APPID;@Value("${tencent.appkey}")private String APPKEY;@Value("${tencent.templateId}")private Integer TEMPLATEID;@Value("${tencent.signname}")private String SIGNNAME;public static Integer APP_ID;public static String APP_KEY;public static Integer TEMPLATE_ID;public static String SIGN_NAME;@Overridepublic void afterPropertiesSet() throws Exception {APP_ID = APPID;APP_KEY = APPKEY;TEMPLATE_ID = TEMPLATEID;SIGN_NAME = SIGNNAME;}}

创建service和实现类来实现相应功能

ps:这里对所需要的参数进行了封装

@Data@Componentpublic class SmsCodeVo {private String phone;private String code;}

SmsService:

public interface SmsService {Result sendCode(SmsCodeVo smsCodeVo);}

SmsServiceImpl:

@Servicepublic class SmsServiceImpl implements SmsService {@AutowiredSmsCodeVo smsCodeVo;@AutowiredRedisTemplate<String, String> redisTemplate;@Overridepublic Result sendCode(SmsCodeVo smsCodeVo) {// 获取配置信息Integer appId = SmsConstantUtil.APP_ID;String appKey = SmsConstantUtil.APP_KEY;Integer templateId = SmsConstantUtil.TEMPLATE_ID;String signName = SmsConstantUtil.SIGN_NAME;if (StringUtils.isBlank(smsCodeVo.getPhone())){return Result.error(ErrorCode.PARAMS_NULL.getCode(),ErrorCode.PARAMS_NULL.getMsg());}// 获取手机号String phone = smsCodeVo.getPhone();// 生成验证码String verifyCode = vcode();smsCodeVo.setCode(verifyCode);// 存入redisredisTemplate.opsForValue().set(phone,verifyCode.replaceAll("[[\\s-:punct:]]", ""), 300, TimeUnit.SECONDS);try{String[] params = {smsCodeVo.getCode()}; //短信中的参数SmsSingleSender ssender = new SmsSingleSender(appId, appKey);SmsSingleSenderResult result = ssender.sendWithParam("86", smsCodeVo.getPhone(), templateId,params, signName, "", "");//打印返回结果System.out.println(result);if (result.result == 0){return Result.success(200,"发送成功");}if (result.result == 1025){return Result.error(1025,"验证码已经发上限制!!!,请稍后再试");}} catch (HTTPException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return Result.error(400,"发送失败");}/*** 生成6位随机短信验证码*/public static String vcode(){String vcode = "";for (int i = 0;i <6;i++){vcode = vcode + (int) (Math.random()*9);}return vcode;}}

在控制器controller中实现调用功能

@RestController@Controller@Api(tags = "短信模块")@CrossOriginpublic class SmsController {@AutowiredSmsService smsService;@PostMapping("/sendCode")@ApiOperation(value = "发送短信验证码")public Result sendCode(@RequestBody SmsCodeVo smsCodeVo){return smsService.sendCode(smsCodeVo);}}

启动项目,测试功能

手机接收如下:

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