java程序实现接入腾讯云短信验证

2020-03-26  本文已影响0人  稚友22

前期准备

首先注册一个腾讯云账号,新账号注册可以免费领取短信包,我这里是一百条。很简单,微信扫码即可去注册.
注册好之后,登录后,直接在产品栏搜索短信,如图:

2020-03-26_113929.png

进入后点击免费领取短信就可以获得一个免费的短信包,我已经领取过了,领取后自跳转到短信控制台:


2020-03-26_114159.png

在套餐包下我们就可以看到自己的短信包状态,以及使用情况,如图:


2020-03-26_114423.png
有了包之后我们接下来正式开始完成短信调用的部分,因为发送短信我们需要携带签名,所以需要点击国内短信-签名管理-创建签名。这里需要选择签名类型,我这里是网站,填写名称可随意但是要符合要求,上传备案截图和说明后就可以确认提交,如图:
2020-03-26_115258_LI.jpg

然后需要等待后台审核,大概两小时,催审一下就半个小时左右,审核通过后就可以在签名管理里面查看我们的签名,状态是已通过,我们就可以使用了,如图:

2020-03-26_115712_LI.jpg

接下来我们选择国内短信-正文模板管理,创建一个新的短信模板,步骤和签名创建类似,可以自定义短信内容,也可以套用模板。创建完成后也需要审核,前提是必须有签名才可以申请模板,不然会被驳回。申请成功如图:


2020-03-26_132547.png

在然后我们还需要创建一个应用,选择应用管理-应用列表-创建应用,输入一个名称点击创建就可以了,创建完成后点开我们可以看到应用的信息,这里有两个比较重要的后面会用到的信息,一个是应用id,一个是应用的key,注意保密key,我们就是利用key来获取短信接口,如图:


2020-03-26_132815_LI.jpg
到这一步,我们的第三方工作基本完成,接下来我们开始在java代码中真正的去调用我们的短信服务,在java中新建一个SmsController类,然后定义一个send方法,编写一下代码:
public void send(){
        //前台的电话号码
        String mobile = getPara("mobile");
        //验证码 后台利用工具随机产生的四位数字
        String code = RandomStringUtils.randomNumeric(4);
        //应用id
        int appId=xxxxxxxx;
        //应用key
        String appKey="xxxxxxxxxxxx";
        //短信模板id
        int templateId=xxxxxxx;
        //证书内容
        String smsSign="xxxxxx";
        //可能获取失败,所以放在try-chach中
        try {
            String[] params = {code,"5"};//传入验证码和时间数组,根据短信模板自行调整
            //创建短信调用接口 传入刚刚的应用id 和 key
            SmsSingleSender sender = new SmsSingleSender(appId, appKey);
            //调用方法发送短信  传入国家码 电话号码 模板id 模板参数 签名 扩展码为空 返回参数为空 
            SmsSingleSenderResult result = sender.sendWithParam("86", mobile, templateId,params,smsSign,"","");
        } catch (Exception e) {
            e.printStackTrace();
        }

其中各参数说明:
mobile 是前台传来的电话号码
code 是后台工具类随机产生的四位数的验证码
appId 是前面腾讯云创建的应用的SDK AppID
appKey 是应用的App Key也就是应用中用小眼睛遮住的部分
templateId 是我们在国内短信-正文模板创建的模板的id
params 模板需要的参数,验证码,有效时间等等
因为我的模板创建时需要两个参数,所以这里需要一个字符串数组来放验证码和时间,如果模板只有一个参数,就只用传递一个验证码就可以了,而且每一次获取短信也不是百分百成功,所以需要放在try-catch中。

写完之后配置好映射,就可以去调用接口了,我这里不是spring框架,所以controller调用写法不一样,这里没有@GetMapping(),@requestBody()之类的注解,其实写法是一样的,只需要按规则去调用就行了。我的配置如下图:


2020-03-26_085508_LI.jpg

访问路径为/admin/sms/send,接下来启动项目,打开前台页面输入电话号码,点击获取,如图:


2020-03-26_135107_LI.jpg

返回响应200说明获取成功,关键点来了,这时打开我们的手机,查看短信:

success.jpg

获取成功,我们的项目接入腾讯云短信平台success!!!

上一篇下一篇

猜你喜欢

热点阅读