自定义一个腾讯云短信验证码接口spring-starter

1. 首先注册一个腾讯云的短信服务

在腾讯云官网搜索短信即可直接开通,第一次开通有100条国内免费短信
然后在控制台快速入门设置短信签名和模板,审核通过就可以用了(审核很快,我的几分钟就ok了)

申请签名需要上传资料,签名类型处,如果没有自己的网站或者app,可以申请一个自己的公众号(公众号申请也相当简单),上传公众号后台设置截图即可

接着在应用管理里创建一个专用的应用,也可以使用默认的应用,这里的SmsSdkAppId,后面调用短信服务api时要用

2.在腾讯云访问管理设置一个用户组和用户

先建一个用户组,将短信api权限添加进去,也可以添加其他的功能

然后新建一个用户或者用主账户加入到用户组中,完成后,保存密钥id和key,后面会用到

3.开始自定义我们的starter

首先创建一个空的maven项目sms-spring-boot-starter作为starter启动器,里面不需要写代码
然后创建一个springbooot项目sms-spring-boot-starter-autoconfigure配置starter

在sms-spring-boot-starter里把sms-spring-boot-starter-autoconfigure引入进来

    <dependency><groupId>com.fzh</groupId><artifactId>sms-spring-boot-starter-autoconfigure</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
</dependencies>

然后开始在sms-spring-boot-starter-autoconfigure里实现短信发送功能

首先引入腾讯云最新的依赖

<!-- https://mvnrepository.com/artifact/com.tencentcloudapi/tencentcloud-sdk-java --><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>4.0.11</version></dependency>

根据官方api文档实现方法

public class SendSms {@Autowiredprivate SmsConfigProperties smsConfigProperties;public SendSmsResponse SendSmsClient(String phoneNumber, String TemplateParam) {// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密// 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取Credential cred = new Credential(smsConfigProperties.getSecretId(),smsConfigProperties.getSecretKey());// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("sms.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的SmsClient client = new SmsClient(cred, "ap-beijing", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象SendSmsRequest req = new SendSmsRequest();//拼接号码phoneNumber = "+86" + phoneNumber;//需要发送短信的号码String[] phoneNumberSet = {phoneNumber};req.setPhoneNumberSet(phoneNumberSet);//应用idreq.setSmsSdkAppid(smsConfigProperties.getSmsSdkAppid());//签名req.setSign(smsConfigProperties.getSign());//模板idreq.setTemplateID(smsConfigProperties.getTemplateID());//传输的参数,一般就是验证码String[] TemplateParamSet = {TemplateParam};req.setTemplateParamSet(TemplateParamSet);try {// 返回的resp是一个SendSmsResponse的实例,与请求对象对应SendSmsResponse resp = client.SendSms(req);// 输出json格式的字符串回包System.out.println(SendSmsResponse.toJsonString(resp));return resp;} catch (TencentCloudSDKException e) {throw new RuntimeException(e);}}
}

将需要传递的参数写到自动配置类里

@ConfigurationProperties("tencent.sms")
public class SmsConfigProperties {private String secretId;private String secretKey;private String smsSdkAppid;//签名用的是名字,不是idprivate String sign;private String templateID;public String getSecretId() {return secretId;}public void setSecretId(String secretId) {this.secretId = secretId;}public String getSecretKey() {return secretKey;}public void setSecretKey(String secretKey) {this.secretKey = secretKey;}public String getSmsSdkAppid() {return smsSdkAppid;}public void setSmsSdkAppid(String smsSdkAppid) {this.smsSdkAppid = smsSdkAppid;}public String getSign() {return sign;}public void setSign(String sign) {this.sign = sign;}public String getTemplateID() {return templateID;}public void setTemplateID(String templateID) {this.templateID = templateID;}
}

最后设置配置类

@Configuration
@ConditionalOnMissingBean(SendSms.class)
@EnableConfigurationProperties(SmsConfigProperties.class)
public class AutoConfiguration {@Beanpublic SendSms sendSms() {SendSms sendSms = new SendSms();return sendSms;}
}

到这里还有最重要的一步!!!

在sms-spring-boot-starter-autoconfigure的resources通过spring.factories文件加载配置类,在resources下创建META-INF目录,创建spring.factories文件

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sms.config.AutoConfiguration

4.将两个模块install到本地,调用的时候直接将下面的sms-spring-boot-starter的依赖引入即可,写个springboot测试一下:

 <!--在新项目里导入启动器的依赖--><dependency><groupId>com.fzh</groupId><artifactId>sms-spring-boot-starter-autoconfigure</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

在配置文件里写需要的参数,sign直接写签名的名字即可

controller传入手机号和验证码,注意腾讯云国内短信验证码不能超过六位

@RestController
public class DemoController {@Autowiredprivate SendSms sendSms;@GetMapping("/send/{phoneNumber}")public void onMessage(@PathVariable String phoneNumber) {//随机生成六位验证码String TemplateParam3 = String.format("%040d",new BigInteger(UUID.randomUUID().toString().replace("-", ""), 16)).substring(0, 6);//发送短信sendSms.SendSmsClient(phoneNumber, TemplateParam3);}
}

最后测试一下,会显示发送结果,大功告成!!!

自定义一个腾讯云短信验证码接口spring-starter相关推荐

