腾讯云短信发送验证码(超详细)
在大部分的短信平台,能免费送的短信条数也就是几条,太少了,测试都不够,基本上都是要充钱够买的。我也注册了好几个平台,发现腾讯云免费赠送200条试用短信,就很不错。在我们学生党项目测试来说的话,就已经绰绰有余了。
1、注册腾讯云的账号,然后去实名认证一下
腾讯云的官网: https://cloud.tencent.com/
2、免费领取短信,可以白薅200条短信(个人项目测试已经足够了)
云产品——短信
短信——概览,这里可以看见短信有效余量(也可以在这里免费领取)
短信——套餐包管理——国内套餐包(个人认证,免费赠送领取)
3、创建签名
签名审核一般会很严格,只要签名审核通过基本上就成功了。不过腾讯云相比阿里云会友好很多,审核比较宽松。(多申请几条,总有一条通过的,未通过的可以看一下失败的原因,改一下再提交,我一开始不太会只申请了一条,搞了好几天才通过)
创建成功后是这样的(这里的signName签名内容后面会用到)
阿里云只有项目上线或者备案后才可以申请,而腾讯云的签名申请个人的公众号提供公众号的管理界面截图即可申请成功。
签名类型(有公司、网站、APP、公众号、小程序),审核在2小时内处理完毕。
我比较推荐网站或者公众号,我用的是公众号,证明和委托的话就是营业执照 ,去网上找一下。
4、创建模板
模板申请都是非常容易通过的(模板templateID和内容参数{1},{2}下面会用到)
5、短信——应用管理——应用列表(SDKAppID,AppKey下面会用到)
默认都有,没有就创建
6、创建密钥(这里的SecreId/SecreKey在后面会用到)
选择继续使用
SecretId 用于标识 API 调用者的身份,SecretKey 用于加密签名字符串和服务器端验证签名字符串的密钥。
上面的步骤就完成了,下面就是代码部分:
具体代码可查看官方腾讯云SDK 文档,里面有非常详细的java的接入指南
(地址:https://cloud.tencent.com/document/product/382/43194)
您可以在 Maven仓库上找到最新的版本。Maven仓库中显示的4.0.11是废弃版本
(地址:https://search.maven.org/search?q=tencentcloud-sdk-java )
加入maven依赖(配置SDK)
引入短信验证的jar包,maven的pom.xml加入
<!--腾讯云短信--><!-- https://mvnrepository.com/artifact/com.tencentcloudapi/tencentcloud-sdk-java --><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.284</version></dependency>
随机验证码4/6位数
//验证码随机数
public class ValidateCode {public static Integer generateValidateCode(int length){Integer code =null;if(length == 4){code = new Random().nextInt(9999);//生成随机数,最大为9999if(code < 1000){code = code + 1000;//保证随机数为4位数字}}else if(length == 6){code = new Random().nextInt(999999);//生成随机数,最大为999999if(code < 100000){code = code + 100000;//保证随机数为6位数字}}else{throw new RuntimeException("只能生成4位或6位数字验证码");}return code;}
}
常量参数类(把上面要用到的SecretID, SecretKey, SdkAppID, signName, templateId参数封装)
/**
* 常量类
*/
public class Constants {//腾讯云账户密钥对: SecretIDpublic static final String SecretID = "SecretID";//腾讯云账户密钥对: SecretKeypublic static final String SecretKey = "SecretKey";//SdkAppidpublic static final String SdkAppid = "SdkAppid";//signName :签名public static final String signName = "Sam先生";//短信模板id:public static final String templateId ="978194";public static String voicode="";
}
自己封装一个发送短信的工具类(有些是加上去)
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
//导入可选配置类
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
// 导入对应SMS模块的client
import com.tencentcloudapi.sms.v20190711.SmsClient;
// 导入要请求接口对应的request response类
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
import com.tencentcloudapi.sms.v20190711.models.SendStatus;import javax.servlet.http.HttpSession;public class SendSmsUtil {public static SendStatus[] sendSms(String[] phoneNumber ) {SendStatus[] returString= {};try {/* 必要步骤:* 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。* 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。* 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,* 以免泄露密钥对危及你的财产安全。* CAM密匙查询: https://console.cloud.tencent.com/cam/capi*/Credential cred = new Credential(Constants.SecretID, Constants.SecretKey);// 实例化一个http选项,可选,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();// 设置代理
// httpProfile.setProxyHost("host");
// httpProfile.setProxyPort(port);/* SDK默认使用POST方法。* 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求 */httpProfile.setReqMethod("POST");/* SDK有默认的超时时间,非必要请不要进行调整* 如有需要请在代码中查阅以获取最新的默认值 */httpProfile.setConnTimeout(60);/* SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务* 则必须手动指定域名,例如sms的上海金融区域名: sms.ap-shanghai-fsi.tencentcloudapi.com */httpProfile.setEndpoint("sms.tencentcloudapi.com");/* 非必要步骤:* 实例化一个客户端配置对象,可以指定超时时间等配置 */ClientProfile clientProfile = new ClientProfile();/* SDK默认用TC3-HMAC-SHA256进行签名* 非必要请不要修改这个字段 */clientProfile.setSignMethod("HmacSHA256");clientProfile.setHttpProfile(httpProfile);/* 实例化要请求产品(以sms为例)的client对象* 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量 */SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);/* 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数* 你可以直接查询SDK源码确定接口有哪些属性可以设置* 属性可能是基本类型,也可能引用了另一个数据结构* 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明 */SendSmsRequest req = new SendSmsRequest();/* 填充请求参数,这里request对象的成员变量即对应接口的入参* 你可以通过官网接口文档或跳转到request对象的定义处查看请求参数的定义* 基本类型的设置:* 帮助链接:* 短信控制台: https://console.cloud.tencent.com/sms/smslist* sms helper: https://cloud.tencent.com/document/product/382/3773 *//* 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666 */String sdkappid = Constants.SdkAppid;req.setSmsSdkAppid(sdkappid);/* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看 */String sign = Constants.signName;req.setSign(sign);/* 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper] */
// String senderid = "";
// req.setSenderId(senderid);/* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回 */
// String session = "xxx";
// req.setSessionContext(session);/* 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper] */
// String extendcode = "xxx";
// req.setExtendCode(extendcode);/* 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看 */String templateID = Constants.templateId;req.setTemplateID(templateID);/* 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]* 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号*/String[] phoneNumbers = {"+86"+phoneNumber};req.setPhoneNumberSet(phoneNumber);// 随机验证码int vode=ValidateCode.generateValidateCode(6);String code=String.valueOf(vode); /* 模板参数: 若无模板参数,则设置为空*/String[] templateParams = {code};req.setTemplateParamSet(templateParams);/* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的* 返回的 res 是一个 SendSmsResponse 类的实例,与请求对象对应 */SendSmsResponse res = client.SendSms(req);// 输出json格式的字符串回包System.out.println(SendSmsResponse.toJsonString(res));// 也可以取出单个值,你可以通过官网接口文档或跳转到response对象的定义处查看返回字段的定义System.out.println(res.getRequestId());returString=res.getSendStatusSet();} catch (TencentCloudSDKException e) {e.printStackTrace();}return returString;}
}
模板参数就是模板内容里的{参数1},{参数2},我用到是第3个模板,参数是随机验证码
// 随机验证码int vode=ValidateCode.generateValidateCode(6);String code=String.valueOf(vode);Constants.voicode=code;/* 模板参数: 若无模板参数,则设置为空*/String[] templateParams = {code};req.setTemplateParamSet(templateParams);
最后写个controller测试一下
//发送手机验证码@RequestMapping(value="/sendCodeAgain")@ResponseBodypublic SendStatus[] sendCodeAgain(@RequestParam(value="telephone",required=true) String Phone){String[] Phones = {"+86" + Phone};SendStatus[] ret = SendSmsUtil.sendSms(Phones);return ret;}
发送验证码成功!!!
关于前端接收的代码,可以看一下我另外一篇文章https://blog.csdn.net/weixin_44541213/article/details/118073733
希望对你们有用,如果哪里分析不够恰当请指点
腾讯云短信发送验证码(超详细)相关推荐
- SpringBoot腾讯云短信实现验证码
SpringBoot腾讯云短信实现验证码 在学习过程中偶然遇见需要实现验证码功能的需求,于是寻思着将功能抽取出来用于分享学习 业务功能:实现验证码60s,且要求防止用户高频刷验证码(即1min一次不多 ...
- jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】
文章目录 jeecg 项目效果展示 短息通知页面入口 代码中调用短信api 配置和代码 API中的重要参数配置项: 阿里控制台注册 注册签名 注册短信模板 阿里云短信发送验证码配置和项目使用 je ...
- 腾讯云短信发送失败提示1038错误
短信正文模板如下: 尊敬的客户,您好.您正在进行{1}电子签名,请确认系本人操作,验证码{2} 第一个参数是客户的姓名,第二个参数是验证码.发送短息失败,如图 1038错误码------验证码类模版, ...
- 腾讯云短信发送(php - think PHP 6)
1.腾讯云短信服务 - 快速入门 ,流程走完. 2.使用 API Explorer 云-API-控制台 - 发送短信 调试控制台获取示例代码 PS:完善必填参数, 注意某些非必填参数:SignName ...
- 腾讯云短信发送api(SendSms)--java
一.申请腾讯云帐号并开通短信服务(开通短信服务需要手机实名认证) 1.注册或登录地址:登录 - 腾讯云 2.登录后搜索:短信 3.创建签名,注意,这里的签名内容在代码里面要用到.(提交审核两个小时之 ...
- 【delphi】腾讯云短信发送控件(源代码、帮助文档、演示程序)
1. 腾讯云短信控件 在开发小程序注册的时候,需要发送短信,所以就专门开发了腾讯云的短信发送控件,这样发送短信就可以直接使用,不需要再进行签名等麻烦的开发了,只需要设置几个简单参数即可. 1.1 控件 ...
- Java整合腾讯云短信发送
1. 引入相关maven依赖 <dependency><groupId>com.github.qcloudsms</groupId><artifactId&g ...
- 阿里云短信发送验证码使用记录
官网:https://www.aliyun.com/product/sms 0.首先需要注册阿里云账号,可以直接用支付宝登陆. 1.登陆阿里云短信管理控制台,选择快速学习,使用测试短信发送 2.测试手 ...
- 腾讯云短信发送接口类
依赖: com.github.qcloudsms qcloudsms 1.0.5 import com.alibaba.fastjson.JSONException; import com.githu ...
最新文章
- 揭示生命的奥秘——生物信息学
- 去年押中数字人爆发,今年看好什么?百度研究院2022十大科技趋势预测出炉
- 前端开发之JavaScript基础篇四
- 使用hexo yeele主题搭建个人博客
- 讲一点分布式的基础知识,图解!
- 算法面试题-美团点评2016研发工程师编程题(二)-字符编码(哈夫曼树)
- JavaScript的对象
- oracle (+)的可读性,Oracle基础笔记一
- 圣诞节海报设计还没开始?感受下合适的节日感PSD模板
- 中国互联网公司员工平均年龄出炉,你怎么看?我躺着看
- 期望dp--BZOJ3450 Easy
- 微博中微服务缓存_微服务实践分享(5)缓存中心
- 全网最详细的纪录片观看&下载指南
- 电脑右键打印不见了_win7右键没有打印选项怎么办|右键菜单没有压缩选项怎么解决|右键没有图形选项解决方法-系统城...
- Win8电脑音效怎么调?电脑音效设置方法
- 一道求极值的三角函数题
- 算法学习(二十)——GAE
- MATLAB 神经网络NAR时间序列做预测
- 在光伏并网柜保护监测领域安科瑞给出的解决方案
- 手机远程启动汽车,汽车远程启动还是手机控制好!有一种远程手机启动热车系统非常的不错是什么功能知道吗?