Java整合短信服务(阿里云)


前言

Java整合短信服务(阿里云)


0 前置准备

准备 1

直接登录阿里云

支付宝扫码登录后

搜索短信服务 并进行开通

点击国内消息

在签名管理和模板管理
配置签名和模板

在这里插入图片描述

准备 2

点击右上角的accesskey管理

创建一个

记录ID 和 SECRET 等会儿要用

在这里插入图片描述

1 导入依赖

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

2 配置文件(存accessKey参数)

这里是properties类型
配置文件定义三个参数

// 地区 default 就可以
aliyun.sms.regionId=default
//accesskey的 ID 和 SECRET
aliyun.sms.accessKeyId=LTAI5tL6xxx
aliyun.sms.secret=KrxgDVnOPKxxxx

yaml

aliyun:
 sms:
  regionId: default
  accessKeyId: LTAI5tLxxxx
  secret:  KrxgDVnOPKuvxxxxx

3 定义一个工具类(就是从配置文件拿accessKey参数)

@Component
public class ConstantPropertiesUtils implements InitializingBean {
    
    

    @Value("${aliyun.sms.regionId}")
    private String regionId;

    @Value("${aliyun.sms.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.sms.secret}")
    private String secret;

    public static String REGION_Id;
    public static String ACCESS_KEY_ID;
    public static String SECRECT;

    @Override
    public void afterPropertiesSet() throws Exception {
    
    
        REGION_Id=regionId;
        ACCESS_KEY_ID=accessKeyId;
        SECRECT=secret;
    }
}

4 代码编写

注意
这两个参数是在阿里云短信控制台
获得的
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

    //发送手机验证码
    @GetMapping("send/{phone}")
    public boolean sendCode(@PathVariable String phone) {
    
    




        System.out.println("手机号码是"+phone);

        //如果从redis获取不到,
        // 生成验证码,
        String code = "12345";

//        //调用service方法,通过整合短信服务进行发送
//        boolean isSend = msmService.send(phone,code);


        //判断手机号是否为空
        if(StringUtils.isEmpty(phone)) {
    
    
            System.out.println("手机号空");
        }
        //整合阿里云短信服务
        //设置相关参数
        // 1 通过 profile(阿里云用户的信息) 创建 client
        DefaultProfile profile = DefaultProfile.
                getProfile(
                        //地域 一般default默认
                        ConstantPropertiesUtils.REGION_Id,
                        // 阿里云用户Key
                        ConstantPropertiesUtils.ACCESS_KEY_ID,
                        //阿里云用户secret
                        ConstantPropertiesUtils.SECRECT);

        IAcsClient client = new DefaultAcsClient(profile);


        //2 创建request封装参数
        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");

        //手机号
        request.putQueryParameter("PhoneNumbers", phone);
        //签名名称
        request.putQueryParameter("SignName", "极冥笔记");
        //模板code
        request.putQueryParameter("TemplateCode", "SMS_268510266");
        //验证码  使用json格式   {"code":"123456"}
        Map<String,Object> param = new HashMap();
        param.put("code",code);
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));

        //调用方法进行短信发送
        try {
    
    
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
            return response.getHttpResponse().isSuccess();
        } catch (ServerException e) {
    
    
            e.printStackTrace();
        } catch (ClientException e) {
    
    
            e.printStackTrace();
        }
        return false;






    }
}

5 访问接口进行测试

猜你喜欢

转载自blog.csdn.net/weixin_51751186/article/details/130252737