Java实现发送手机验证码功能(短信+语音)
利用第三方平台可以实现发送手机短信验证码和语音验证码的功能,本文使用框架是struts2+spring+hibernate,现就action层给出核心代码功能。
public class VerifyAction extends BaseAction<VerifyRequest> {
private static final long serialVersionUID = 1L;
private CommonConfigService commonConfigService;
private UserPhoneVerifyService userPhoneVerifyService;
private UserVerifyService userVerifyService;
private PhoneDetectService phoneDetectService;
private AccountService accountService;
// 发送短信验证码
public String sensSms() {
try {
result.setResult(JsonResult.SUCCESS);
if (model.getType() == PhoneVerifyType.REGISTER) {
if (userVerifyService.checkRegisterPhone(model.getPhone())) {
result.setErrorMessage("该手机号已注册");
result.setResult(JsonResult.ERROR);
return SUCCESS;
}
}
if (!phoneDetectService.check(model.getPhone())) {
result.setErrorMessage("该手机号异常,不能进行验证操作");
result.setResult(JsonResult.ERROR);
return SUCCESS;
}
Dh3TongSmsOperator dh3TongSmsOperator = new Dh3TongSmsOperator(
commonConfigService.getString("dh3tong", "account"),
DigestUtil.md5(commonConfigService.getString("dh3tong", "password")));
String code = RandomUtil.randomNum(6);
if (dh3TongSmsOperator.send(UUIDGenerator.generate(), model.getPhone(),
String.format("尊敬的用户,您的验证码是:%s", code), "【XX系统名】")) {
userPhoneVerifyService.record(model.getPhone(), model.getType(), code, model.getUserId());
} else {
result.setErrorMessage("很抱歉,发送短信失败,请稍后再试");
result.setResult(JsonResult.ERROR);
return SUCCESS;
}
result.setErrorMessage( "短信验证码发送成功,请在5分钟内及时使用,谢谢!");
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
// 发送语音验证码
public String sensVoice() {
try {
result.setResult(JsonResult.SUCCESS);
if (model.getType() == PhoneVerifyType.REGISTER) {
if (userVerifyService.checkRegisterPhone(model.getPhone())) {
result.setErrorMessage("该手机号已注册");
result.setResult(JsonResult.ERROR);
return SUCCESS;
}
}
if (!phoneDetectService.check(model.getPhone())) {
result.setErrorMessage("该手机号异常,不能进行验证操作");
result.setResult(JsonResult.ERROR);
return SUCCESS;
}
String code = RandomUtil.randomNum(6);
Dh3TongVoiceOperator dh3TongVoiceOperator = new Dh3TongVoiceOperator(
commonConfigService.getString("dh3tong", "account"),
DigestUtil.md5(commonConfigService.getString("dh3tong", "password")));
if (dh3TongVoiceOperator.send(UUIDGenerator.generate(), request.getPhone(), code)) {
userPhoneVerifyService.record(request.getPhone(), request.getType(), code, request.getUserId());
} else {
result.setErrorMessage("很抱歉,发送语音失败,请稍后再试");
result.setResult(JsonResult.ERROR);
return SUCCESS;
}
result.setErrorMessage("语音验证码发送成功,请在5分钟内及时使用,谢谢!");
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
public void setCommonConfigService(CommonConfigService commonConfigService) {
this.commonConfigService = commonConfigService;
}
public void setUserPhoneVerifyService(UserPhoneVerifyService userPhoneVerifyService) {
this.userPhoneVerifyService = userPhoneVerifyService;
}
public void setUserVerifyService(UserVerifyService userVerifyService) {
this.userVerifyService = userVerifyService;
}
public void setPhoneDetectService(PhoneDetectService phoneDetectService) {
this.phoneDetectService = phoneDetectService;
}
public void setAccountService(AccountService accountService) {
this.accountService = accountService;
}
}
以上是干货分享,已测试验证过!
Java相关学习视频资料分享:
https://www.cnblogs.com/bingyimeiling/p/10289805.html
欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!
▼微信扫一扫下图↓↓↓二维码关注

Java实现发送手机验证码功能(短信+语音)的更多相关文章
- [.NET开发] C#实现发送手机验证码功能
之前不怎么了解这个,一直以为做起来很复杂. 直到前两天公司要求要做这个功能. 做了之后才发现 这不过就是一个POST请求就能实现的东西.现在给大家分享一下,有不足之处还请多多指教. 废话不多说 直接上 ...
- django 发送手机验证码
一.流程分析: 1.用户在项目前端,输入手机号,然后点击[获取验证码],将手机号发到post到后台. 2.后台验证手机号是否合法,是否已被占用,如果通过验证,则生成验证码,并通过运行脚本,让短信运营商 ...
- C# WinForm 使用SMS接口发送手机验证码+图形验证码+IP限制
https://blog.csdn.net/IT_xiao_guang_guang/article/details/104299983 前言 1.发送手机验证码用的是网建的SMS接口(http:/ ...
- 1.7 使用电脑测试MC20的发送带中文的短信功能
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- asp.net限时发送手机验证码
html代码 <p> <strong>手机验证码:</strong> <asp:TextBox ID="code" runat=" ...
- C#发送手机验证码
C#发送手机验证码,平台有很多,我就说说其中的1个平台 测试环境:.net2.0 测试效果:速度还可以,10秒内接收短信 1.去http://www.yuntongxun.com注册,会送8元测试金额 ...
- [android] 手机卫士接收短信指令执行相应操作
通过广播接收者,接收到短信,对短信内容进行判断,如果为我们指定的值就执行相应的操作 如果短信内容是”#*location*#” 就执行,获取手机位置 如果短信内容是”#*alarm*#” 就执行,播放 ...
- Asp.Net发送手机验证码
C#发送手机验证码,平台有很多,我就说说其中的1个平台 测试环境:.net2.0 测试效果:速度还可以,10秒内接收短信 1.去http://www.yuntongxun.com注册,会送8元测试金额 ...
- SIM900A—发送、接收中英文短信
文章目录 一.SMS简介 二.短信的控制模式与编码 1.Text Mode 2.PDU Mode 3.GSM编码 4.UCS2编码 三.收发英文短信 1.AT+CPMS查询短信数量 2.AT+CNMI ...
随机推荐
- OAuth 2 Developers Guide
Introduction This is the user guide for the support for OAuth 2.0. For OAuth 1.0, everything is diff ...
- python自定义库文件路径
各有各的小烦恼,各有的小期待 这是人家私事,不要大嘴巴 在Pycharm中import whois时,总是失败 原因是安装了python3.x相关操作过程,将环境变量path中关于Python的配置c ...
- Javascript 中的map/reduce
先填个坑,后面慢慢填 附上一篇不错的文章:https://segmentfault.com/a/1190000008719824
- Python实现控制台密码星号输入
import msvcrt, sys, os print('password: ', end='', flush=True) li = [] while 1: ch = msvcrt.getch() ...
- Selenium 3 没办法启用指定的Firefox Profile
系统总会把profile复制到一个temp文件夹里,但是相关信息并不复制回去, 导致在测试注册登录功能时, 必须写在同一个脚本里:如果分成两段脚本, 登录会失败. public static void ...
- CSS3实现轴心为x轴的3D数字圆环
当做混合开发时,总有各种意想不到的酷炫效果的需求等着你.不过这个还好,先备着方便以后用. 先上效果图: 总结一下:此效果的完成基于以下几个关键点: 1.DOM结构,为每个DIV设置旋转后,一次也会影响 ...
- MVC项目中怎么浏览html页面
public class HomeController : Controller { public ActionResult Index() { //return View(); //return R ...
- B20J_2836_魔法树_树链剖分+线段树
B20J_2836_魔法树_树链剖分+线段树 题意: 果树共有N个节点,其中节点0是根节点,每个节点u的父亲记为fa[u].初始时,这个果树的每个节点上都没有果子(即0个果子). Add u v d ...
- MDK5使用Jlink下载显示 no cortex m sw divice 解决办法
问题: (1)下面界面中找不到设备 (2)下载程序的时候提示" no cortex m sw divice " 然后是"target dll has been cance ...
- selenium IDE 使用方法整理
1.设置起始点(确定case从哪步开始执行),快捷键:S,效果图如下: 2.设置断点(case执行到添加断点处,将自动停止),快捷键:B,效果图如下: 3.设置判断点 如:百度输入ceshi,点 ...