整合阿里云短信发送



1、在pom文件中引入依赖

1
2
3
4
5
6
7
8
9
10
11
12
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.3.3</version>
</dependency>
</dependencies>

2、编写controller,根据手机号发送短信

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
* @author Blue
*/
@RestController
@RequestMapping("/eduMsm/msm")
@CrossOrigin
public class MsmController {

@Resource
private MsmService msmService;

@Resource
private RedisTemplate<String, String> redisTemplate;

@ApiOperation("发送短信的方法")
@GetMapping("send/{phone}")
public Result sendMsm(@PathVariable String phone) {
//1 从redis获取验证码,如果获取到直接返回
String code = redisTemplate.opsForValue().get(phone);
if (!StringUtils.isEmpty(code)) {
return Result.success();
}
//2 如果redis获取 不到,进行阿里云发送
// 生成随机值,传递阿里云进行发送
code = RandomUtil.getFourBitRandom();
Map<String, Object> param = new HashMap<>();
param.put("code", code);
//调用service发送短信的方法
// boolean isSend = msmService.send(param, phone);
if (true) {
//发送成功,把发送成功验证码放到redis里面
//设置有效时间 15分钟 -> 5TimeUnit.MINUTES
redisTemplate.opsForValue().set(phone, code, 15, TimeUnit.MINUTES);
return Result.success();
} else {
return Result.error().message("短信发送失败");
}
}
}

3、编写service方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//发送短信的方法
@Override
public boolean send(Map<String, Object> param, String phone) {
if (StringUtils.isEmpty(phone)) return false;

DefaultProfile profile =
DefaultProfile.getProfile("default", ConstantMsmUtil.ACCESS_KEY_ID, ConstantMsmUtil.ACCESS_KEY_SECRET);
IAcsClient client = new DefaultAcsClient(profile);

//设置相关固定的参数
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");

//设置发送相关的参数
request.putQueryParameter("PhoneNumbers", phone); //手机号
request.putQueryParameter("SignName", ""); //申请阿里云 签名名称
request.putQueryParameter("TemplateCode", ""); //申请阿里云 模板code
request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param)); //验证码数据,转换json数据传递

try {
//最终发送
CommonResponse response = client.getCommonResponse(request);
return response.getHttpResponse().isSuccess();
} catch (Exception e) {
e.printStackTrace();
return false;
}

}
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  1. © 2020 Liu Yang    湘ICP备20003709号

请我喝杯咖啡吧~

支付宝
微信