1.配置
alidayu: #AccessKey ID accessKeyId: #AccessKey Secret accessKeySecret: #登录验证码模板 loginTemplate[signName]: 模板名称 loginTemplate[templateCode]: SMS_209950049 #信息发送短信模板 messageTemplate[signName]: 阿里云短信测试 messageTemplate[templateCode]: SMS_154950909
2.工具类 我是直接在业务里面写的代码
/** * @param phone * @return * @todo 获取手机验证码 */ @Override public String phoneCode(String phone) { if (phone == null) { new BusinessExeption("1037","手机号不能为空"); } //找出传递过来的手机号 EntityWrapper<Family> wrapper = new EntityWrapper<>(); wrapper.eq("phone", phone); Family logininfo = familyService.selectOne(wrapper); //如果有这个手机号码,就把Code放入redis当中 String code = null; if (logininfo != null) { // HashMap<String, Object> map = new HashMap<>(); code = StrUtils.getRandomString(4); String key = "phoneCode"; redisTemplate.opsForValue().set(key, code); // SmsUtils.sendSms(phone,"您的验证码为:"+code); System.out.println(phone + "验证码为" + code); /** * 连接阿里云: * * 三个参数: * regionId 不要动,默认使用官方的 * accessKeyId 自己的用户accessKeyId * accessSecret 自己的用户accessSecret */ DefaultProfile profile = DefaultProfile.getProfile( REGION_ID, KEY_ID, SECRET_ID); IAcsClient client = new DefaultAcsClient(profile); // 构建请求: CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain("dysmsapi.aliyuncs.com"); // request.setSysVersion("2019-05-25"); request.setSysAction("SendSms"); request.setSysVersion("2017-05-25"); // 自定义参数: request.putQueryParameter("PhoneNumbers", phone);// 接收短信的手机号 request.putQueryParameter("SignName", "四川创琦科技");// 短信签名 request.putQueryParameter("TemplateCode", "SMS_241361581");// 短信模版CODE // 构建短信验证码 Map<String, Object> map = new HashMap<>(); map.put("code", code);// 这里仅用于测试,所以验证码写死 request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map)); try { CommonResponse response = client.getCommonResponse(request); System.out.println(response.getData()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } else { throw new BusinessExeption("1036","账号未绑定,请去绑定"); } return code; }