由于此次测试使用的账号并不是我本人的,所以这里不再去演示怎么去申请服务,创建模板,实际可以去以下连接,跟着教程一步一步走登录 - 腾讯云
引入短信业务的依赖与redis依赖
这里文档里有提示不要引入4.0以上的版本,因为并非最新版
<!--腾讯云短信服务-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>3.1.270</version><!-- 注:这里只是示例版本号(可直接使用),可获取并替换为 最新的版本号,注意不要使用4.0.x版本(非最新版本) -->
</dependency>
<!--Redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
根据官方文档生成短信业务代码并将生成的验证码添加至redis中
@PostMapping("test/getvercode")
public String sendSms(String phoneNum) {
Integer flag = mobileLoginDbMapper.checkPhoneNum();
if (ObjectUtil.isNotEmpty(flag)) {
return "exist";
}
try {
// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
// 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
Credential cred = new Credential("*******填写自己的********", "*******填写自己的********");
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("sms.tencentcloudapi.com");
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的(此处地区设置,我测试的时候一开始没有设置,但是报错了)
SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
SendSmsRequest req = new SendSmsRequest();
//手机号
String[] phoneNumberSet = {"+86" + phoneNum};
req.setPhoneNumberSet(phoneNumberSet);
//生成6位数验证码
String verificationCode = this.generateCode();
//发送的内容(验证码)(参数2:有效时间5分钟)
req.setTemplateParamSet(new String[]{verificationCode, "5"});
req.setSmsSdkAppId("填写自己的");
req.setSignName("填写自己的");
req.setTemplateId("填写自己的");
//将验证码存储redis中
//过期时间为五分钟
stringRedisTemplate.opsForValue().set(phoneNum, verificationCode,5, TimeUnit.MINUTES);
// 返回的resp是一个SendSmsResponse的实例,与请求对象对应
SendSmsResponse resp = client.SendSms(req);
// 输出json格式的字符串回包
System.out.println(SendSmsResponse.toJsonString(resp));
return "true";
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
return "false";
}
随机生成验证码
/**
* 生成随机的验证码
*
* @return
*/
public String generateCode() {
return RandomStringUtils.randomNumeric(6);
}
如果知识简单的测试,这样就可以了但最好还是把secretId,secretKey,appkey等等这些值都定义在配置文件里