springboot项目实现腾讯云的短信验证

news2024/11/17 11:35:30

前言:可以先去看下腾讯云开通短息服务需要哪些信息。我这里使用自己很久之前申请过的公众号,其他的比如网站,小程序啥的也没有,哈哈哈~。
腾讯云地址:

https://console.cloud.tencent.com/smsv2/csms-sign/create

接下来开始实现:
1申请短信服务->创建签名,签名类型选择公众号,因为我只有公众号的信息。大家可以自行选择,然后就是按照按照步骤提示上传相应的信息,接下来就是等到官方审核了。通过以后在签名管理这里就会有一个签名。
在这里插入图片描述

2进入正文模板管理,也是按照要求填写相关信息
在这里插入图片描述
都审核通过以后我们就会拿到发送短信时需要的参数。
代码如下:
1:pom中引入依赖

 <dependency>
            <groupId>com.github.qcloudsms</groupId>
            <artifactId>qcloudsms</artifactId>
            <version>1.0.5</version>
</dependency>

在这里插入图片描述
2:腾讯云短信服务的参数,我这里写在了yml文件中,然后读取yml文件

tencent:
  msm:
    # 应用列表中查看的,SDK AppID是短信应用的唯一标识,调用短信API接口时,需要提供该参数
    sdkAppId: 
    # App Key是用来校验短信发送合法性的密码,与SDKAppID对应
    appKey: 
    # 短信模板ID-正文模板管理中的ID
    templateId: ""
    # 签名内容
    sigeName: ""

第一个参数和第二个参数都可以在应用管理->应用列表中查看到
在这里插入图片描述
在这里插入图片描述

第三个参数就是模板id
在这里插入图片描述
第四个参数就是签名内容,是在签名管理中
在这里插入图片描述
3:创建签名参数工具类,目的是读取配置文件中的参数
MsmInfoUtils

package com.example.trade_back_code.utils;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Description: 发送短信字段映射
 * @Title: MsmInfoUtils
 * @Package com.example.trade_back_code.utils
 * @Author: ytsj
 * @CreateTime: 2023/1/19 12:08
 */
@Component
public class MsmInfoUtils implements InitializingBean {
    /**
     * sdkAppId
     */
    @Value("${tencent.msm.sdkAppId}")
    private String sdkAppId;
    /**
     * appKey
     */
    @Value("${tencent.msm.appKey}")
    private String appKey;
    /**
     * 模板id
     */
    @Value("${tencent.msm.templateId}")
    private String templateId;
    /**
     * 签名内容
     */
    @Value("${tencent.msm.sigeName}")
    private String sigeName;

    public static String SDK_APP_ID;
    public static String APP_KEY;
    public static String TEMPLATE_ID;
    public static String SING_NAME;

    @Override
    public void afterPropertiesSet() throws Exception {
        SDK_APP_ID = sdkAppId;
        APP_KEY = appKey;
        TEMPLATE_ID = templateId;
        SING_NAME = sigeName;
    }
}

4:调用方法
controller

/**
     * @param [phone]
     * @return com.example.ResultEntity
     * @description 发送短信
     * @methodName sendSMS
     * @date: 2023/1/19 14:35
     * @author ytsj
     */
    @GetMapping("/sendSMS")
    public ResultEntity sendSMS(String phone) {
        String send = msmService.send(phone);
        return  ResultEntity.success(send);
    }

service:

    /**
     * @description 发送短信
     * @methodName send
     * @param [phone]
     * @return int
     * @date: 2023/1/19 12:13
     * @author ytsj
     */
    public String send(String phone);

