在软件登录注册过程中,经常用到手机短信验证登录注册,腾讯云短信API提供的丰富的接口,可以很简便的接入手机验证码登录功能。
腾讯云短信(Short Message Service,SMS)沉淀腾讯十多年短信服务技术和经验,为 QQ、微信等亿级平台和10万+客户提供国内短信和国际/港澳台短信服务。国内短信验证秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,稳定可靠。腾讯云短信旨在帮助广大开发者快速灵活接入高质量的国内、国际/港澳台短信服务。官网:
https://console.cloud.tencent.com/smsv2
发送短信输入参数
参数名称必选类型描述Action是String公共参数,本接口取值:SendSms。Version是String公共参数,本接口取值:2019-07-11。Region否String公共参数,本接口不需要传递此参数。PhoneNumberSet.N是Array of String下发手机号码,采用 e.164 标准,格式为+[国家或地区码][手机号],单次请求最多支持200个手机号且要求全为境内手机号或全为境外手机号。TemplateID是String模板 ID,必须填写已审核通过的模板 ID。模板ID可登录 短信控制台 查看,若向境外手机号发送短信,仅支持使用国际/港澳台短信模板。SmsSdkAppid是String短信SdkAppid在 短信控制台 添加应用后生成的实际SdkAppid,示例如1400006666。Sign否String短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 短信控制台 查看。注:国内短信为必填参数。TemplateParamSet.N否Array of String模板参数,若无模板参数,则设置为空。ExtendCode否String短信码号扩展号,默认未开通,如需开通请联系 sms helper。SessionContext否String用户的 session 内容,可以携带用户侧 ID 等上下文信息,server 会原样返回。SenderId否String国内短信无senderid,无需填写该项;若需开通国际/港澳台短信senderid,请联系smshelper。发送短信输出参数
参数名称类型描述SendStatusSetArray of SendStatus短信发送状态。RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
短信基本设置
Java集成开发
<!--腾讯云手机验证码SDK-->
<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.6</version>
</dependency>
/**
* 获取手机验证码
* @return
*/
@PostMapping("getAuthCode")
@ResponseBody
public Object getAuthCode(HttpServletRequest request){
String usrTel = request.getParameter("usrTel");
//随机生成4位数的手机验证码
String str="0123456789";
StringBuilder sb=new StringBuilder(4);
for(int i=0;i<4;i++)
{
char ch=str.charAt(new Random().nextInt(str.length()));
sb.append(ch);
}
String authcode = sb.toString();
// 短信应用SDK AppID
int appid = 1400xxxxxx; // 1400开头
// 短信应用SDK AppKey
String appkey = "xxxxxxxxxxxxxxxxxxx";
// 需要发送短信的手机号码
String[] phoneNumbers = 手机号码;
// 短信模板ID,需要在短信应用中申请
int templateId = xxxxxx;
// 签名
String smsSign = "签名";
try {
String[] params = {authcode,"5"};
//注意此处的参数需要为模板中参数的个数
SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0],
templateId, params, smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
System.out.println(result);
} catch (HTTPException e) {
// HTTP响应码错误
e.printStackTrace();
} catch (JSONException e) {
// json解析错误
e.printStackTrace();
} catch (IOException e) {
// 网络IO错误
e.printStackTrace();
} catch (com.github.qcloudsms.httpclient.HTTPException e) {
e.printStackTrace();
}
HashMap<String,String> m=new HashMap<>();
m.put("usrTel",usrTel);
m.put("authcode",authcode);
return m;
}
|