自定义一个腾讯云短信验证码接口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. 在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的
  2. html转义符 xsl转义符
  3. 当“天天酷跑”遇上“Python程序员” 另类演绎团战新玩法(学到了学到了~)
  4. “读书人”的事儿,能叫抄吗?
  5. 如何计算边缘计算的成本
  6. item 12: 把重写函数声明为“override”的
  7. Python将彩色图像转为灰度图像
  8. Hbase 操作工具类
  9. 三足鼎立 – Mac 输入法横向对比
  10. rs485接口上下拉_带内部上下拉电阻的无极性rs-485接口芯片的制作方法
  11. Pupy – 全平台远程控制工具
  12. Python少儿编程入门篇(1)基本数据类型
  13. ERP来龙与去脉和应用案例。
  14. 第13章WEB13-JSP模式JDBC高级篇
  15. android手机短信诈骗原理,安卓系统均存短信欺诈漏洞 专家:系统先天不足
  16. 给春节的宴客小吃来点小惊喜---绿茶甜心曲奇
  17. CAD2012安装失败怎么回事?
  18. ios 页面即将消失_20个即将推出的页面介绍及如何正确处理它们
  19. 2017年寒假集训分组测试赛2 Ranklist
  20. 微信公众号--订阅通知

热门文章

  1. 大学生计算机考试PPT制作,计算机等级考试制作PPT表格
  2. 【3款文献阅读的插件】
  3. PHP 实现发送短信验证码(CI框架)
  4. android-sdk-windows 如何安装,android-sdk-windows 安装.doc
  5. 关掉外接键盘的背光灯
  6. oracle 基础知识(十四)----索引扫描
  7. Python图像的手绘效果
  8. 分治法 --- 大整数的乘法
  9. java mvc接收json_详解springmvc 接收json对象的两种方式
  10. win10计算机护眼,win10系统设置护眼模式的三种方法