admin 管理员组

文章数量: 887021

通过微信公众号开通短信验证码

在项目研发的过程中,之前使用的是邮箱的验证方式。这次来点高大上的使用短信验证码(需要注册腾讯云和微信公众号)

首页登录腾讯云

https://cloud.tencent.com/product/sms
这个就是短信申请的网址了

1、点击免费领取短信

2、拉倒最下面开始接入即可

(这里注意看官方的介绍,个人用户免费送100条、三个月有效。企业用户免费送1000条)

3、接下来会进入这个页面

3.1、先可以使用右侧的测试短信来测一波

接下来静静的等待~

ok~轻松完成

4、接下来是重点

4.1、开始创建签名

a、签名用途选择自用

b、类型这里选的是公众号,大家可以选app、小程序、网站等(这三个目测需要投资点钱。我第一次使用的是我网站的域名申请的功能都一样所以选择公众号即可)
c、签名内容写自己的公众号名称(网站那些写域名名称即可)
d、证明上传需要注意一下(点击查看范例可了解)
网站创建去截自己网站域名的备案页面
公众号创建的去微信公众号平台=》设置=》账号详情页面 截图
f、申请说明写公众号名称或域名名称即可

4.2、这样就完成创建签名了

    (可能需要一段时间审核,静静的等待就可以大概十几分钟就好,很快哒。。。)

4.3、下面开始创建模板

(用于发送短信的模板)

这里大家可随便发挥了,尽情的挥洒你们的才华~
(内容当中的{1} ,这些和sql语句的占位符意思一样,后期可放入验证码 )

5、以上一个简单模板就完成了下面开始在代码中接入

官方给的教程可以参考(比较复杂)
https://cloud.tencent/document/product/382/13613

5.1、下面开始介绍个简单的方法
首先去Git中下载官方提供的jar包

https://github/qcloudsms/qcloudsms_java/releases
(这里有个坑,以前没点击这下过,我居然在这里栽了更头)

5.2、下载完成后解压打开、配好jdk、maven等

测试类中他已经给了一个但是其中包括了自己没有开通的模块,所以说选择新建一个进行测试

// 短信应用 SDK AppID
int appid = 1400009099; // SDK AppID 以1400开头
// 短信应用 SDK AppKey
String appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad";
// 需要发送短信的手机号码
String[] phoneNumbers = {"21212313123", "12345678902", "12345678903"};
// 短信模板 ID,需要在短信应用中申请
int templateId = 7839; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
// 签名
String smsSign = "腾讯云"; // NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请

以上的appid和appkey在腾讯云中=》应用管理=》应用列表来查看

其他的都很直白

指定模板 ID 单发短信

import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;import java.io.IOException;
​
​
public class TestMyzz {
    public static void main(String[] args) {
        // 短信应用SDK AppID
        int appid = 1400465465; // 1400开头// 短信应用SDK AppKey
        String appkey = "fadfadssdaffdsaads";// 需要发送短信的手机号码
        String[] phoneNumbers = {"132456789"};// 短信模板ID,需要在短信应用中申请
        // NOTE: 这里的模板ID`7839`只是一个示例,
        // 真实的模板ID需要在短信控制台中申请
        int templateId = 553611;// 签名
        // NOTE: 这里的签名"腾讯云"只是一个示例,
        // 真实的签名需要在短信控制台中申请,另外
        // 签名参数使用的是`签名内容`,而不是`签名ID`
        String smsSign = "002睿智";try {
            String[] params = {"1234", "2"};
            SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
            SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0],
                    templateId, params, smsSign, "", "");
            System.out.println(result + "完成了");
        } catch (HTTPException e) {
            // HTTP 响应码错误
            System.out.println("响应码错误");
            e.printStackTrace();
        } catch (JSONException e) {
            System.out.println(" 解析错误");
            // JSON 解析错误
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println(" 网络 IO 错误");
            // 网络 IO 错误
            e.printStackTrace();
        }
    }
}

指定模板 ID 群发短信

import com.github.qcloudsms.SmsMultiSender;
import com.github.qcloudsms.SmsMultiSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;
import java.io.IOException;
try {
  String[] params = {"5678"};
  SmsMultiSender msender = new SmsMultiSender(appid, appkey);
  SmsMultiSenderResult result =  msender.sendWithParam("86", phoneNumbers,
      templateId, params, smsSign, "", "");
  System.out.println(result);
} catch (HTTPException e) {
  // HTTP 响应码错误
  e.printStackTrace();
} catch (JSONException e) {
  // JSON 解析错误
  e.printStackTrace();
} catch (IOException e) {
  // 网络 IO 错误
  e.printStackTrace();
}

拉取短信回执以及回复

import com.github.qcloudsms.SmsStatusPuller;
import com.github.qcloudsms.SmsStatusPullCallbackResult;
import com.github.qcloudsms.SmsStatusPullReplyResult;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;
import java.io.IOException;
try {
  // Note: 短信拉取功能需要联系腾讯云短信技术支持(QQ:3012203387)开通权限
  int maxNum = 10;  // 单次拉取最大量
  SmsStatusPuller spuller = new SmsStatusPuller(appid, appkey);// 拉取短信回执
  SmsStatusPullCallbackResult callbackResult = spuller.pullCallback(maxNum);
  System.out.println(callbackResult);// 拉取回复,国际/港澳台短信不支持回复功能
  SmsStatusPullReplyResult replyResult = spuller.pullReply(maxNum);
  System.out.println(replyResult);
} catch (HTTPException e) {
  // HTTP 响应码错误
  e.printStackTrace();
} catch (JSONException e) {
  // JSON 解析错误
  e.printStackTrace();
} catch (IOException e) {
  // 网络 IO 错误
  e.printStackTrace();
}

以上是一些常用的功能,具体的细节可去官方api中查看,下面是地址:​

https://cloud.tencent.com/document/product/382/13613

本文标签: 腾讯 验证码 公众 短信