短信验证码
程序员文章站
2022-05-13 15:53:05
...
本文以大汉云通信为主
一、前端写一个请求的接口,请求手机验证码
二、主要的java代码
/**
* 发送手机验证码(设置验证码到session中)
*/
@GetMapping("/user/mobileCode")
public void getMobileCode(HttpSession session, String mobileNo) {
//生成4位随机数
try {
String fourRandom = WebUtils.getFourRandom();
SendSmsDemo.sendSMS(mobileNo, "3", new String[]{fourRandom, "3"}, session);
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new UserException(ResultEnum.SEND_MOBILEMESSAGE_ERROR);
}
}
三、短信接口调用
package com.hm.utils.note;
/**
* Copyright 2003-2033 dahantc.com Inc.
*/
import com.hm.utils.note.com.dahantc.sss.sdk.SmsSDK;
import javax.servlet.http.HttpSession;
import java.util.Map;
public class SendSmsDemo {
/* public static void main(String[] args) {
*//*
* 短信接口调用说明
* 假设您想给手机号159xxxx1234发送一条短信,
* 您打算使用的模板ID为2,对应模板内容为:"您好,您的手机验证码为:{1},{2}分钟内有效"
* 给这个模板传入的参数为5678和3,则调用方式为:
* sendSMS("159xxxx1234", "2", ['5678','3']);
* 最终收到的短信内容为:"【云通讯】您好,您的手机验证码为5678,3分钟内有效"
*//*
//SendSmsDemo.sendSMS("13719193845", "4", new String[]{"5937", "3"});
}*/
public static void sendSMS(String to, String tempId, String[] datas, HttpSession session) {
// 初始化SDK
SmsSDK smsSDK = new SmsSDK();
/*
* 帐户参数配置
* 用户登录之后在开发者控制台【首页】寻找以下配置参数:
* AccountSid: 帐号ID,对应开发者帐号下的 ACCOUNT SID
* AuthToken: 授权令牌,对应开发者帐号下的 AUTH TOKEN
* ApiUrl: API调用路径,对应着开发者后台中的API URL
* AppId: 应用ID,对应开发者控制台【应用管理】S中的某个APP ID
*/
smsSDK.setAccountSid("**自己注册自己的**");
smsSDK.setAuthToken("**自己注册自己的**");
smsSDK.setApiUrl("http://www.dahancloud.com/");
smsSDK.setAppId("**自己注册自己的**");
/*
* 发送模板短信
* to 手机号码,多个手机号码需用英文逗号分开
* tempId 模板ID,对应开发者后台中的模板编号
* datas 替换内容,格式为数组,例如:new String[]{"1238", "3"}
*/
Map<String, Object> result = smsSDK.sendSMS(to, tempId, datas); //实际调用请保证这些参数真实有效!
System.out.println(result);
if ("000000".equals(result.get("statusCode"))) {
// 发送成功
Map<String, Object> templateSMS = (Map<String, Object>) result.get("templateSMS");
System.out.println("dateCreated: " + templateSMS.get("dateCreated"));
System.out.println("smsMessageSid: " + templateSMS.get("smsMessageSid"));
//发送成功,将验证码存到session中
session.setAttribute("validateCode", datas[0]);
} else {
//错误处理
System.out.println("错误码=" + result.get("statusCode") + " 错误信息= " + result.get("statusMsg"));
}
}
}