1、首先我们需要前端传送的手机号phone,每次请求接口时都去redis缓存中以phone作为key去查有没有对应的code,如果存在,则不发送验证消息;如果code为空,则自动生成一个四位数验证码,调用send()方法,其中“SMS_154161”是我们在阿里云生成的一个templateCode,然后我们吧phone和code以key、value的形式存入我们的redis缓存中,同时设置过期时间。

import com.aliyuncs.utils.StringUtils;
import com.sms.service.SendSms;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@RestController
@CrossOrigin //跨域支持
public class SendSmsController {@Autowiredprivate SendSms sendSms;private RedisTemplate<String,String> redisTemplate;@GetMapping("/send/{phone}")public String code(@PathVariable("phone") String phone){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<>();param.put("code",code);boolean isSend = sendSms.send(phone,"SMS_154161",param);if(isSend){redisTemplate.opsForValue().set(phone,code,5, TimeUnit.SECONDS);return phone + ":" + code + "发送成功!";}else {return "发送失败!";}}}

2、Service层

import java.util.Map;
public interface SendSmsService {public boolean send(String phoneNum, String templateCode, Map<String,Object> code);
}

3、ServiceImpl实现层

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.sms.service.SendSms;
import org.springframework.stereotype.Service;
import java.util.Map;@Service
public class SendSmsServiceImpl  implements SendSmsService {@Overridepublic boolean send(String phoneNum, String templateCode, Map<String, Object> code) {// 设置公共请求参数,初始化Client、连接阿里云DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou",          // 地域ID"账号",      // RAM账号的AccessKey ID"密码"); // RAM账号AccessKey SecretIAcsClient client = new DefaultAcsClient(profile);CommonRequest addSmsTemplateRequest = new CommonRequest();addSmsTemplateRequest.setSysDomain("dysmsapi.aliyuncs.com");//不要动addSmsTemplateRequest.setSysVersion("2017-05-25");//不要动addSmsTemplateRequest.setSysAction("SendSms");//自定义的参数(手机号,验证码,签名,模板!)addSmsTemplateRequest.putQueryParameter("PhoneNumbers", phoneNum);addSmsTemplateRequest.putQueryParameter("SignName", "签名,阿里云生成");addSmsTemplateRequest.putQueryParameter("TemplateCode", templateCode);addSmsTemplateRequest.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));try {CommonResponse response = client.getCommonResponse(addSmsTemplateRequest);return response.getHttpResponse().isSuccess();}catch (ServerException e){e.printStackTrace();}catch (ClientException e) {e.printStackTrace();}return false;}
}

阿里云短信接口实现模板相关推荐

  1. 云片短信php接口_php与阿里云短信接口接入

    使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证+官方审核多次,尤其审核需要保持耐心. 1. accessKeyId 相当于你的个人账户密钥: 2. accessKeySecr ...

  2. C# 阿里云短信接口调用(不使用SDK,单文件完成)

    虽然阿里云短信接口,提供了很多种语言的SKD,但是对应C#而言,如果使用阿里云SDK,你的项目中需要引入一大堆的dll,像这样: 我只需要发个短信,没必要引入这么多dll吧.于是,根据阿里云官方文档, ...

  3. TP5调用阿里云短信接口实现发送短信功能

    TP5调用阿里云短信接口实现发送短信功能 工作需要,对接阿里云的短信服务,借此记录一下(网站 www.lelee.top) 主要分为两个部分,一是下载官方的Demo事例,这个不需要多说,自己去下载就行 ...

  4. Java调用阿里云短信接口,发送短信

    Java调用阿里云短信接口,发送短信 1.短信服务这个很简单,只需要知道accessKeyId(AK).accessKeySecret(SK).短信签名.短信模板即可. 2.域名和产品名称是固定的,使 ...

  5. springboot项目调用阿里云短信接口(包括短信上行)

    最近一直在做项目,很久没有写过博客了,最近做的一个项目中遇到了一个业务需要用到短信功能包括了发送短信和短信回复之后要收到回复内容,阿里云短信服务是一个非常好的平台,里面提供了多种短信接口可以供我们使用 ...

  6. 微信小程序手机号验证码登录(调阿里云短信接口)

    小程序效果 代码 <view class='content'><form bindsubmit="formSubmit"><view class='p ...

  7. python 阿里云短信接口_阿里云短信PythonSDK的用法

    阿里云知识 阿里云短信PythonSDK的用法 阿里云短信PythonSDK的用法示例代码 # coding=utf-8 from jdcloud_sdk.core.credential import ...

  8. 阿里云短信接口,函数方法

    调用方法:sendmsg(15112211211) /** * 方法功能:新版发送短信接口 * 开发时间:16-7-26 下午2:29 * $phone :需要发送目的地手机号 * $content; ...

  9. 蚂蚁分类信息系统mymps对接阿里云短信接口

    蚂蚁分类信息系统(mymps)是基于PHP+Mysql开发的分类信息程序CMS,以负载能力强.安全性高.操作简单而著称,深受分类信息网站站长喜爱,为在WINDOW/LINUX服务器上架设分类信息网站提 ...

  10. 阿里云短信接口开发实践(Java)

    随着互联网的兴起,各行各业的需求都在不断的增加.随着业务的扩大,企业给用户发送短信验证码的业务,也是如火如荼.在这里,calvin给各位开发者推荐阿里云短信平台.原因有二:1.接入较简单,开发成本低 ...

最新文章

  1. STL-String源码分析
  2. 保驾护航金三银四,100%好评!
  3. 【指针】C++中指针的使用艺术[转]
  4. 2020_0527_近期思考
  5. JavaWeb框架-Spring(基本概念)
  6. 超级详细的手把手教你使用Lighthouse更好推动项目性能优化,性能指标详解,优化方法,需要关注指标分析
  7. marlin 多轴电机驱动
  8. Apple ID 登录
  9. 【项目实战】正确辨析蓝绿部署、金丝雀发布(灰度发布)、滚动发布、A/B测试
  10. 电脑上的文件如何备份到服务器,教您电脑文件备份怎么弄
  11. python把excel变成ppt_【转】使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!
  12. Cobalt编译流程分析
  13. 碰到个阿里p8,终于知道了别人为什么这么强,算是见识到了基础的天花板
  14. 【攻防世界】三、如来十三掌
  15. ajax jqxhr,jquery ajax 之 jqXHR 和 Data Types详解
  16. filter过滤器使用细节
  17. 001-Photoshop基础操作
  18. 微信H5拉起(跳转)微信小程序
  19. 2021年阿里菜鸟网络春招实习岗面试分享,简历+面试+面经全套资料!
  20. 打怪升级之UDP数据接收实验的服务端代码

热门文章

  1. Android Audio - HAL 层多声卡同时录音框架设计(多语言)
  2. tftpd获取文件失败
  3. 如何在Mac OS X中使用GeekTool设置桌面任务清单
  4. 怎么找相同台词的影视片段?这8个电影搜索神器,一句台词找到对应片段
  5. STM32嵌入式基础开发04-PS2手柄SPI通讯数据输出(4_SPI)
  6. 虚拟仿真实验平台服务器需求,虚拟仿真实验中心平台建设方案.pptx
  7. 采用加速度传感器的角度测量仪系统硬件电路设计_温度传感器电路
  8. 非常适合新手入门学习的三款建模软件
  9. python网络爬虫笔记-re正则表达式
  10. Java-Aspose实现上传Excel、Word转换为PDF并进行下载