關於手機號注冊,發送驗證碼功能的實現


1.所用的服務器是阿里雲的

所需相關jar包

aliyun-java-sdk-core-3.3.1

aliyun-java-sdk-dysmsapi-1.0.0

相關jar可以在阿里雲的官網上下載

2.具體流程

①前台通過觸發后台的發送短信的功能,需要傳遞過來用戶的手機號(ajax什么都行)。

②正式的后台代碼,這里返回前台的是否發送成功,比較簡單的一個demo,建議用之前先看看官網的api文檔和demo。

   @ResponseBody
    @RequestMapping(value="api-user-sendMess")
    public String sendMess(@RequestParam(value="phone")String phone,HttpSession session){
        
                // 設置超時時間-可自行調整
                System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
                System.setProperty("sun.net.client.defaultReadTimeout", "10000");
                //初始化ascClient需要的幾個參數
                final String product = "Dysmsapi";//短信API產品名稱(短信產品名固定,無需修改)
                final String domain = "dysmsapi.aliyuncs.com";//短信API產品域名(接口地址固定,無需修改)
                // 替換成你的AK
                final String accessKeyId = "xxx";// 你的accessKeyId
                final String accessKeySecret = "xxx";// 你的accessKeySecret
                //初始化ascClient,暫時不支持多region(請勿修改)
                IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
                accessKeySecret);
                try {
                    DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
                } catch (ClientException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                IAcsClient acsClient = new DefaultAcsClient(profile);
                 //組裝請求對象
                SendSmsRequest request = new SendSmsRequest();
                //使用post提交
                request.setMethod(MethodType.POST);
                // 必填:待發送手機號。支持以逗號分隔的形式進行批量調用,批量上限為20個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式
                request.setPhoneNumbers("xxx");
                // 必填:短信簽名-可在短信控制台中找到
                request.setSignName("xxx");
                // 必填:短信模板-可在短信控制台中找到//SMS_112780058//13704098349
                request.setTemplateCode("SMS_112780058");
                // 可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
                // 可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
                
                int x = new Random().nextInt(1000000);
          //參數為json字符串形式,其中key值為固定的 name code 不可變 request.setTemplateParam(
"{\"name\":\"xxx\",\"code\":\"" + x + "\"}"); request.setSmsUpExtendCode("66666"); // 請求失敗這里會拋ClientException異常 SendSmsResponse sendSmsResponse=null; try { sendSmsResponse = acsClient.getAcsResponse(request); } catch (ServerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientException e) { // TODO Auto-generated catch block e.printStackTrace(); } String result=null; if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { // 請求成功 result= "1"; session.setAttribute("code", x); }else if(sendSmsResponse.getCode().equals("isv.BUSINESS_LIMIT_CONTROL")){ result= "0"; session.setAttribute("code", ""); } //錯誤提示sendSmsResponse.getCode() return result; }

 


免責聲明!

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



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