maven项目使用阿里大于发送短信验证码并存储到redis中
1.下载阿里大鱼SDK
在官网就可以下载,下载完以后,解压后我们看见:
2.我们接下来需要做的,就是将本地的这两个文件,加入本地仓库
3.Pom文件添加配置依赖:
com.taobao
dayu
1.0.0
4.因maven库中没有该插件,所以需要手动下载插件,然后包装成maven依赖,执行命令:
mvn install:install-file -DgroupId=com.taobao -DartifactId=dayu -Dversion=1.0.0 -Dpackaging=jar -Dfile=D:\.m2\repository\com\taobao\dayu\1.0.0\taobao-sdk-java-auto_1455552377940-20160607.jar
或:
mvn install:install-file -Dfile=d:\****.jar -DgroupId=com.taobao -DartifactId=dayu -Dversion=1.0.0 -Dpackaging=jar
5.发送短信代码:
importcom.taobao.api.ApiException;
importcom.taobao.api.DefaultTaobaoClient;
importcom.taobao.api.TaobaoClient;
importcom.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;
importcom.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;
importcom.liyang.common.http.OperationCode;
importcom.liyang.common.http.ResponseEntityBody;
importcom.liyang.util.MathUtil;
importcom.liyang.util.RegexUtil;
importcom.liyang.view.common.SmsCodeView;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.beans.factory.annotation.Value;
importorg.springframework.data.redis.core.RedisTemplate;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestBody;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestMethod;
importorg.springframework.web.bind.annotation.ResponseBody;
importjava.util.concurrent.TimeUnit;
/*** Author: 李阳* Date: 16/03/2017* Version: 1.0* Description:*/@Controller@RequestMapping(value = "/sms/alidayu")
public classSmsSender {
private static finalLogger logger= LoggerFactory.getLogger(SmsSender.class);
@AutowiredprivateRedisTemplate redisTemplate;
@Value("${alidayu.url}")
privateString url;
@Value("${alidayu.appKey}")
privateString appkey;
@Value("${alidayu.appSecret}")
privateString secret;
@Value("${alidayu.validation.smsTemplateCode}")
privateString smsTemplateCode;
@Value("${alidayu.validation.smsFreeSignName}")
privateString smsFreeSignName;
@Value("${redis.expiration}")
private intredisExpiration;
private finalString smsType= "normal";
/***发送短信验证码*/@RequestMapping(method = RequestMethod.POST, value = "/sender")
@ResponseBodypublicResponseEntityBody send(@RequestBodySmsCodeView smsCodeView) {
ResponseEntityBody responseEntityBody = newResponseEntityBody();
String phone = smsCodeView.getMobile();
AlibabaAliqinFcSmsNumSendResponse rsp = null;
String code = null;
try{
if(RegexUtil.isMobile(phone)) {
if(redisTemplate.hasKey(phone)) {
responseEntityBody.setOperationCode(OperationCode.SMS_SENT);
} else{
code = MathUtil.generateAuthCode(6);
TaobaoClient client = newDefaultTaobaoClient(url, appkey, secret);
AlibabaAliqinFcSmsNumSendRequest req = newAlibabaAliqinFcSmsNumSendRequest();
req.setExtend("extend info"); //扩展信息req.setSmsType(smsType); //短信类型“normal”req.setSmsFreeSignName(smsFreeSignName); //短信签名req.setSmsParamString("{\"code\":\""+ code + "\",\"product\":\"逗逼橙用户登录的\"}");//短信参数req.setRecNum(phone); //短信通知的手机号req.setSmsTemplateCode(smsTemplateCode); //短信模板rsp = client.execute(req); //发送短信
//短信发送成功,将验证码保存到redis中if(rsp.isSuccess()) {
redisTemplate.opsForValue().set(phone, code, redisExpiration, TimeUnit.SECONDS);
}
responseEntityBody.setOperationCode(OperationCode.SUCCESS);
}
} else{
responseEntityBody.setOperationCode(OperationCode.ERR_PHONE);
}
responseEntityBody.setBody(rsp);
} catch(ApiException e) {
logger.error(e.getMessage());
}
returnresponseEntityBody;
}
}
public classMathUtil {
/***生成验证码**@paramnum位数*@return纯数字验证码*/public staticString generateAuthCode(intnum) {
String chars = "0123456789";
char[] rands = new char[num];
for(inti = 0; i < num; i++) {
intrand = (int) (Math.random() * 10);
rands[i] = chars.charAt(rand);
}
return newString(rands);
}
}
alidayu配置信息:
##===================================== 配置 alidayu =====================================alidayu.url=http://gw.api.taobao.com/router/restalidayu.appKey=23666474alidayu.appSecret=f36e3407a2d18a5a7f03d32cddf67831# 阿里大于通知短信模版编码alidayu.notify.smsTemplateCode=SMS_52330022# 阿里大于验证短信模版编码alidayu.validation.smsTemplateCode=SMS_52330024# 阿里大于信息变更短信模版编码alidayu.infoChange.smsTemplateCode=SMS_52330017# 阿里大于卡挂失,解挂或注销成功后通知短信模版编码alidayu.cardNotify.smsTemplateCode=SMS_58245027# 阿里大于短信签名alidayu.validation.smsFreeSignName=逗逼橙
spring-boot项目中,在spring上下文中读取配置文件出现中文乱码,需要添加如下配置:
#配置spring上下使用spring-boot默认的utf-8字符编码spring.http.encoding.force=true