【短信防火墻】后端接入---JAVA接入指引
發(fā)布時間:2021-01-27 點擊數(shù):19455
后端接入---JAVA接入指引
本篇教程介紹如何在Java后端接入防火墻。
快速接入步驟
1、 配置必要依賴包
nxt-sms-client-1.2.jar
commons-codec-1.4.jar
commons-lang3-3.6.jar
commons-logging.jar
fastjson-1.2.31.jar
logback-core-1.0.13.jar
slf4j-api-1.6.6.jar
logback-classic-1.0.13.jar
2、 配置相關(guān)配置文件
newxt.ini
修改參數(shù)(fireWareUrl)-->http://localhost:7502 (本地服務(wù)路徑或云端服務(wù)地址:http://fw.newxtc.com)
(isNginx)-->true (有無反向代理)
3、 各場景示例代碼(注:短信下發(fā)和短信驗證須成對出現(xiàn))
1. 短信下發(fā)
public RetMsg smsSend(HttpServletRequest request, HttpServletResponse response, String clientMobile) {
RetMsg retMsg = new RetMsg(-1, "系統(tǒng)異常");
FwClient fwClient = new FwClientImpl();
try {
// 1 調(diào)用【短信防火墻】短信發(fā)送請求
HashMap < String, Object > paramMap = fwClient.getSendReq(request, clientMobile);
String jsonReq = fwClient.execReq(paramMap);
String smsSendRet = fwClient.getRetVaule(jsonReq, "riskResult");
if("REJECT".equals(smsSendRet)) {
retMsg.setRet(3);
retMsg.setMsg("請求過于頻繁");
}
else {
// 業(yè)務(wù) TODO
// 業(yè)務(wù)調(diào)用短信接口 TODO
// 調(diào)用短信接口 結(jié)束
if(smsRetMsg != null && smsRetMsg.getRet() == 0) {
// 2 調(diào)用【短信防火墻】成功結(jié)果
fwClient.execSucc(paramMap);
logger.debug("send succ");
retMsg.setRet(0);
retMsg.setMsg("發(fā)送驗證碼成功");
}
else {
// 2 調(diào)用【短信防火墻】失敗結(jié)果
SmsVerifyCache.getInstance().remove(clientMobile);
fwClient.execFail(paramMap);
retMsg.setRet(-1);
retMsg.setMsg("發(fā)送驗證碼失敗");
}
}
}
catch(Exception e) {
for(StackTraceElement elment: e.getStackTrace()) {
logger.error(elment.toString());
}
}
return retMsg;
}
2. 短信驗證
public RetMsg smsVerify(HttpServletRequest request, HttpServletResponse response, String clientMobile, String smsVerifyCode) {
FwClient fwClient = new FwClientImpl();
RetMsg retMsg = new RetMsg(-1, "系統(tǒng)異常");
if(smsVerifyCode == null || smsVerifyCode.isEmpty()) {
retMsg.setRet(1);
retMsg.setMsg("輸入驗證碼為空");
}
else {
// 1 調(diào)用【短信防火墻】驗證請求
HashMap < String, Object > paramMap = fwClient.getVerifyReq(request, clientMobile); // 請求防火墻
String jsonReq = fwClient.execReq(paramMap);
// 報文處理
String smsSendRet = fwClient.getRetVaule(jsonReq, "riskResult");
if("REJECT".equals(smsSendRet)) {
retMsg.setRet(3);
retMsg.setMsg("請求過于頻繁");
}
// 業(yè)務(wù) TODO
if(cacheSmsVerify != null && cacheSmsVerify.getVerifyCode() != null && !cacheSmsVerify.getVerifyCode().isEmpty()) {
if(cacheSmsVerify.getVerifyCode().equals(smsVerifyCode)) {
retMsg.setRet(0);
retMsg.setMsg("驗證成功");
}
else {
retMsg.setRet(1);
retMsg.setMsg("驗證碼錯誤");
}
}
else {
retMsg.setRet(-9);
retMsg.setMsg("驗證碼超時");
}
if(retMsg.getRet() == 0) {
// 2 調(diào)用【短信防火墻】成功結(jié)果
fwClient.execSucc(paramMap);
}
else {
// 2 調(diào)用【短信防火墻】失敗結(jié)果
fwClient.execFail(paramMap);
}
}
return retMsg;
}
3. 用戶登錄
public RetMsg loginByPwd(HttpServletRequest request, HttpServletResponse response, String userId, String password) {
FwClient fwClient = new FwClientImpl();
RetMsg retMsg = new RetMsg(-1, "登錄失敗");
if(userId == null || userId.isEmpty()) {
retMsg.setRet(1);
retMsg.setMsg("請輸入手機號碼");
}
else if(password == null || password.isEmpty()) {
retMsg.setRet(1);
retMsg.setMsg("請輸入密碼");
}
else {
// 1 調(diào)用【短信防火墻】驗證請求
HashMap < String, Object > paramMap = fwClient.getLoginByMobile(request, userId);
String jsonReq = fwClient.execReq(paramMap);
// 報文處理
String smsSendRet = fwClient.getRetVaule(jsonReq, "riskResult");
if("REJECT".equals(smsSendRet)) {
retMsg.setRet(3);
retMsg.setMsg("請求過于頻繁");
}
else {
// 2 調(diào)用【短信防火墻】成功結(jié)果
fwClient.execSucc(paramMap);
// 業(yè)務(wù) TODO
if(userInfo == null) {
retMsg.setRet(1);
retMsg.setMsg("用戶名或密碼錯誤");
// 2 調(diào)用【短信防火墻】失敗結(jié)果
fwClient.loginFail(paramMap);
}
else {
retMsg.setRet(0);
retMsg.setMsg("登錄成功");
// 2 調(diào)用【短信防火墻】成功結(jié)果
fwClient.loginSucc(paramMap);
}
}
}
return retMsg;
}