Java實(shí)現(xiàn)發(fā)送手機(jī)短信語(yǔ)音驗(yàn)證功能代碼實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)發(fā)送手機(jī)短信語(yǔ)音驗(yàn)證功能代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
利用第三方平臺(tái)可以實(shí)現(xiàn)發(fā)送手機(jī)短信驗(yàn)證碼和語(yǔ)音驗(yàn)證碼的功能,本文使用框架是struts2+spring+hibernate,現(xiàn)就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ā)送短信驗(yàn)證碼 public String sensSms() { try { result.setResult(JsonResult.SUCCESS); if (model.getType() == PhoneVerifyType.REGISTER) { if (userVerifyService.checkRegisterPhone(model.getPhone())) { result.setErrorMessage("該手機(jī)號(hào)已注冊(cè)"); result.setResult(JsonResult.ERROR); return SUCCESS; } } if (!phoneDetectService.check(model.getPhone())) { result.setErrorMessage("該手機(jī)號(hào)異常,不能進(jìn)行驗(yàn)證操作"); 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("尊敬的用戶(hù),您的驗(yàn)證碼是:%s", code), "【XX系統(tǒng)名】")) { userPhoneVerifyService.record(model.getPhone(), model.getType(), code, model.getUserId()); } else { result.setErrorMessage("很抱歉,發(fā)送短信失敗,請(qǐng)稍后再試"); result.setResult(JsonResult.ERROR); return SUCCESS; } result.setErrorMessage( "短信驗(yàn)證碼發(fā)送成功,請(qǐng)?jiān)?分鐘內(nèi)及時(shí)使用,謝謝!"); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } // 發(fā)送語(yǔ)音驗(yàn)證碼 public String sensVoice() { try { result.setResult(JsonResult.SUCCESS); if (model.getType() == PhoneVerifyType.REGISTER) { if (userVerifyService.checkRegisterPhone(model.getPhone())) { result.setErrorMessage("該手機(jī)號(hào)已注冊(cè)"); result.setResult(JsonResult.ERROR); return SUCCESS; } } if (!phoneDetectService.check(model.getPhone())) { result.setErrorMessage("該手機(jī)號(hào)異常,不能進(jìn)行驗(yàn)證操作"); 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ā)送語(yǔ)音失敗,請(qǐng)稍后再試"); result.setResult(JsonResult.ERROR); return SUCCESS; } result.setErrorMessage("語(yǔ)音驗(yàn)證碼發(fā)送成功,請(qǐng)?jiān)?分鐘內(nèi)及時(shí)使用,謝謝!"); } 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; } }
以上是干貨分享,已測(cè)試驗(yàn)證過(guò)!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java自定義注解驗(yàn)證手機(jī)格式的實(shí)現(xiàn)示例
- 使用Java 實(shí)現(xiàn)一個(gè)“你畫(huà)手機(jī)猜”的小游戲
- 微信小程序獲取手機(jī)號(hào),后端JAVA解密流程代碼
- 大數(shù)據(jù) java hive udf函數(shù)的示例代碼(手機(jī)號(hào)碼脫敏)
- 如何使用Java redis實(shí)現(xiàn)發(fā)送手機(jī)驗(yàn)證碼功能
- Java獲取手機(jī)號(hào)碼歸屬地的實(shí)現(xiàn)
- 使用java實(shí)現(xiàn)手機(jī)短信驗(yàn)證全過(guò)程
相關(guān)文章
Spring Boot 之HelloWorld開(kāi)發(fā)案例
這篇文章主要介紹了Spring Boot 之HelloWorld開(kāi)發(fā)案例,需要的朋友可以參考下2017-04-04spring?cloud?gateway中netty線(xiàn)程池小優(yōu)化
這篇文章主要介紹了spring?cloud?gateway中netty線(xiàn)程池小優(yōu)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07關(guān)于Springboot打成JAR包后讀取外部配置文件的問(wèn)題
這篇文章主要介紹了關(guān)于Springboot打成JAR包后讀取外部配置文件的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Springboot?@Async多線(xiàn)程獲取返回值方式
這篇文章主要介紹了Springboot?@Async多線(xiàn)程獲取返回值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09從HelloWorld和文檔注釋開(kāi)始入門(mén)Java編程
這篇文章主要介紹了從HelloWorld和文檔注釋開(kāi)始入門(mén)Java編程,涉及到Javadoc工具的使用,需要的朋友可以參考下2015-10-10SpringMVC的處理器攔截器HandlerInterceptor詳解
這篇文章主要介紹了SpringMVC的處理器攔截器HandlerInterceptor詳解,SpringWebMVC的處理器攔截器,類(lèi)似于Servlet開(kāi)發(fā)中的過(guò)濾器Filter,用于處理器進(jìn)行預(yù)處理和后處理,需要的朋友可以參考下2024-01-01SpringBoot-RestTemplate實(shí)現(xiàn)調(diào)用第三方API的方式
RestTemplate?是由?Spring?提供的一個(gè)?HTTP?請(qǐng)求工具,它提供了常見(jiàn)的REST請(qǐng)求方案的模版,例如?GET?請(qǐng)求、POST?請(qǐng)求、PUT?請(qǐng)求、DELETE?請(qǐng)求以及一些通用的請(qǐng)求執(zhí)行方法?exchange?以及?execute,下面看下SpringBoot?RestTemplate調(diào)用第三方API的方式2022-12-12詳解SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源
這篇文章主要為大家介紹了SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09RocketMQ實(shí)現(xiàn)消息分發(fā)的步驟
RocketMQ 實(shí)現(xiàn)消息分發(fā)的核心機(jī)制是通過(guò) Topic、Queue 和 Consumer Group 的配合實(shí)現(xiàn)的,下面給大家介紹RocketMQ實(shí)現(xiàn)消息分發(fā)的步驟,感興趣的朋友一起看看吧2024-03-03