超詳細的阿里雲短信驗證碼服務接入流程(最新版)——包含工具類可直接使用(java)

一、使用步驟
1、申請阿里雲賬號並認證
鏈接地址:https://www.aliyun.com/product/sms
2、創建一個新的AccessKeys 包含AccessKey ID 和Access Key Secret 記得截圖保存 (最重要的一步)
在這裏插入圖片描述
在這裏插入圖片描述
3、新建簽名和短信模板
在這裏插入圖片描述
因爲阿里照顧到開發人員使用短信服務 所以可以 選擇通用場景 不需要上傳材料!
在這裏插入圖片描述
模板選擇 注:個人用戶只能選擇驗證碼 其他無法通過申請
在這裏插入圖片描述
項目配置AccessKey ID 和Access Key Secret
在這裏插入圖片描述

AccessKey配置類 
@Configuration
@PropertySource(value="classpath:application.yml")
public class SmsConfig {


    public static String accessKeyID;


    public static String AccessKeySecret;

    public String getAccessKeyID() {
        return accessKeyID;
    }

    @Value("${aliyunSms.AccessKeyID}")
    public void setAccessKeyID(String accessKeyID) {
        SmsConfig.accessKeyID = accessKeyID;
    }

    public String getAccessKeySecret() {
        return AccessKeySecret;
    }

    @Value("${aliyunSms.AccessKeySecret}")
    public void setAccessKeySecret(String accessKeySecret) {
        SmsConfig.AccessKeySecret = accessKeySecret;
    }
}

創建請求工具類 我寫了登錄和註冊請求驗證碼 這裏只放出登錄的模板
在這裏插入圖片描述

登錄驗證碼生成請求工具類
public class SmsLoginRequest {

   public static int code ;

    private static Log logger= LogFactory.getLog(SmsRegisteRequest.class);


    public static CommonRequest generateSmsRequest(String phone){
        //隨機生成六位驗證碼
        code = (int)((Math.random()*9+1)*100000);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");
        //目前阿里最新的設置請求體的方式 
        request.putQueryParameter("RegionId", "cn-hangzhou");
        request.putQueryParameter("PhoneNumbers",phone );
        request.putQueryParameter("SignName", 簽名);
        request.putQueryParameter("TemplateCode", 模板code);
        request.putQueryParameter("TemplateParam", "{\"code\":\""+code+"\"}");
        return request;
    }
}

最後controller層 短信發送方法

結合了Redis緩存 
  /**
     * 發送驗證碼
     *
     * @return
     */
    @RequestMapping(value = "/sendSms", method = RequestMethod.POST)
    @Transactional(rollbackFor = MyException.class)
    public RetResult<?> sendVerificationCode(@RequestBody UserBO userBO)throws MyException {
       
            //短信登錄驗證
            SmsUtil.sendLoginSms(userBO.getPhone());
            int loginCode = SmsLoginRequest.code;
            //將code存入緩存 並設置過期時間爲 1分鐘
            stringRedisTemplate.opsForValue().set(userBO.getPhone(), String.valueOf(loginCode));
            stringRedisTemplate.expire(userBO.getPhone(), 1, TimeUnit.MINUTES);
            if (loginCode <= 0) {
                throw new MyException("驗證碼發送失敗!");
            }
            return RetResponse.makeOKRsp("短信驗證碼已發送,請在1分鐘內確認!");
    }

源碼地址: https://github.com/MandalasWang/sms-server

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章