  1. 腾讯云短信验证码接口调用案例

    1:引入jar包依赖 <!--短信接口--><dependency><groupId>com.github.qcloudsms</groupId>< ...

  2. java叮咚云短信验证码接口调用

    最近在写后台,所以有些方法想记录下来,下面是叮咚云短信验证码接口调用,叮咚云的地址http://www.dingdongcloud.com/,里面有详细的信息,下面是我写的一个方法,仅供参考. imp ...

  3. 使用腾讯云短信服务实现Spring Boot短信发送

    发送短信 01 注册微信公众号 02 注册腾讯云账号 03 创建签名和模板 第一步 创建签名 第二部 创建模板 04 发送短信 01 注册微信公众号 在百度搜索微信公众平台,并在进入官网后注册.在账号 ...

  4. 调用SMS腾讯云短信验证码API的几个坑,及详细使用流程

    前言 首先说下,几个坑已解决.准备说一下.使用的一些步骤 因为项目有一个短信验证码登录注册的,首先注册的是阿里的.但是审核没有审核通过,所以有注册了腾讯的 本来向截图一下阿里的,结果登录出错了,这里就 ...

  5. 短信验证--阿里云短信验证码接口

    前言 公司最近项目需要一个手机验证码的功能,任务确定后,倍感亚历山大,以为和第三方对接的都好麻烦,查阿里的API.网上大神写的博客,各种查之后才发现,简单的一塌糊涂,这里想说个问题,不知道其他的攻城狮 ...

  6. C#对接云短信验证码接口 (前台+后台)

    前台代码 逻辑:点击获取验证码通过调用函数生成6位随机的验证码存在隐藏的input框值,把生成的验证码和手机号码传入到后台把验证码发送给用户,把用户填写的验证码和隐藏的input框值的验证码做对比看是 ...

  7. php 腾讯云 短信验证码发送

    1.打开腾讯云官网注册获取SDK AppID(appid).appkey(appkey).sign(签名内容).TemplateID(模板id): 2. composer 安装腾讯云的依赖 在项目 c ...

  8. 腾讯云短信发送接口类

    依赖: com.github.qcloudsms qcloudsms 1.0.5 import com.alibaba.fastjson.JSONException; import com.githu ...

  9. 腾讯云短信服务——获取验证码

    引言 之前介绍过阿里云短信服务,传送门:阿里云短信服务--短信发送验证码,但是由于阿里云现在短信调用门槛较高,申请有很多限制(我申请好几次都没有通过),所以只能使用测试账号给固定的手机号发送验证码,自 ...

  10. django实现腾讯云短信sdk和redis缓存服务,手机号验证码登录,未注册直接注册登录

    先注册并完成腾讯云短信服务的审核,包括签名和模板:安装redis服务: 1.安装必要库 pip install --upgrade tencentcloud-sdk-python 如果同时有pytho ...

最新文章

  1. python3爬虫实例-python3爬虫实例(采集淘宝商品数据)
  2. 将整数拆分为勾股数的问题解决
  3. Centos更换阿里云源
  4. 华南理工计算机考试题,华南理工考研计算机历年真题
  5. CSP认证201412-4 最优灌溉[C++题解]:最小生成树裸题、Kruskal算法求最小生成树
  6. iphone4s解锁_苹果手机忘记密码怎么办?iPhone忘记密码解锁恢复方法
  7. 软设考试笔记--数据流图
  8. 对话系统有哪些最新进展?这17篇EMNLP 2021论文给你答案
  9. 【Qt】QModbusRtuSerialMaster类
  10. python将某个列表按元素值分成多个子列表
  11. Java虚拟机执行引擎多态的实现
  12. 【BZOJ - 4318】OSU!(概率dp,数学期望,期望的线性性)
  13. 安卓下设置系统字体大小影响H5页面布局
  14. 如何保养DVD刻录机
  15. 【初始化】神经网络到底该如何初始化?吴恩达Deeplearning.ai最新干货|湾区人工智能...
  16. io里没有driveinfo没有_来福宝宝,愿天堂里没有病痛
  17. geohash美团附近酒店搜索-技术方案
  18. c语言最好的文本编辑器,【软件分享】两个小巧好用的C语言编辑器
  19. oracle执行计划分析
  20. 魅族路由器极速版刷机_魅族路由器极速版最真实的体验评测

热门文章

  1. 台式电脑怎么组装步骤_台式机组装教程,详细教您台式机怎么组装
  2. 【UE4笔记】EventFunction事件和函数的区别
  3. 苏琴与机器人白正_一段知乎的元白
  4. 天才数学家连续拿下菲尔兹奖、新视野奖,专攻“最难的简单问题”,生活中还是个社牛...
  5. 微信小程序:自适应来电模拟器
  6. 信号的带宽、传输速率、采样率的关系
  7. 如何玩转YouTube
  8. <<道 德 经>>------老子
  9. 解决米8应用下面有黑边的问题
  10. Word技巧和快捷键