service实现类:

  /**
     * @param [phone]
     * @return int
     * @description 发送短信业务
     * @methodName send
     * @date: 2023/1/19 14:09
     * @author ytsj
     */
    @Override
    public String send(String phone) {
        // 生成随机数
        String code = createRandomCode();
        SmsSingleSenderResult result = null;
        try {
            // 模板需要的参数
            String[] params = {code, "5"};
            SmsSingleSender ssender = new SmsSingleSender(Integer.parseInt(MsmInfoUtils.SDK_APP_ID), MsmInfoUtils.APP_KEY);
            // 单发短信
            result = ssender.sendWithParam("86", phone, Integer.parseInt(MsmInfoUtils.TEMPLATE_ID), params, MsmInfoUtils.SING_NAME, "", "");
        } catch (JSONException e) {
            // json解析错误
            e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            e.printStackTrace();
        } catch (HTTPException e) {
            e.printStackTrace();
        }
        // 如果有需要这里写存入redis的逻辑就好
        if (!"OK".equals(result.errMsg)) {
            return result.errMsg;
        }
        return "OK";
    }

    /**
     * @param []
     * @return java.lang.String
     * @description 生成随机验证码
     * @methodName createRandomCode
     * @date: 2023/1/19 14:09
     * @author ytsj
     */
    public String createRandomCode() {
        String str = "4543243879806754623";
        StringBuilder st = new StringBuilder(6);
        for (int i = 0; i < 6; i++) {
            char ch = str.charAt(new Random().nextInt(str.length()));
            st.append(ch);
        }
        String randomCode = st.toString().toLowerCase();
        return randomCode;
    }

测试:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非父子组件的通信

在开发中&#xff0c;我们构建了组件树之后&#xff0c;除了父子组件之间的通信之外&#xff0c;还会有非父子组件之间的通信。这里我们主要讲两种方式&#xff1a; Provide/Inject&#xff1b;全局事件总线&#xff1b; 1、Provide和Inject Provide/Inject用于非父子组件之间…

什么是OAuth2

2.3 什么是OAuth2 2.3.1 OAuth2认证流程 在前边我们提到微信扫码认证&#xff0c;这是一种第三方认证的方式&#xff0c;这种认证方式是基于OAuth2协议实现&#xff0c; OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时&#xff0c;任何第三方都可以使…

离散数学-图论-图的基本概念(11)

图的基本概念 1 图 1.1 图的定义 定义1&#xff1a; 一个无向图G是一个有序的二元组<V,E>&#xff0c;其中 &#xff08;1&#xff09;V是一个非空有穷集&#xff0c;称为顶点集&#xff0c;其元素称为顶点或结点。 &#xff08;2&#xff09;E是无序积V&V的有穷多…

什么是安卓版 UI 业务包 SDK?如何接入?

涂鸦 Android 业务包是指包含业务逻辑和 UI 界面的涂鸦垂直业务模块&#xff0c;旨在为基于涂鸦智能生活 SDK 开发的应用提供快速的一站式接入涂鸦业务模块的能力。 概述 目前提供的业务包种类繁多&#xff0c;例如&#xff1a; H5 商城设备配网设备控制IP 摄像机智能场景常…

“深度学习”学习日记。与学习相关的技巧 -- 参数的更新

2023.1.20 在神经网络的学习这一章&#xff0c;学习过了利用 梯度下降法 对参数进行更新&#xff0c;目的是找到是损失函数的值尽量小的参数&#xff1b;像解决这样的问题称为 最优化 。 由于参数空间十分复杂、参数规模十分庞大&#xff0c;导致“最优化”的过程变得困难。 …

C规范编辑笔记(十二)

往期文章&#xff1a; C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) C规范编辑笔记(六) C规范编辑笔记(七) C规范编辑笔记(八) C规范编辑笔记(九) C规则编辑笔记(十) C规范编辑笔记(十一) 正文&#xff1a; 放假了&#xff…

【数据结构】万字深入浅出讲解顺序表(附原码 | 超详解)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;C语言实现数据结构 &#x1f4ac;总结&#xff1a;希望你看完…

智能矿山电子封条系统 YOLOv5

智能矿山电子封条系统通过yolov5深度学习技术&#xff0c;对现场画面进出口以及主要的井口等重要地方对矿井人员变化、生产作业执勤状态及出入井人员等状况实时监控分析监测。我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN)&#xff0c;用于实时…

Google AIY Vision Kit安装及国内配置

Google AIY Vision Kit安装及国内配置1. AIY Vision Kit组装环节Step 1&#xff1a;收集其他附件选择1&#xff1a;使用AIY项目应用程序选择2&#xff1a;使用显示器、鼠标和键盘Step 2&#xff1a;检查硬件清单Step 3&#xff1a;构建AIY Vision KitStep 3.1&#xff1a;获取最…

旺店通·企业奇门和用友BIP接口打通对接实战

