Java使用阿里云短信平台实现短信验证功能

Java使用阿里云短信平台实现短信验证功能

第一步,当然是登上阿里云了。
然后选中左侧菜单栏的国内消息,在这里添加一个模板和一个签名
ps:签名名称要慎重,不然审核是过不了的,如图:签名
模板
模板
这个过程差不多一两个小时,这个时候我们可以去创建一个用户AccessKey
点击个人头像选择accesskeys就可以了。
这时候有个弹窗,我选择的是继续使用AccessKey,因为我是小白哈哈哈,如果创建子用户的话后面还要设置权限,大佬可以玩,我用不来。
aliyun
那Java后台怎么写呢?直接上代码,这是直接能用的类,1111···是一定要改的地方,其他可以不变的

public class AliyunSmsUtils {

    //产品名称:云通信短信API产品,不用动
    static final String product = "Dysmsapi";
    //产品域名,不用动
    static final String domain = "dysmsapi.aliyuncs.com";

    // 这个是自己的Assesskeys,就是我打马赛克的地方
    static final String accessKeyId = "1111111111";
    static final String accessKeySecret = "1111111111";

    public static SendSmsResponse sendSms(String telephone, String code) throws ClientException {
        //可自主设置超时时间
        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
        //初始化acsClient
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);
        //组装请求对象-具体描述见控制台-文档部分内容
        SendSmsRequest request = new SendSmsRequest();
 
        request.setPhoneNumbers(telephone);

        //必填:短信签名,就是我打马赛克的地方
        request.setSignName("111111111");    
        //必填:短信模板,就是我打马赛克的地方
        request.setTemplateCode("1111111");    
        //这个地方根据模板改,具体看情况
        request.setTemplateParam("{\"code\":\"" + code + "\"}");

        //hint 此处可能会抛出异常 ClientException, InterruptedException
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
        if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
            System.out.println("短信发送成功!");
        } else {
            System.out.println("短信发送失败!");
        }
        return sendSmsResponse;
    }

    private static int newcode;

    public static int getNewcode() {
        return newcode;
    }

    //生成4位随机数
    public static void setNewcode() {
        newcode = (int) (Math.random() * 9999) + 100;  
    }

}

这样就能发送了吗,不可能的,我们还需要一个接口来调用。

/**
     * 短信验证码
     * 返回验证码
     */
    @RequestMapping(value = "/api/resiger/sendCode",method = RequestMethod.GET)
    public JsonResult getCode(String telphone)throws ClientException {
        JsonResult jsonResult = null;
        try{
            
            AliyunSmsUtils.setNewcode();
            String code = Integer.toString(AliyunSmsUtils.getNewcode());
            SendSmsResponse phoneCode = AliyunSmsUtils.sendSms(telphone,code);
            
            if(phoneCode!=null){
                jsonResult = new JsonResult("200","发送成功",code);
            }else{
                jsonResult = new JsonResult("404","发送失败","");
            }
        }catch (Exception e){
            jsonResult = new JsonResult("500","网络错误","");
        }
        return jsonResult;
    }

以表诚意,我来测试一下
code
yanzhengma
好了,这个就到这里吧,是不是很简单呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值