湛蓝之海 发表于 2021-12-24 22:16:20

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

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

[*]添加应用,腾讯平台需要认证,认证完成才能使用


[*]配置签名及模板,按照官网提示配置即可


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,
                  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;
    }


https://blog.51cto.com/u_14068620/4834008
页: [1]
查看完整版本: 基于腾讯云的短信接口开发#yyds干货盘点#