旺店通企业奇门和用友BIP接口打通对接实战接通系统&#xff1a;旺店通企业奇门旺店通是北京掌上先机网络科技有限公司旗下品牌&#xff0c;国内的零售云服务提供商&#xff0c;基于云计算SaaS服务模式&#xff0c;以体系化解决方案&#xff0c;助力零售企业数字化智能化管理升级…

Mac和Windows局域网互传文件iPhone和Windows局域网互传文件

生活中&#xff0c;我们可以通过微信和QQ或网盘等等传输工具进而实现文件互传&#xff0c;但是面临一个问题&#xff0c;大文件无法上传&#xff0c;而且受到网速的限制等诸多因素影响&#xff0c;如今我们可以通过局域网进行实现文件互传&#xff0c;进而改变此种囧境。 首先在…

17道Redis 面试题

Redis 持久化机制缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题热点数据和冷数据是什么Memcache与Redis的区别都有哪些&#xff1f;单线程的redis为什么这么快redis的数据类型&#xff0c;以及每种数据类型的使用场景&#xff0c;Redis 内部结构redis的过期策略以及…

KVM安装部署 | 举例安装虚机Windows2012R2

目录 1、基础环境准备 2、KVM的安装 3、开启服务 4、开启图形化界面 5、也可以通过浏览器管理KVM 6、举例安装一个windows2012R2 1、基础环境准备 【关闭防火墙】 systemctl stop firewalld systemctl disable firewalld 【关闭selinux】 修改文件/etc/selinux/config…

Linux常用指令及Web程序的部署

作者&#xff1a;~小明学编程 文章专栏&#xff1a;Linux 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 Linux中的常见指令 ls pwd cd 文件操作 touch cat mkdir echo rm cp mv man less vim head tail grep ps netstat Linux权限 搭建Ja…

模电相关知识

6 放大电路中的负反馈 6.1 反馈的基本概念及判断方法 6.4 深度负反馈放大电路放大倍数的分析 6.4.1 深度负反馈的实质 6.4.4 基于理想运放的放大倍数分析 6.4.4.1理想运放的线性工作区 理想运放的性能指标理想运放在线性区的特点 标准运放&#xff0c;有两个输入端和一个…

aws codesuit 在codebuild和codepipeline中集成jenkins

codebuild集成jenkins https://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/jenkins-plugin.html Setting up a CI/CD pipeline by integrating Jenkins with AWS CodeBuild and AWS CodeDeploy source选择本地的gitlab仓库&#xff0c;创建一个简单的springboot项…

Cert Manager 申请 SSL 证书流程及相关概念 - 一

2022.3.9 用 cert-manager 申请成功通配符证书 (*.ewhisper.cn), 2022.4.30 该证书距离过期还有 30 天&#xff0c;cert-manager 进行自动续期&#xff0c;但是却失败了。&#x1f631;&#x1f631;&#x1f631; 然后过了几天&#xff0c;在 2022.5.8, 最终成功了。如下图&a…

Vue3 项目实战 —— 后台管理系统( pc端 ) —— 动态多级导航菜单顶部侧边联动

前期回顾 0.活在风浪里的博客_CSDN博客-vue2,开源项目,Js领域博主0.活在风浪里擅长vue2,开源项目,Js,等方面的知识,0.活在风浪里关注css,safari,html5,scss,elementui,前端,es6,正则表达式,vue.js,express,ajax,webpack,echarts,json,html,typescript,sass,https,面试,ch…

离散数学-图论-图的矩阵表示(12.1)

图的矩阵表示 1 关联矩阵 定义&#xff1a;设无向图G<V,E>,V{v1,v2,⋅⋅⋅,vnv_1,v_2,,v_nv1​,v2​,⋅⋅⋅,vn​},E{e1,e2,⋅⋅⋅,eme_1,e_2,,e_me1​,e2​,⋅⋅⋅,em​},令mijm_{ij}mij​为顶点viv_ivi​与边eje_jej​的关联次数&#xff0c;则称(mij)nm(m_{ij})_{nm}…

九龙证券|景气度复苏与库存拐点双击,这个行业获主力看好!

今天计算机职业、电子、非银金融职业净流入规划居前&#xff0c;9股主力资金净流入超2亿元。 证券时报数据宝统计&#xff0c;今天沪深两市主力资金净流出46.1亿元&#xff0c;其间创业板净流出3.57亿元&#xff0c;沪深300成份股净流入28.21亿元。 申万一级职业中&#xff0c…