最好有SpringBoot的基础!!!
链接:阿里云官网
1、注册账户进行登录
2、点击AccessKey管理,开通使用子用户AccessKey
3、新建添加用户组
4、点击权限管理,开通想要的权限
对应的权限举例:
管理对象存储服务(OSS)权限
管理短信服务(SMS)权限
管理视频点播服务(VOD)权限
5、添加用户
6、最后得到AccessKey(ID,密码)
注意一定要保存好信息
1、主页搜索短信服务,找到对应面板
2、找到帮助文档
阿里巴巴短信服务文档说明
1、短信的具体内容
如:您的验证码是:${code},请在5分钟内使用,请勿泄露给被人使用。
2、等待审核通过(需要正当的理由)
1、公司的名称
如:【淘宝网】
2、等待审核通过(需要正当的理由)
1、创建一个SpringBoot的项目
2、导入依赖
<!-- 短信验证码--> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.0.3</version> </dependency> <!-- 传送json字符串--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> <!-- 集成到redis中使用--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data.redis</artifactId> </dependency>3、编写测试代码
@Test void contextLoads{ //连接阿里云 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou","<accessKeyId>","<accessSecret>"); 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","手机号"); request.putQueryParameter("SignName","签名名称"); request.putQueryParameter("TemplateCode","模板Code号"); //构建一个短信验证码(此处测试写死了) HashMap<String,Object> map = new HashMap<String,Object>(); map.put("code",2233); request.putQueryParameter("TemplateParam",JSONObject.toString(map)); try{ CommonResponse response = Client.getCommonResponse(request); System.out.println(response.getData()); }catch (ServerException e){ e.printStackTrace(); }catch (ClientException e){ e.printStackTrace(); } }application.properties
server.port = 9090; spring.redis.host = 127.0.0.1 spring.redis.port = 6379业务接口
public interface SendSms(){ public boolean send(String PhoneNum, String templateCode, Map<String, Object> code); }实现类:
public class SendSmsImpl implements SendSms { @Override public boolean send(String PhoneNum, String templateCode, Map<String, Object> code){ //连接阿里云 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou","<accessKeyId>","<accessSecret>"); 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",PhoneNum); request.putQueryParameter("SignName","签名名称"); request.putQueryParameter("TemplateCode",templateCode); request.putQueryParameter("TemplateParam",JSONObject.toString(code)); 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; } }Controller的编写
@RestController @CrossOrigin //跨域支持 public class SmsApiController{ @Autowired private SendSms sendSms; @Autowired private RedisTemplate<String,String> redisTemplate; @GetMapping("/send/{phone}") public String code(@PathVariable("phone") String phone){ //调用发送发送(模拟真实业务使用redis) String code = redisTemplate.opsForValue().get(phone); if(!StringUtils.isEmpty(code)){ return phone + ":" + code +"已存在,还没有过期"; } //生成验证码并存储到redis中 code = UUID.randomUUID().toString().substring(0,4); HashMap<String, Object> param = new HashMap<String, Object>(); param.put("code",code); boolean isSend = SendSms.send(phone, "模板Code号", param); if(isSend){ redisTemplate.opsForValue().set(phone,code,5,TimeUnit.SECONDS); return phone + ":" + code +"发送成功!"; }else{ return "发送失败!"; } } }