Java實現發(fā)送手機短信語音驗證功能代碼實例
這篇文章主要介紹了Java實現發(fā)送手機短信語音驗證功能代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
利用第三方平臺可以實現發(fā)送手機短信驗證碼和語音驗證碼的功能,本文使用框架是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;
// 發(fā)送短信驗證碼
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系統(tǒng)名】")) {
userPhoneVerifyService.record(model.getPhone(), model.getType(), code, model.getUserId());
} else {
result.setErrorMessage("很抱歉,發(fā)送短信失敗,請稍后再試");
result.setResult(JsonResult.ERROR);
return SUCCESS;
}
result.setErrorMessage( "短信驗證碼發(fā)送成功,請在5分鐘內及時使用,謝謝!");
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
// 發(fā)送語音驗證碼
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("很抱歉,發(fā)送語音失敗,請稍后再試");
result.setResult(JsonResult.ERROR);
return SUCCESS;
}
result.setErrorMessage("語音驗證碼發(fā)送成功,請在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;
}
}
以上是干貨分享,已測試驗證過!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
如何解決SpringBoot2.6及之后版本取消了循環(huán)依賴的支持問題
循環(huán)依賴指的是兩個或者多個bean之間相互依賴,形成一個閉環(huán),SpringBoot從2.6.0開始默認不允許出現Bean循環(huán)引用,解決方案包括在全局配置文件設置允許循環(huán)引用存在、在SpringApplicationBuilder添加設置允許循環(huán)引用、構造器注入2024-10-10
Springboot打包代碼,反編譯后代碼混淆方式(防止還原代碼)
文章主要介紹了如何對Spring Boot項目進行jar包混淆,以防止反編譯還原原始代碼,通過在項目中添加proguard.cfg文件并配置Maven插件,可以實現代碼混淆,從而增加反編譯的難度2024-11-11
解決logback使用${spring.application.name}日志打印路徑的問題
這篇文章主要介紹了解決logback使用${spring.application.name}日志打印路徑的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
SpringBoot項目創(chuàng)建使用+配置文件+日志文件詳解
Spring的出現是為了簡化 Java 程序開發(fā),而 SpringBoot 的出現是為了簡化 Spring 程序開發(fā),這篇文章主要介紹了SpringBoot項目創(chuàng)建使用+配置文件+日志文件,需要的朋友可以參考下2023-02-02
springboot配置文件中使用${}注入值的兩種方式小結
這篇文章主要介紹了springboot配置文件中使用${}注入值的兩種方式小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Spring中BeanFactory與FactoryBean接口的區(qū)別詳解
這篇文章主要給大家介紹了關于Spring中BeanFactory與FactoryBean接口的區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-03-03

