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

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

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

  <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.0.3</version>
  </dependency>

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

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

    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位置在阿里云这个位置看:
在这里插入图片描述
signName的位置在阿里云这里看:
在这里插入图片描述
templateCode位置在阿里云这里看:
在这里插入图片描述

结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值