推荐官方文档代码–>阿里云短信官方api.
坐标–>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.9</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
总体来讲 官方文档拿过来就能用,
但是如果对验证码有长度限制的话,
阿里云发送的验证码如果开头为0则会省略掉,对此作了以下操作
/**
* 为了防止短信验证码开头为0 做的处理
* @param number 几位的验证码
* @return
*/
private String getSmsCode(int number) {
String str = "0";
while (str.startsWith("0")) {
str = RandomStringUtils.randomNumeric(number);
}
return str;
}
这样就可以保证验证码始终未6位,相对来讲改动较小
================================================
2020-07-23 17:53:51.920 ERROR 52239 --- [http-nio-8080-exec-34] c.f.c.api.service.SendSmsCodeService : 【短信通知】短信通知失败 message=触发号码天级流控Permits:40,sendSmsResponse=com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse@72a2ff82
2020-07-23 17:57:51.628 ERROR 52239 --- [http-nio-8080-exec-54] c.f.c.api.service.SendSmsCodeService : 【短信通知】短信通知失败 message=触发号码天级流控Permits:40,sendSmsResponse=com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse@39313210
2020-07-23 18:07:17.480 ERROR 52239 --- [http-nio-8080-exec-17] c.f.c.api.service.SendSmsCodeService : 【短信通知】短信通知失败 message=触发号码天级流控Permits:40,sendSmsResponse=com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse@3f40f2a6
2020-07-23 18:07:22.805 ERROR 52239 --- [http-nio-8080-exec-25] c.f.c.a.e.GlobalExceptionHandler : 认证异常信息:
原因分析:该错误码是指触发短信默认流控限制。
后来去阿里云一查 , 原来这是用户请求次数太频繁 阿里云短信防止恶意访问而做的限流
规则如下
接口根据规则调整相应提示即可 囧