Java中对接阿里云短信验证码的实现

本文默认已在阿里云开通短信服务功能,且生成了自己的AccessKeyId 和AccessKeySecret 。

第一步:
导入阿里提供的sdk包即可,我用的4.0.3版本:

  
            com.aliyun
            aliyun-java-sdk-core
            4.0.3
  

第二步: 进入阿里云官网,找到短信服务,设置短信模板。
Java中对接阿里云短信验证码的实现_第1张图片
点开详情如下:
Java中对接阿里云短信验证码的实现_第2张图片然后提交审核就行,基本上非工作日十几分钟就能通过了。
然后是设置签名:
在这里插入图片描述
点击添加签名如下:
Java中对接阿里云短信验证码的实现_第3张图片
然后提交等审核通过即可。短信服务这块设置结束。

接下来是后台代码接入部分。直接上代码,工具类,拿走急用,无需更改不明白的可留言。

    private static final String accessKeyId = "对应你阿里云账户的 accessKeyId";
    private static final String accessKeySecret = "对应你阿里云账户的 accessKeySecret";
    private static final String signName="对应签名名称";
    private static final String templateCode="对应模板代码";

    private static int mobile_code = (int)((Math.random()*9+1)*100000);
    public static int  getCode(){
        return mobile_code;
    }
    /**
     * 短信发送
     * @param telphone 发送的手机号
     * 该方法中的东西无需更改可复制即用
     */
    public static String SendCode(String telphone) {

        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", telphone);
        request.putQueryParameter("SignName", signName);
        request.putQueryParameter("TemplateCode", templateCode);
        request.putQueryParameter("TemplateParam", "{\"code\":"+mobile_code+"}");
        CommonResponse response=null;
        try {
            response = client.getCommonResponse(request);

        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return response.getData();
    }

controller层代码入下:

  @RequestMapping(value="/getCode",method = RequestMethod.GET)
         @ApiOperation("获取验证码(阿里)")
        public String getCode(@RequestParam("phone") String phone){
            int code = MessageSendUtil.getCode();
            CacheFactory.set(phone+1,String.valueOf(code));
            return  MessageSendUtil.SendCode(phone);
        }

发送成功返回信息如下:
在这里插入图片描述
ps:accessKeyId 和accessKeySecret位置在阿里云这个位置看:
Java中对接阿里云短信验证码的实现_第4张图片
signName的位置在阿里云这里看:
Java中对接阿里云短信验证码的实现_第5张图片
templateCode位置在阿里云这里看:
Java中对接阿里云短信验证码的实现_第6张图片

结束。

你可能感兴趣的:(随笔)