阿里云的手机短信验证

博客介绍了Java实现的新旧版手机短信验证。详细列出了老版和新版验证所需的依赖包及实现代码,为相关开发提供了参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,老版的手机短信验证:

  1. 依赖包:
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.6.0</version>
        </dependency>
  1. 实现代码:
    @Value("${aliyun.accessKeyId}")
    private String accessKeyId;
    @Value("${aliyun.accessKeySecret}")
    private String accessKeySecret;
    @Value("${aliyun.signName}")
    private String signName;
    @Value("${aliyun.templateCode}")
    private String templateCode;
    /**
     * 手机短信验证
     * @param phone
     * @param codeMap
     * @return
     */
    @Override
    public boolean phoneNote(String phone, Map<String, String> codeMap) {
         if (StrUtil.isBlank(phone)){
             return false;
         }
         //-------------------------阿里云-短信验证代码------------------
        //基本参数
        DefaultProfile profile =
                DefaultProfile.getProfile("default", accessKeyId, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);
        //设置相关固定的参数
        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");//版本号-不要改
        request.setAction("SendSms");
        //设置发送相关的参数
        request.putQueryParameter("PhoneNumbers",phone); //手机号
        request.putQueryParameter("SignName",signName); //申请阿里云 签名名称
        request.putQueryParameter("TemplateCode",templateCode); //申请阿里云 模板code
        request.putQueryParameter("TemplateParam", JSONUtil.toJsonStr(codeMap)); //验证码数据,转换json数据传递
        //最终发送
        try {
            CommonResponse response = client.getCommonResponse(request);
            boolean success = response.getHttpResponse().isSuccess();
            log.warn("短信验证结果1="+success);
            return true; //成功
        } catch (ClientException e) {
            e.printStackTrace();
            return false;//失败
        }

    }

二,新版的手机短信验证:

  1. 依赖包:
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>2.0.24</version>
        </dependency>
  1. 代码:
    /**
     * 手机短信验证
     * @param phone
     * @param codeMap
     * @return
     */
    @Override
    public boolean phoneNoteNew(String phone, Map<String, String> codeMap) throws Exception {
        //-------------------------阿里云-短信验证代码------------------
      Client client =client(accessKeyId,accessKeySecret);
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setSignName(signName)
                .setTemplateCode(templateCode)
                .setPhoneNumbers(phone)
                .setTemplateParam(JSONUtil.toJsonStr(codeMap));
       RuntimeOptions runtime = new RuntimeOptions();
        try {
            SendSmsResponse resp = client.sendSmsWithOptions(sendSmsRequest, runtime);
             log.warn("短信验证结果=="+resp.getStatusCode());
            log.warn("短信验证结果22=="+resp.getBody().getMessage());
              return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }

    }
    private Client client(String setAccessKeyId, String setAccessKeySecret) throws Exception {
        Config config = new Config()
                // 必填,您的 AccessKey ID
                .setAccessKeyId(setAccessKeyId)
                // 必填,您的 AccessKey Secret
                .setAccessKeySecret(setAccessKeySecret);
        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new Client(config);
    }

关注,收藏,点赞,有问题可以私信“门主” :v:z13135361785