当前位置:   article > 正文

SpringBoot继承第三方发送手机短信验证码_第三方短信平台发送手机验证码

第三方短信平台发送手机验证码

前言

本文主要针对与使用Java集成第三方进行短信发送,市场上常见的第三方短信发送有很多,比如阿里云,华为云等等。但是申请的步骤和代码大同小异,下面以榛子云为例详细介绍下如何操作。

注册账号

首先去榛子云官方平台申请注册自己的账号,官方网站

http://sms_developer.zhenzikj.com/zhenzisms_user/

在这里插入图片描述

有账号的话就直接登录,没有注册一个即可,很简单的注册

在这里插入图片描述

登录成功后就是这个样子,官方提供免费发送一条,需要自行充值,20起步,差不多一条短信3毛钱

在这里插入图片描述

查看应用,获取密钥

密钥在用户注册登录后会自动生成,可进行重置操作

在"应用管理"——>"我的应用"里,AppId,AppSecret,这都是用户的唯一标识,很重要,一会在Java代码中要用到

在这里插入图片描述

申请短信模板

在"短信管理"——>"短信模板"中可以看到自己要发送的短信模板,会有自己默认的模板,当然也可以自己新建自定义模板,不要违规就好,这边需要注意的是审核状态,审核通过后可以发送短信,我遇到好几次出错都是因为我新建的模板还没审核通过就发送,所以一直失败,这也是我后面想到的

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

代码实现

接下来就引入相关依赖并编写接口测试

pom添加依赖

	 <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>
        <!--榛子云提供短信接口平台-->
        <dependency>
            <groupId>com.zhenzikj</groupId>
            <artifactId>zhenzisms</artifactId>
            <version>2.0.2</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

创建controller方法写发送方法

其实封装一下会比较好,比如短信模板应该作为方法参数,根据不同的业务进行不同的短信模板发送,而且发送短信的逻辑应该写在service中,这里写的比较粗糙,只是为了实现功能,后续会完善

package com.wyh.controller;

import com.alibaba.fastjson.JSONObject;
import com.zhenzi.sms.ZhenziSmsClient;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;

/**
 * @description: 短信发送
 * @author: wyh
 * @createDate: 2021-04-27 22:24
 **/
@Controller
public class SendCodeController {
        //短信平台相关参数
        //这个不用改
        private String apiUrl = "https://sms_developer.zhenzikj.com";
        //榛子云系统上获取
        private String appId = "xxx";
        private String appSecret = "xxxx";
        @ResponseBody
        @RequestMapping("/sendCode")
        public boolean sendCode(String memPhone, HttpSession httpSession){
            try {
                //短信发送需要的参数是json类型
                JSONObject json = null;
                //随机6位生成验证码
                String code =String.valueOf(ThreadLocalRandom.current().nextInt(100000, 1000000));
                //构建榛子客户端
                ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
                //参数类型
                Map<String, Object> params = new HashMap<String, Object>();
                //前台输入的手机号
                params.put("number", memPhone);
                //这个模板id对应的是榛子云个人中心的模板id
                params.put("templateId", xxx);
                //参数占位符,不同的模板有不同的参数个数 目前用的模板有两个参数 可以使用jsonObject去操作
                String[] templateParams = new String[2];
                //第一个参数 随机生成的六位验证码
                templateParams[0] = code;
                //第二个参数 x分钟
                templateParams[1] = "5";
                //把参数占位符放在整体参数中
                params.put("templateParams", templateParams);
                //执行发送短信
                String result = client.send(params);
                System.out.println(result);
                json = JSONObject.parseObject(result);
                发送短信失败
                if (json.getIntValue("code")!=0){
                    return  false;
                }
                //将验证码存到redis中并设置ttl
               
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
    
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

测试

接口写完了之后,就可以测试了,我这里写了一个简陋的页面,当然也可以用postman等工具

在这里插入图片描述

收到短信

在这里插入图片描述

常见问题-参数和响应值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

其实用阿里云会更好,价格比较便宜,但是申请起来比较麻烦,代码和步骤都十分相似

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/340089
推荐阅读
相关标签
  

闽ICP备14008679号