SpringBoot集成腾讯云发送短信验证码

整个短信验证码,我弄了一下午…一下是我的总结,照着步骤走,绝对没问题:
首先,打开腾讯云(先别用阿里云),使用腾讯云的目的是能够与微信公众号进行对接,这样短信的签名和模板审核能够通过,如果使用阿里云,需要有上线的网站或者app,打开以后,搜索短信,打开应用管理

在这里插入图片描述

这里需要说明一下,创建新应用是不需要审核的,直接就可以创建:
在这里插入图片描述
创建完以后,将这两个备份下来:
在这里插入图片描述
会在项目中用到,然后是最费时间的步骤,创建签名和模板,需要人工审核,审核不通过还得重新提交,在创建之前, 需要先创建一个订阅号(个人只能创建订阅号)
https://mp.weixin.qq.com/如果没有订阅号,无法通过审核,创建完以后,开始创建签名和模板,需要注意,创建签名的时候,选择公众号,然后上传一张符合要求的照片,要求在旁边能看到样例,别传错了(我第一次就随便截了个图,结果给我驳回了)在这里插入图片描述
模板很简单,自己弄就行

在这里插入图片描述

如果都审核好了,那么可以开始编码了:
首先,老规矩,引入 maven 依赖:

<!--腾讯云短信服务SDK-->
        <dependency>
            <groupId>com.github.qcloudsms</groupId>
            <artifactId>qcloudsms</artifactId>
            <version>1.0.2</version>
        </dependency>

然后,创建实体类对象,存储信息:(这里随便写了,可能不满足规范)
在这里插入图片描述

package com.demo.qcby.entity;

import lombok.Data;

/**
 * @Classname SmsConfigProperties
 * @Description 测试用的
 * @Date 2021/9/8 10:38
 * @Created by thx
 */
@Data
public class SMSParameter {
	// 这里是第一步应用里面的 appId
    private int appId = xxxxx;
	//同理,密码
    private String appKey = "xxxxx";
	// 这个其实可有可无,我就没用上
    private String[] phoneNumbers;
	// 模板 id 见上图
    private int templateId = xxxx;
	// 这里写签名的内容
    private String smsSign = "xxxxx";
}

然后定义一个生成随机码的工具类,需要注意的是,短信随机码只能是纯数字,没有字母!!!我这里用的邮箱验证码,结果弄了半天我淦

package com.demo.qcby.util;

import java.security.SecureRandom;
import java.util.Random;

/**
 * @Classname VerCodeGenerateUtil
 * @Description 生成验证码工具类
 * @Date 2021/9/7 14:23
 * @Created by thx
 */
public class VerCodeGenerateUtil {
    private static final String SYMBOLS = "0123456789";//ABCDEFGHIGKLMNOPQRSTUVWXYZ
    private static final Random RANDOM = new SecureRandom();
//    生成 6 位数的随机数字
    public static String generateVerCode() {
        char[] numbers = new char[6];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = SYMBOLS.charAt(RANDOM.nextInt(SYMBOLS.length()));
        }
        return new String(numbers);
    }
}

然后可以写 controller 了,只需传递你想要发送的手机号

@RequestMapping("sendText")
    public ResultJson sendText(String phone) throws ClientException, HTTPException, IOException {
    	// 生成 随机验证码
        String ver = VerCodeGenerateUtil.generateVerCode();
        // 这里对应你的短信模板,如果需要传递两个参数,那么字符串数组应该有两个值
        String[] code = new String[]{ver};
        //获得 id 和 key
        SmsSingleSender sender = new SmsSingleSender(smsParameter.getAppId(), smsParameter.getAppKey());
//        SmsSingleSenderResult result = sender.sendWithParam("86", phone, smsParameter.getTemplateId(),
//               code, smsParameter.getSmsSign(), "", "" );
		//发送短信,86 指的是国内短信,第二个是模板的 id,第三个是传递的参数,第四个是签名内容,后面两个可以传递空
        SmsSingleSenderResult result = sender.sendWithParam("86", phone, smsParameter.getTemplateId(),
                code, smsParameter.getSmsSign(), "", "");
        // 如果 result 的结果是 0,说明发送成功
        if (result.result == 0) {
            return ResultJson.success(code[0]);
        } else {// 如果结果不是 0,说明出错了,打印错误信息以帮助修改
            return ResultJson.failure(result.errMsg, result.sid);
        }

    }

弄好后,使用 postMan 测试:
在这里插入图片描述
然后附上手机截图:
在这里插入图片描述
完成!!!

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_努力努力再努力_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值