1.首先在容联云平台注册一个账号,默认开通了短信,免费金额是8块,每条大概是0.06,一天上限是0.5
2.在平台绑定测试的手机号
3.获取平台这三个参数值ACCOUNT_SID、ACCOUNT_TOKEN、ACCOUNT_APPID
4.接着引入maven
<dependency><groupId>com.cloopen</groupId><artifactId>java-sms-sdk</artifactId><version>1.0.1</version></dependency>
5.工具类代码如下:
import st.sdk.BodyType;
import st.sdk.CCPRestSmsSDK;import java.util.HashMap;
import java.util.Set;public class SMS {//主账号,登陆云通讯网站后,可在控制台首页看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKENpublic static final String ACCOUNT_SID = "";public static final String ACCOUNT_TOKEN = "";public static final String ACCOUNT_APPID = "";public static void send(String code){//生产环境请求地址:app.cloopenString serverIp = "app.cloopen";//请求端口String serverPort = "8883";//请使用管理控制台中已创建应用的APPID//String appId = "appId";CCPRestSmsSDK sdk = new CCPRestSmsSDK();sdk.init(serverIp, serverPort);sdk.setAccount(ACCOUNT_SID, ACCOUNT_TOKEN);sdk.setAppId(ACCOUNT_APPID);sdk.setBodyType(BodyType.Type_JSON);String to = "159******"; //绑定的测试手机号String templateId= "1"; //短信模板String[] datas = {code,"2"}; //分钟参数HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas);if("000000".("statusCode"))){//正常返回输出data包体信息(map)HashMap<String,Object> data = (HashMap<String, Object>) ("data");Set<String> keySet = data.keySet();for(String key:keySet){Object object = (key);System.out.println(key +" = "+object);}}else{//异常返回输出错误码和错误信息System.out.println("错误码=" + ("statusCode") +" 错误信息= "("statusMsg"));}}public static void main(String[] args) {//测试String code = "123456";send(code);}
}
6.验证码工具类
public static String generate6BitDigital() {return ("" + (Math.random() + 0.1) * 1000000).substring(0, 6);}
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
<!-- <version>2.0.4.RELEASE</version>--><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId></dependency>
/*** 普通缓存放入并设置时间* @param key 键* @param value 值* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期* @return true成功 false 失败*/public boolean set(String key, Object value, long time) {try {if (time > 0) {redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);} else {set(key, value);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 根据key 获取过期时间* @param key 键 不能为null* @return 时间(秒) 返回0代表为永久有效*/public long getExpire(String key) {Expire(key, TimeUnit.SECONDS);}
8.代码中的实际应用
public Message sentCode(@RequestParam String phone) {String code = ate6BitDigital();redisUtil.set(phone, code, 120);System.out.println(code);SMS.send(code);return Message.success().extend("code",code);}
9.判断短信是否过期
if (Expire(phone) == -1){return Message.fail().extend("reason","验证码已过期");}
本文发布于:2024-02-01 11:48:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170675933636383.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |