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>
创建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对应的是榛子云个人中心的模板idparams.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中并设置ttlreturn true;} catch (Exception e) {e.printStackTrace();return false;}}}
测试
接口写完了之后,就可以测试了,我这里写了一个简陋的页面,当然也可以用postman等工具
收到短信
常见问题-参数和响应值
总结
其实用阿里云会更好,价格比较便宜,但是申请起来比较麻烦,代码和步骤都十分相似
SpringBoot继承第三方发送手机短信验证码相关推荐
- 发送手机短信验证码-后端、前端(验证码倒计时)
获取手机短信验证码-后端.前端(验证码倒计时) 后端 /*** 发送手机短信验证码** @return str* @throws Exception* @author 王永圣*/@RequestMap ...
- 【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
发送手机短信验证码 前言 一. 准备工作 二. 配置 三. 实战代码(仅仅是后台代码,前端传入手机号) 总结 前言 在网站和移动应用中利用短信验证码进行信息确认是最常用的验证手段.随着短信验证码的技术 ...
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...
近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...
- Java调用WebService接口实现发送手机短信验证码功能
为什么80%的码农都做不了架构师?>>> 一.样式示例: 二.前台的注册页面的代码:reg.jsp <%@ page language="java" ...
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
原文地址: http://blog.csdn.net/sxdtzhaoxinguo/article/details/34437591 近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用 ...
- 如何发送手机短信验证码
文章目录 阿里云短信业务实战教程 1.阿里云平台的使用 2.创建用户组及用户并添加权限 3.添加短信签名和短信模板并充值费用 4.开发工具进行代码部分(这里使用IDEA) 阿里云短信业务实战教程 手机 ...
- 使用 SSM 框架实现发送手机短信验证码
手机发送短信 内容 一.手机发送短信 1. 前端界面代码 2. UserInfoController 控制器 4. 具体实现 总结 内容 一.手机发送短信 1. 前端界面代码 10秒内不能重复发送验证 ...
- .NET MVC用Ajax实现发送手机短信验证码
本次实验基于上次的.net aspx的手机实现短信验证. 本次实验大致过程是: 1.用户在页面输入手机号码进行注册 2.如果手机号已经存在了就会提示已经注册过了 3. 用户点击"发送验证码& ...
- 容联云发送手机短信验证码
首先在根目录下定义全局使用的连接容联云py的文件 下载SDK pip install ronglian_sms_sdk 在文件中导入 ↓ from ronglian_sms_sdk import Sm ...
最新文章
- 5- RAC 集合 RACTuple RACSequence
- Samba服务搭建及详解
- 我的zsh配置, 2019最新方案
- 验证视图MAC失败 Validation of ViewState MAC Failed
- Linux--内存结构
- Algs4-2.1.37部分有序
- mysql第五章事务_mysql 第五章 备份恢复
- 可以用计算机存储的东西
- IDEA配置git环境
- 关于待机、休眠、睡眠的区别和优缺点
- PHP消息通信机制测试代码
- linux第三课:一些注意点
- mysql命令常用参数实例讲解
- linux游戏专用系统下载官网,经典游戏操作系统(Batocera.linux)
- 面试官:什么是TCP粘包?粘包原因?如何解决?
- C语言之迷宫小游戏2.0版(随机生成地图,可变颜色,优化游戏体验)
- jena java_对Jena的简单理解和一个例子
- Java小农养成记第二十三天
- 无线网服务器断开怎么回事,无线网自动断开怎么回事
- 北京邦威思创科技有限公司 招聘要求
热门文章
- 【dxf】(1)dxf 转 geojson
- Redis 中的 持久化 RDB持久化 SAVE:阻塞服务器并创建RDB文件 BGSAVE:以非阻塞方式创建RDB文件 通过配置选项自动创建RDB文件
- 网络扫描和网络侦察实验报告
- el-table表格做滚动条样式处理
- Linux下Socket TCP编程
- Vue 人资 实战篇九 其他模块集成和主页审批-图表-日历、echarts、 枚举的一个方法
- 旧电脑装html5,老式电脑安装Win10还是Win7系统流畅?
- [Win7安装]安装程序无法创建新的系统分区,也无法定位现有系统分区(转载)
- vue-其他watch监听.html
- linux 网络质量检测 网络故障