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

文章目录

一、前提条件

二、代码实现

1.引入依赖

2.Java代码实现

3.代码改进

4.实现效果 

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

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

2.验证逻辑


一、前提条件

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

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

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

3.应用id,(创建)

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

上面是需要具备的前提条件,腾讯云还可以设置条数限制。代码开发需要用到上面的参数,不懂得如何获得参数的可以去看这个视频 https://www.bilibili.com/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;@SpringBootTest
class 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;@SpringBootTest
class 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)

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

Java后端利用腾讯云短信服务发短信相关推荐

  1. 轻松集成腾讯云短信服务实现短信发送(Java实现)

    不论是阿里云还是腾讯云,要想在网站上实现短信发送功能,首先得保证你的网站域名是通过备案的,因为短信签名是需要用到备案过的域名截图,所以域名通过了,申请很快就会审批成功了. (至于备案的话,需要你先购买 ...

  2. 如何利用腾讯云短信服务群发祝福短信?

    节日问候以及日常问候已经是企业维护已有会员的重要方式之一,我们可以利用腾讯云短信服务群发节假日祝福以及问候短信. 准备工作: 1.购买腾讯云短信套餐包[国内短信首购低至0.032元/条] 2.准备短信 ...

  3. 微信小程序利用腾讯云IM发送语音 + 图片

    微信小程序利用腾讯云IM发送语音 + 图片 能做到这里 说明你已经可以发送普通文本了 如果没有的话可以看一下我的上一篇文章 有完整的讲解 效果图 语音聊天 发送图片 传送 → 发送图片 发送语音 ** ...

  4. 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)

    一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...

  5. web利用腾讯云点播上传视频

    web利用腾讯云点播上传视频到云服务器 第一步导入 <script src="//imgcache.qq.com/open/qcloud/js/vod/sdk/ugcUploader. ...

  6. 使用阿里云的短信服务发送短信

    原文地址使用阿里云的短信服务发送短信 在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发 ...

  7. 利用腾讯云函数做蓝奏云解析API

    利用腾讯云函数做蓝奏云解析API 前言 忽然在网上看到网友说tenapi的蓝奏云解析不能用了,恰巧又在B站上看到某up主的相关文章,一时起意就用up主的代码稍加更改,改造了个能在腾讯云函数跑起来的版本 ...

  8. 【腾讯云服务器+PicGo搭建自己的图床】利用腾讯云服务器搭建自己的私人图床

    起因 一直以来用的gitee图床挂了,本来想折腾折腾再换个图床的,但仔细想想任何图床都有再次挂掉的风险,千好万好不如自己有,之前一直图方便懒就没搭建自己的图床,今天趁这个机会自己利用腾讯云COS搭建一 ...

  9. 利用腾讯云 SDK 动态更新dnspod域名IP(原创)

    之前一直用f3322.net的域名解析,但是因为觉得它不够稳定,所以近期改用dnspo免费域名解析,为了更稳定地使用,我利用腾讯云SDK实现了ip地址动态更新         由于本人的opwrt不知 ...

最新文章

  1. 客快物流大数据项目(五):Docker介绍
  2. 在Linux执行命令报错”Arg list too long”的原因分析
  3. MySQL 5.1完全卸载
  4. oracle 10.2 连接超时,debian9 python3.6连接oracle10.2
  5. 用python做自我介绍_python入门教程NO.2 用python做个自我介绍
  6. 里能嵌jquery吗_白芸豆里的淀粉阻断成分,能帮助减肥是真的吗?
  7. python已知有列表_python 列表常用方法
  8. iphone 低版本渲染不出来内容的一种解决办法
  9. C语言寻找第k小元素,小技巧——查找第k小的元素
  10. python题目-兔子生育计数
  11. 基于C++实现考试报名系统
  12. 在VS2017中添加WTL窗口
  13. cython使用初步
  14. elixir 读取 marc条目 目次区字段信
  15. Free IPA docker 安装记录
  16. 基于PHP语言Laravel+Layui后台代码生成工具
  17. WINDOWSnbsp;XP启动控制面板命令大全
  18. 易优cms iis怎么去掉index.php Eyoucms快速入门
  19. 电脑密码忘记了怎么办?不用U盘,轻松开启电脑
  20. java毕业设计电动机营销系统Mybatis+系统+数据库+调试部署

热门文章

  1. 漏洞建议:实施 TLS_FALLBACK_SCSV。此外,要么完全禁用 SSLv3,要么禁用以通过 SSLv3 的 CBC 模式操作的所有密码套件
  2. 快速入门Web前端开发
  3. 国产深度deepin操作系统20.2.4发布
  4. 为什么Windows系统磁盘盘已使用空间大小与磁盘中总文件大小不符?
  5. 智慧厕所空气净化设备异味除臭杀菌更彻底
  6. 使用DGL进行异构图元路径采样
  7. 如何获得当前所在的DLL模块名称
  8. 建模工具:octave
  9. IT行业的哪些岗位比较有前途?
  10. 博客内容导航——你想要的我都有!