评论

收藏

[JavaScript] 基于腾讯云的短信接口开发#yyds干货盘点#

开发技术 开发技术 发布于:2021-12-24 22:16 | 阅读数:440 | 评论:0

在软件登录注册过程中,经常用到手机短信验证登录注册,腾讯云短信API提供的丰富的接口,可以很简便的接入手机验证码登录功能。
腾讯云短信(Short Message Service,SMS)沉淀腾讯十多年短信服务技术和经验,为 QQ、微信等亿级平台和10万+客户提供国内短信和国际/港澳台短信服务。国内短信验证秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,稳定可靠。腾讯云短信旨在帮助广大开发者快速灵活接入高质量的国内、国际/港澳台短信服务。
官网:
https://console.cloud.tencent.com/smsv2
DSC0000.png

发送短信输入参数
参数名称必选类型描述Action是String公共参数,本接口取值:SendSms。Version是String公共参数,本接口取值:2019-07-11。Region否String公共参数,本接口不需要传递此参数。PhoneNumberSet.N是Array of String下发手机号码,采用 e.164 标准,格式为+[国家或地区码][手机号],单次请求最多支持200个手机号且要求全为境内手机号或全为境外手机号。TemplateID是String模板 ID,必须填写已审核通过的模板 ID。模板ID可登录 短信控制台 查看,若向境外手机号发送短信,仅支持使用国际/港澳台短信模板。SmsSdkAppid是String短信SdkAppid在 短信控制台 添加应用后生成的实际SdkAppid,示例如1400006666。Sign否String短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 短信控制台 查看。注:国内短信为必填参数。TemplateParamSet.N否Array of String模板参数,若无模板参数,则设置为空。ExtendCode否String短信码号扩展号,默认未开通,如需开通请联系 sms helper。SessionContext否String用户的 session 内容,可以携带用户侧 ID 等上下文信息,server 会原样返回。SenderId否String国内短信无senderid,无需填写该项;若需开通国际/港澳台短信senderid,请联系smshelper。发送短信输出参数
参数名称类型描述SendStatusSetArray of SendStatus短信发送状态。RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
短信基本设置

  • 添加应用,腾讯平台需要认证,认证完成才能使用
DSC0001.png


  • 配置签名及模板,按照官网提示配置即可
DSC0002.png


Java集成开发

  • 添加SDK依赖
<!--腾讯云手机验证码SDK-->
    <dependency>
      <groupId>com.github.qcloudsms</groupId>
      <artifactId>qcloudsms</artifactId>
      <version>1.0.6</version>
    </dependency>

  • 核心代码:
/**
   * 获取手机验证码
   * @return
   */
  @PostMapping("getAuthCode")
  @ResponseBody
  public Object getAuthCode(HttpServletRequest request){
    String usrTel = request.getParameter("usrTel");
    //随机生成4位数的手机验证码
    String str="0123456789";
    StringBuilder sb=new StringBuilder(4);
    for(int i=0;i<4;i++)
    {
      char ch=str.charAt(new Random().nextInt(str.length()));
      sb.append(ch);
    }
    String authcode = sb.toString();
    // 短信应用SDK AppID
    int appid = 1400xxxxxx; // 1400开头
    // 短信应用SDK AppKey
    String appkey = "xxxxxxxxxxxxxxxxxxx";
    // 需要发送短信的手机号码
    String[] phoneNumbers = 手机号码;
    // 短信模板ID,需要在短信应用中申请
    int templateId = xxxxxx;
    // 签名
    String smsSign = "签名";
    try {
      String[] params = {authcode,"5"};
      //注意此处的参数需要为模板中参数的个数
      SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
      SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0],
          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();
    } catch (com.github.qcloudsms.httpclient.HTTPException e) {
      e.printStackTrace();
    }
    HashMap<String,String> m=new HashMap<>();
    m.put("usrTel",usrTel);
    m.put("authcode",authcode);
    return m;
  }


关注下面的标签,发现更多相似文章