阿里短信接口使用(JAVA版)


近期項目需要使用短信接口,對比下選擇了阿里的短信接口

以下為開發筆記:

maven pom.xml中引入:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.1.0</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
   <version>1.1.0</version>
</dependency>

 

在接口對接類中:

/**
     * 常量類
     */
    private static  Constant constant;
    
    //產品名稱:雲通信短信API產品,開發者無需替換
    static final String product = "Dysmsapi";
    //產品域名,開發者無需替換
    static final String domain = "dysmsapi.aliyuncs.com";

    //此處需要替換成開發者自己的AK(在阿里雲訪問控制台尋找)
    static final String accessKeyId = constant.accessKeyId;
    static final String accessKeySecret = constant.accessKeySecret;

此處相關AK需要自己去阿里控制台查詢

方法調用:

   
    /**
     * 短信接口
     * @author zk
     *@date: 2019年5月30日 下午3:59:15
     * @param phone
     * @param status 1:注冊 
     * @return
     */
    @RequestMapping("/getSms")
    @ResponseBody
    public String getSms(String phone,String status) {
        
        //可自助調整超時時間
        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");

        //初始化acsClient,暫不支持region化
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        try {
            DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        } catch (ClientException e1) {
            e1.printStackTrace();
        }
        IAcsClient acsClient = new DefaultAcsClient(profile);

        //隨機生成六位驗證碼
          int code = (int)((Math.random()*9+1)*100000);
          
          Sendsms sendsmsselect = new Sendsms();
          sendsmsselect.setIsdel("0");
          sendsmsselect.setStatus(status);
          sendsmsselect.setPhone(phone);
          List<Sendsms> list = sendsmsService.selectAll(sendsmsselect);
          if(list!=null){
              if(list.size()>0){
                  Sendsms sendsms1 = list.get(0);
                  sendsms1.setIsdel("1");//刪除前一次該號碼記錄
                  sendsmsService.updateByPrimaryKey(sendsms1);
              }
          }
          /**
           * 驗證碼與號碼存入數據庫
           */
          sendsmsselect.setCode(code+"");
          sendsmsselect.setCreatetime(new Date());
          sendsmsService.insert(sendsmsselect);
          
        //組裝請求對象-具體描述見控制台-文檔部分內容
        SendSmsRequest request = new SendSmsRequest();
        //必填:待發送手機號
        request.setPhoneNumbers(phone);
        //必填:短信簽名-可在短信控制台中找到,你在簽名管理里的內容
        request.setSignName(constant.SignName);
        //必填:短信模板-可在短信控制台中找到,你模板管理里的模板編號
        request.setTemplateCode(constant.TemplateCode);
        //可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
        request.setTemplateParam("{\"code\":\""+code+"\"}");

        //選填-上行短信擴展碼(無特殊需求用戶請忽略此字段)
        //request.setSmsUpExtendCode("90997");

        //可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
        request.setOutId("yourOutId");

        //hint 此處可能會拋出異常,注意catch
        SendSmsResponse sendSmsResponse = null;
        try {
            sendSmsResponse = acsClient.getAcsResponse(request);
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        //獲取發送狀態
        String cod = sendSmsResponse.getCode();
//        System.out.println(cod);
        return cod;
    }
        

這里是做驗證使用的,所有有相關驗證碼生成和存儲數據庫操作,可替換為自己需要的部分


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM