阿里云手机验证码
-
导入pom依赖
<!--阿里云电话验证--> <dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.0.13</version> </dependency>
-
编写AliyunService接口
package com.liu.server; public interface AliyunService { boolean sendVerCodeByPhone(String phone,String vercode) throws Exception; }
-
实现AliyunService接口
package com.liu.server.impl; import com.liu.server.AliyunService; import com.aliyun.dysmsapi20170525.models.*; import com.aliyun.teaopenapi.models.*; import org.springframework.stereotype.Service; @Service public class AliyunServiceImpl implements AliyunService { @Override public boolean sendVerCodeByPhone(String phone, String vercode) throws Exception { java.util.List<String> args = java.util.Arrays.asList(); Config config = new Config() // 您的AccessKey ID .setAccessKeyId("您的AccessKey ID") // 您的AccessKey Secret .setAccessKeySecret("您的AccessKey Secret"); // 访问的域名 config.endpoint = "dysmsapi.aliyuncs.com"; com.aliyun.dysmsapi20170525.Client client = new com.aliyun.dysmsapi20170525.Client(config); SendSmsRequest sendSmsRequest = new SendSmsRequest() .setPhoneNumbers(phone) .setSignName("副业君") .setTemplateCode("SMS_192542265") .setTemplateParam("{\"code\":\""+vercode+"\"}"); // 复制代码运行请自行打印 API 的返回值 SendSmsResponse ssr = client.sendSms(sendSmsRequest); String codeRes = ssr.getBody().getCode(); System.out.println(codeRes); if("OK".equals(codeRes)){ return true; }else { return false; } } }
-
调用AliyunServiceImpl实现类
//将输入的手机号存储到redis @Override public CommonResult generateAuthCode(String telephone) throws Exception { StringBuilder sb = new StringBuilder(); Random random = new Random(); for (int i = 0; i < 6; i++) { sb.append(random.nextInt(10)); } UserTest userTest = userTestDao.selectByPhone(telephone); if(userTest != null){ //将验证码发送到指定手机号 boolean b = aliyunService.sendVerCodeByPhone(telephone, sb.toString()); if(b){ //验证码绑定手机号并存储到redis redisService.set(REDIS_KEY_PREFIX_AUTH_CODE + telephone, sb.toString()); redisService.expire(REDIS_KEY_PREFIX_AUTH_CODE + telephone, AUTH_CODE_EXPIRE_SECONDS); return CommonResult.success(sb.toString(), "获取验证码成功"); } } return CommonResult.failed("手机号有误!"); }