模拟手机短信验证

前端

html

<template style="position: relative;">
<!-- 短信验证 -->
                <p>输入短信验证码</p>
                <el-form-item label="" prop="SMScode">
                    <el-input v-model="ruleForm.SMScode" type="text" autocomplete="off"
                        style="width: 300px;  margin-bottom: 10px;" placeholder="输入短信验证码" />
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" @click="resetForm1"
                        style="width: 80px; margin-top: -55px; margin-left: 305px;">点击发送</el-button>
                </el-form-item>
                <el-button v-if="!isSend" style="margin-top: -75px; margin-left: 510px;">{{ sendmsg }}</el-button>
</template>




JS

let isSend = ref();

let sendmsg = ref();

let verificationNumber = ref();
// 点击发送验证
function resetForm1() {

    axios.get('/acquisition/verification?phone=' + resetForm.phone)
        .then((resp) => {
            console.log(resp);

            verificationNumber.value = resp.data;

            isSend.value = false;

            let timer = 60;

            sendmsg.value = timer + "s";

            setInterval(() => {
                --timer;
                sendmsg.value = timer + "s";
                if (timer == 0) {
                    isSend.value = true;
                    sendmsg.value = "重新发送";在这里插入代码片
                    clearInterval(setInterval());
                }
            }, 1000);

        }).catch((err) => {
            console.log(err);
        });

}

后端

依赖

    <!--短信认证-->
    <dependency>
      <groupId>com.cloopen</groupId>
      <artifactId>java-sms-sdk</artifactId>
      <version>1.0.1</version>
    </dependency>
/**
     * 短信验证
     *
     * @param phone
     * @return
     */
    //发送验证码到的指定手机号
    //private String phone = "18434065530";
    //生产环境请求地址:app.cloopen.com 无需修改
    String serverIp = "app.cloopen.com";
    //请求端口
    String serverPort = "8883";
    //主账号,登陆云通讯网站后,可在控制台首页看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN
    String accountSId = "2c94811c8b1e335b018b3729fe4a03b4"; //TODO:此处修改
    String accountToken = "bf40d7aa0937405f82d353e4ef6bce18"; //TODO:此处修改
    //请使用管理控制台中已创建应用的APPID
    String appId = "2c94811c8b1e335b018b3729ffd503bb"; //TODO:此处修改

    @GetMapping("verification")
    public String sendMessage(String phone) {

        System.out.println(phone);
        //4位验证码
        Random random = new Random();
        StringBuffer code = new StringBuffer();

        for (int i = 0; i < 4; i++) {
            int num = random.nextInt(10);
            //第一位不能为0
            while (num == 0 && i == 0) {
                num = random.nextInt(10);
            }
            System.out.println("num = " + num);
            code.append(num);
        }

        String codeStr = code.toString();
        //此处仅仅生成四位验证码
        System.out.println("codeStr = " + codeStr);

        CCPRestSmsSDK sdk = new CCPRestSmsSDK();
        sdk.init(serverIp, serverPort);
        sdk.setAccount(accountSId, accountToken);
        sdk.setAppId(appId);
        sdk.setBodyType(BodyType.Type_JSON);

        //短信模板id 默认测试环境的id是 1
        String templateId = "1";
        //占位符传参,参数1:4位验证码,参数2:验证码逻辑有效期时长
        String[] datas = {codeStr, "5"};
        String subAppend = "1234"; //可选 扩展码,四位数字 0~9999
        String reqId = "fadfafas"; //可选 第三方自定义消息id,最大支持32位英文数字,同账号下同一自然天内不允许重复
        //HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas);
        HashMap<String, Object> result = sdk.sendTemplateSMS(phone, templateId, datas);

        if ("000000".equals(result.get("statusCode"))) {
            //正常返回输出data包体信息(map)
            HashMap<String, Object> data = (HashMap<String, Object>) result.get("data");
            Set<String> keySet = data.keySet();
            for (String key : keySet) {
                Object object = data.get(key);
                System.out.println(key + " = " + object);
            }
        } else {
            //异常返回输出错误码和错误信息
            System.out.println("错误码=" + result.get("statusCode") + " 错误信息= " + result.get("statusMsg"));
        }


        SMSCode = codeStr;

        return codeStr;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值