腾讯云sms短信验证码
【短信业务属于腾讯云sms,国内短信免费试用,每月有100条】
腾讯云短信免费试用:https://cloud.tencent.com/product/csms
首先准备工作做好:
1、腾讯云短信功能注册完成,并通过审批。就可以得到以下参数。
tpl_id=17**09
sdkappid=14******05
strAppKey =3b543136399******75a0e53ed0382f6
短信接口官方文档:https://cloud.tencent.com/document/product/382/5976
2、引入依赖包
<!-- 腾讯云短信平台-->
<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.5</version>
</dependency>
3、编写发送短信验证码公共方法
package ~~~~;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import com.trs.jzzs.common.config.Global;
import org.json.JSONException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Date;
import java.util.Random;
/**
* @Title: 腾讯云短信
* @date 2018/10/8 10:03
*/
public class MsgUtil {
/**
* 日志对象
*/
private Logger logger = LoggerFactory.getLogger(getClass());
static final String VALIDATE_CODE = "validateCode";
// 短信应用SDK AppID
static int appid = Integer.parseInt(Global.getConfig("tencent.appid")); // 1400开头
// 短信应用SDK AppKey
static String appkey = Global.getConfig("tencent.appkey");
// 需要发送短信的手机号码
String[] phoneNumbers = {"21212313123", "12345678902", "12345678903"};
// 短信模板ID,需要在短信应用中申请
static int templateId = Integer.parseInt(Global.getConfig("tencent.templateId"));
// 签名
static String smsSign = ""; // NOTE: 这里的签名"腾讯云"只是一个示例,真实的签名需要在短信控制台中申请,另外签名参数使用的是`签名内容`,而不是`签名ID`
public static SmsSingleSenderResult sendMsg(String mobile, HttpServletRequest request) {
SmsSingleSenderResult result = null;
try {
//生成验证码
String code = createCharacter();
String[] params = {code,"5"};//数组具体的元素个数和模板中变量个数必须一致,例如事例中templateId:5678对应一个变量,参数数组中元素个数也必须是一个
SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
result = ssender.sendWithParam("86", mobile,
templateId, params, smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
request.getSession().setAttribute("VALIDATE_CODE", code);
request.getSession().setAttribute("SEND_TIME", new Date());
} catch (HTTPException e) {
// HTTP响应码错误
e.printStackTrace();
} catch (JSONException e) {
// json解析错误
e.printStackTrace();
} catch (IOException e) {
// 网络IO错误
e.printStackTrace();
}
return result;
}
private static String createCharacter() {
char[] codeSeq = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
Random random = new Random();
StringBuilder s = new StringBuilder();
for (int i = 0; i < 4; i++) {
String r = String.valueOf(codeSeq[random.nextInt(codeSeq.length)]);//random.nextInt(10));
s.append(r);
}
return s.toString();
}
}