springboot项目集成阿里云短信服务

1、登录阿里云控制台

阿里云控制台网址

2、进入RAM访问控制页面

如图所示,先把鼠标放在右上角头像上(不用点击),随后在弹框中选择AccessKey管理(点击)。
在这里插入图片描述

3、弹框选择创建子用户

在这里插入图片描述

4、创建用户组并添加短信权限

创建用户组只需填写名称
在这里插入图片描述
创建后点击用户组名称
在这里插入图片描述
如图所示,添加短信权限。
在这里插入图片描述

5、创建用户并加入用户组

在这里插入图片描述
在这里插入图片描述
如图所示,任意填写登录名称和显示名称,重要是要勾选openAPI调用访问。

点击确定后,会弹框一个页面显示accessKeyID和对应的密码,在这个页面上点击添加到用户组,添加到刚刚创建的用户组即可。
*温馨提示:请妥善保存密码,不要发布于网上。

6、进入短信服务控制台

在这里插入图片描述

7、申请模板和签名

模板和签名的申请需要正当理由,个人为未上线的产品一般是申请不通过的。申请被拒后可以按照拒绝原因进行修改理由申请(签名申请带姓名好通过),并重新提交申请。
在这里插入图片描述

实在申请不成功,如图所示,可以使用测试的签名和模板,给绑定授权的手机号码发送短信

温馨提示:签名和模板来源选择测试或学习的只能给绑定授权的手机号码发送短信。

8、编写后端代码

在这里插入图片描述
找到java sdk,按要求编写代码即可

1、引依赖

1、短信依赖


<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>dysmsapi20170525</artifactId>
  <version>2.0.23</version>
</dependency>

2、json传输依赖

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.3</version>
</dependency>

3、redis依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2、编写后端代码

1、controller

@Autowired(required = false)
    private RedisTemplate<String, String> redisTemplate;

    @Autowired
    private SmsService smsService;

    @PostMapping("/getCode")
    @ResponseBody
    public R sendSMS(String tel){
        if (null == tel || "".equals(tel) || tel.trim().equals(""))
            return R.fail(207, "输入值为空");
        String code = redisTemplate.opsForValue().get(tel);
        if (null != code)
            return R.fail(206, "请不要重复发送验证码");
        boolean flag = smsService.sendSms(tel, "templateCode");
        if (flag)
            return R.ok(200, "发送成功!");
        else
            return R.fail(199, "未知错误,发送失败!");
     }

templateCode 换成自己的

2、SmsService

public interface SmsService {

    public boolean sendSms(String tel, String templateCode);

3、SmsServiceImpl

public class SmsServiceImpl implements SmsService {

    @Autowired(required = false)
    private RedisTemplate<String, String> redisTemplate;

    @Override
    public boolean sendSms(String tel, String templateCode) {

        Config config = new Config().setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret);
        config.endpoint = "dysmsapi.aliyuncs.com";
        Client client = null;
        String code = CodeUtil.getCode();
        try {
            client = new Client(config);
            SendSmsRequest sendSmsRequest = new SendSmsRequest();
            sendSmsRequest.setSignName(signName)
                    .setPhoneNumbers(tel)
                    .setTemplateCode(templateCode);
            HashMap<String, Object> param = new HashMap<>();
            param.put("code", code);
            sendSmsRequest.setTemplateParam(JSONObject.toJSONString(param));
            RuntimeOptions runtime = new RuntimeOptions();
            SendSmsResponse response = client.sendSmsWithOptions(sendSmsRequest, runtime);
            System.out.println(response.body.code);
            if (response.body.code.equals("OK")) {
                redisTemplate.opsForValue().set(tel, code, 10, TimeUnit.MINUTES);
                return true;
            }
        } catch (TeaException error) {
            assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            assertAsString(error.message);
        }
        return false;
    }
}

CodeUtil 是一个生成随机数的工具类

accessKeyIdaccessKeySecretsignNametemplateCode 写自己的就行。

redisTemplate.opsForValue().set(tel, code, 10, TimeUnit.MINUTES) 设置验证码10分钟过期。

9、安装window的redis(本地测试)

下载链接:redis安装包下载

在这里插入图片描述

双击redis-server.exe打开redis服务端,最小化。

温馨提示:官方推荐安装linux环境的redis

10、springboot配置连接redis

application.peoperties配置

#连接redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

11、后端跑起来,前端调用接口就行了

在这里插入图片描述

前端代码

$(document).ready(function () {
    $("#send").click(function () {
        var tel = $("#tel").val();
        if (tel === '') {
            layer.tips('请输入手机号码,弹窗3s后关闭', '#telTips', {tips: [2, '#9bc6ff'], time: 3000});
            return;
        }
        var url = '/getCode';
        var param = {tel: tel};
        $.post(url, param, function (data) {
            layer.tips(data.msg + ',弹窗3s后关闭', '#telTips', {tips:[2, '#9bc6ff'], time: 3000});
        })
    });
});

12、成功

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值