阿里云的手机短信验证

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

  1. 依赖包:

    复制代码
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>aliyun-java-sdk-core</artifactId>
             <version>4.6.0</version>
         </dependency>
  2. 实现代码:

    复制代码
     @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>
  2. 代码:

    复制代码
     /**
      * 手机短信验证
      * @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

相关推荐
MandalaO_O11 分钟前
IDEA 开发(快捷键 + 调试 + 序列化)
java·ide·intellij-idea
xiaoqiMikko1 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
狼爷2 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路2 小时前
zap扩展生态与总结
java·前端·数据库
第七页独白3 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
QCoding3 小时前
Spring AI Alibaba Graph实战:从ReAct Agent到Workflow,企业AI复杂流程该如何编排?
java·人工智能
用户094248568033 小时前
第25章:Java虚拟线程(Project Loom)实战与调度协作
java·jvm
砚底藏山河3 小时前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven
wuminyu3 小时前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
Elastic 中国社区官方博客3 小时前
使用 Lucene 搜索你的 Bean — 索引
java·大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene