0
点赞
收藏
分享

微信扫一扫

java 集成 sms 腾讯云短信 实现 redis 短信验证

i奇异 2022-08-05 阅读 59


文档地址:

java 接入sms文档:​​https://cloud.tencent.com/document/product/382/13613​​

 

实例代码maven 引入 依赖

<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.5</version>
</dependency>

 

java 

package com.supermap.sms.service;

import java.io.IOException;

import org.json.JSONException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import com.supermap.redis.RedisUtil;

/**
* 腾讯云sms短信服务
*
* @author yushen
*
*/
@Component
public class SmsServive {

@Value("${sms.appids}")
private int appid; // 短信应用SDK AppID

@Value("${sms.appkey}")
private String appkey;// 短信应用SDK AppKey

@Value("${sms.templateId}")
private int templateId; // 短信模板ID,

@Value("${sms.smsSign}")
private String smsSign; // 签名内容`,而不是`签名ID`

@Autowired
private RedisUtil redisutil;

public void SmsServive() {

}
/**
* 短信发送验证码
*
* @param phone
* @param sign
*/
private void sendSms(String phone, String sign) {
try {
String[] params = { sign, "5" };// 数组具体的元素个数和模板中变量个数必须一致,例如事例中templateId:5678对应一个变量,参数数组中元素个数也必须是一个
int appida = Integer.valueOf(appid);
int templateIda = Integer.valueOf(templateId);
SmsSingleSender ssender = new SmsSingleSender(appida, appkey);
SmsSingleSenderResult result = ssender.sendWithParam("86", phone, templateIda, params,
smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
System.out.println(result);
} catch (HTTPException e) {
// HTTP响应码错误
e.printStackTrace();
} catch (JSONException e) {
// json解析错误
e.printStackTrace();
} catch (IOException e) {
// 网络IO错误
e.printStackTrace();
}
}

/**
* 生成验证码
*
* @return
*/
private int scsmsSign() {
return (int) ((Math.random() * 9 + 1) * 1000);
}

//控制层调用这个方法实现
public int getsmsSign(String phone) {
String sgin = String.valueOf(scsmsSign());
redisutil.set(phone, sgin, 60000 * 5); //保存到redis中
sendSms(phone, sgin);//redis 发送
return 1;
}

// public static void main(String[] args) { //main测试
// SmsServive sc = new SmsServive();
// System.out.println(sc.appid+"--"+sc.appkey);
// String sgin = String.valueOf(sc.scsmsSign());
// String phone = "17600963051";
// sc.sendSms(phone, sgin);
// System.out.println("短信发送!");
// }
}

 

总结:

  • 1.查看文档
  • 2.根据文档创建 一些模板等内容
  • 3.引入maven 依赖
  • 4. 调用方法
  • 5.将手机号和生成的验证码传入到redis
  • 6.验证的时候通过验证redis中的内容 确定验证码是否正确

ok

 

 

 

 

 


举报

相关推荐

0 条评论