前几天有读者希望我能写一篇给手机发送验证码的随笔,因为是很久以前实现的功能,为了不负读者,这几天一直都在利用空余时间整理代码和测试,不过现在也是大功告成了。
本文是利用第三方平台实现的发送手机短信验证码和语音验证码的功能,使用的框架是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技术干货
识别二维码→
关注→
缘分,点击“在看”就对了