阿里云短信验证项目整合

莱莱  金牌会员 | 2024-8-15 16:57:44 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 835|帖子 835|积分 2505

资助文档:
https://help.aliyun.com/product/44282.html?spm=5176.10629532.0.0.38311cbeYzBm73
1、开通阿里云短信服务




2、添加签名管理与模板管理

(1)添加模板管理

选择 国内消息 - 模板管理 - 添加模板


点击提交,等待审核,审核通过后可以使用
(2)添加签名管理

选择 国内消息 - 签名管理 - 添加签名

点击添加签名,进入添加页面,填入相关信息
注意:签名要写的有实际意义

(3)点击提交,等待审核,审核通过后可以使

3、编写发送短信接口

1、在service-msm的pom中引入依赖

  
  1. <dependencies>
  2.     <dependency>
  3.         <groupId>com.alibaba</groupId>
  4.         <artifactId>fastjson</artifactId>
  5.     </dependency>
  6.     <dependency>
  7.         <groupId>com.aliyun</groupId>
  8.         <artifactId>aliyun-java-sdk-core</artifactId>
  9.     </dependency>
  10. </dependencies>
复制代码
2、编写controller,根据手机号发送短信

  1. @RestController
  2. @RequestMapping("/msmservice/msm")
  3. @CrossOrigin
  4. public class MsmController {
  5.     @Autowired
  6.     private MsmService msmService;
  7.     @Autowired
  8.     private RedisTemplate<String,String> redisTemplate;
  9.     //发送短信的方法
  10.     @GetMapping("/send/{phone}")
  11.     public R sendMsm(@PathVariable String phone){
  12.         //从redis获取验证码,如果能获取,直接返回
  13.         String code = redisTemplate.opsForValue().get(phone);
  14.         if (!StringUtils.isEmpty(code)){
  15.             return R.ok();
  16.         }
  17.         //获取不到就阿里云发送
  18.         //生成随机值,并传递给阿里云短信,让他转发给手机
  19.         code = RandomUtil.getSixBitRandom();
  20.         HashMap<String, Object> map = new HashMap<>();
  21.         map.put("code",code);
  22.         //调用service中发送短信的方法
  23.         boolean isSend = msmService.sendMsm(map, phone);
  24.         if (isSend){
  25.             //如果发送成功,把发送成功的code验证码保存到redis中,并设置有效时间,设置5分钟过期
  26.             redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
  27.             return R.ok();
  28.         }else {
  29.             return R.error().message("短信发送失败");
  30.         }
  31.     }
  32. }
复制代码
3、编写service



  • service接口
  1. public interface MsmService {
  2.     //发送短信的方法
  3.     boolean sendMsm(HashMap<String, Object> map, String phone);
  4. }
复制代码


  • serviceImpl
  1. @Service
  2. public class MsmServiceImpl implements MsmService {
  3.     //发送短信的方法
  4.     @Override
  5.     public boolean sendMsm(HashMap<String, Object> map, String phone) {
  6.         if (StringUtils.isEmpty(phone))return false;
  7.         //参数1:地域节点
  8.         //参数2:AccessKey ID
  9.         //参数3:AccessKey Secret
  10.         DefaultProfile profile = DefaultProfile.getProfile("default", "LTAI4GBABS7Sq8MLf2RNwLuu", "ynfsD31FLdcRoQVFSIdHP7AeoKaf4o");
  11.         DefaultAcsClient client = new DefaultAcsClient(profile);
  12.         //设置相关固定参数
  13.         CommonRequest request = new CommonRequest();
  14.         //request.setProtocol(ProtocolType.HTTPS);
  15.         request.setSysMethod(MethodType.POST); //提交方式,默认不能改
  16.         request.setSysDomain("dysmsapi.aliyuncs.com");//请求阿里云哪里,默认不能改
  17.         request.setSysVersion("2017-05-25");//版本号
  18.         request.setSysAction("SendSms");//请求哪个方法
  19.         //设置发送相关参数
  20.         request.putQueryParameter("PhoneNumbers",phone);//设置要发送的【手机号】
  21.         request.putQueryParameter("SignName","阿昌日语在线教育网站");//申请阿里云短信服务的【签名名称】
  22.         request.putQueryParameter("TemplateCode","SMS_212711286");//申请阿里云短信服务的【模版中的 模版CODE】
  23.         //要求传递的code验证码为jason格式,可以使用JSONObject.toJSONString()将map转为json格式
  24.         request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));
  25.         //最终发送
  26.         try {
  27.             CommonResponse response = client.getCommonResponse(request);
  28.             return response.getHttpResponse().isSuccess();
  29.         } catch (ClientException e) {
  30.             e.printStackTrace();
  31.             return false;
  32.         }
  33.     }
  34. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表