去除邮储签约实现

This commit is contained in:
gityjf 2021-01-04 18:03:31 +08:00
parent 50d740e9a2
commit 332457bc07
2 changed files with 4 additions and 208 deletions

View File

@ -43,7 +43,8 @@ public class AllinpayServlet extends BaseServlet {
String signType = request.getParameter("signType");
String projectId = request.getParameter("projectId");
if (signType.equals("YCcollect")) {
return new YCPaySignServlet().ycDXNotice(request, response, getSignObj(projectId));
// return new YCPaySignServlet().ycDXNotice(request, response, getSignObj(projectId));
return "/error.jsp";
}
Map<String, String> msg = new HashMap<>();
@ -113,7 +114,8 @@ public class AllinpayServlet extends BaseServlet {
String signType = request.getParameter("signType");
String projectId = request.getParameter("projectId");
if (signType.equals("YCcollect")) {
return new YCPaySignServlet().ycDXSign(request, response, getSignObj(projectId));
// return new YCPaySignServlet().ycDXSign(request, response, getSignObj(projectId));
return "/error.jsp";
}
Map<String, String> msg = new HashMap<>();

View File

@ -1,206 +0,0 @@
package com.tenwa.lease.app.allinpay.servlet;
import com.alibaba.fastjson.JSONObject;
import com.amarsoft.app.lc.util.DateAssistant;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.BizObjectManager;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.util.DataConvert;
import com.tenwa.collectaudit.yccollect.XMLAnalysis;
import com.tenwa.util.SerialNumberUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @program: apzl_leasing
* @author: yjf
* @create: 2020-11-23 15:39
**/
public class YCPaySignServlet {
public static Logger logger = Logger.getLogger(YCPaySignServlet.class);
// 邮储短信通知
public String ycDXNotice(HttpServletRequest request, HttpServletResponse response, SignDto signObj) throws Exception {
String retPath = null;
try (PrintWriter pw = response.getWriter()) {
logger.info("-------------------- 邮储短信通知(YC_DX_NOTICE)执行--------------------");
String projectId = request.getParameter("projectId");
String dxNoticeXml = createDXNoticeXml(signObj);
// String retMeg = SocketClientUtil.sendTcpNoticeMsg(dxNoticeXml);
String retMeg = "";
logger.info("-------------------- 邮储短信通知(YC_DX_NOTICE)返回信息--------------------");
logger.info(retMeg);
logger.info("-------------------- 邮储短信通知(YC_DX_NOTICE)返回信息--------------------");
Pattern pattern = Pattern.compile("(\\d{4})(<\\?.*\\?>)(<.*>)(\\s*$)");
Matcher matcher = pattern.matcher(retMeg);
if (matcher.matches()) {
String analysisXml = "<root>" + matcher.group(3) + "</root>";
Map<String, String> respMap = XMLAnalysis.xmlToMap(analysisXml, "GBK");
BizObjectManager bomLDC = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_CARD_TLSIGN");
bomLDC.createQuery("update O SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent where project_id = :projectId ")
.setParameter("customerLaunchTime", DateAssistant.getTodayNow())
.setParameter("requestContent", dxNoticeXml)
.setParameter("responseContent", retMeg)
.setParameter("projectId", projectId).executeUpdate();
if (respMap.get("respcd").equals("0000")) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("message", "success");
pw.write(jsonObject.toJSONString());
}
}
} catch (Exception e) {
logger.error("-------------------- 邮储短信通知(YC_DX_NOTICE)异常--------------------", e);
request.setAttribute("state", "500");
request.setAttribute("title", "服务器内部异常");
request.setAttribute("message", e.getMessage());
retPath = "/error.jsp";
}
return retPath;
}
/**
* 生成短信通知xml
*/
private String createDXNoticeXml(SignDto signObj) throws Exception {
StringBuilder sb = new StringBuilder("<?xml version=\"1.0\" encoding=\"GBK\"?><sign>DXTZ</sign>");
sb.append("<cardno>").append(signObj.getAccNumber()).append("</cardno>")//银行卡号
.append("<name>").append(signObj.getUserName()).append("</name>")//姓名
.append("<papertype>01</papertype>")//证件类型身份证
.append("<paperid>").append(signObj.getCertId()).append("</paperid>")//证件号码
.append("<transq>").append(SerialNumberUtil.getYouChuSerialNumber("DXTZ", 4)).append("</transq>")//交易流水号
.append("<bak1></bak1><bak2></bak2>");//备注
String xmlLength = String.format("%04d", sb.length());//报文长度
return xmlLength + sb.toString();
}
// 邮储短信签约
public String ycDXSign(HttpServletRequest request, HttpServletResponse response, SignDto signObj) throws Exception {
String retPath = null;
try (PrintWriter pw = response.getWriter()) {
Map<String, String> retMap = new HashMap<>();
retMap.put("status", "error");
logger.info("-------------------- 邮储短信签约(YC_DX_SIGN)执行--------------------");
String projectId = request.getParameter("projectId");
String verCode = request.getParameter("verCode");
String dxNoticeXml = createDXSignXml(signObj, "", verCode);
// String retMeg = SocketClientUtil.sendTcpNoticeMsg(dxNoticeXml);
String retMeg = "";
logger.info("-------------------- 邮储短信签约(YC_DX_SIGN)返回信息--------------------");
logger.info(retMeg);
logger.info("-------------------- 邮储短信签约(YC_DX_SIGN)返回信息--------------------");
Pattern pattern = Pattern.compile("(\\d{4})(<\\?.*\\?>)(<.*>)(\\s*$)");
Matcher matcher = pattern.matcher(retMeg);
if (matcher.matches()) {
String analysisXml = "<root>" + matcher.group(3) + "</root>";
Map<String, String> respMap = XMLAnalysis.xmlToMap(analysisXml, "GBK");
BizObjectManager bomLDC = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_CARD_TLSIGN");
String signTime = DateAssistant.getTodayNow();
if (respMap.get("respcd").equals("0000")) {
bomLDC.createQuery("update o set o.SIGN_STATUS = 'sign_status2',o.SIGN_TIME = :signTime where o.project_id = :projectId ")
.setParameter("signTime", signTime).setParameter("projectId", projectId).executeUpdate();
} else {
bomLDC.createQuery("update o set o.SIGN_STATUS = 'sign_status3',o.SIGN_TIME = :signTime where o.project_id = :projectId ")
.setParameter("signTime", signTime).setParameter("projectId", projectId).executeUpdate();
}
}
pw.write(retMap.toString());
} catch (Exception e) {
logger.error("-------------------- 邮储短信签约(YC_DX_SIGN)异常--------------------", e);
request.setAttribute("state", "500");
request.setAttribute("title", "服务器内部异常");
request.setAttribute("message", e.getMessage());
retPath = "/error.jsp";
}
return retPath;
}
/**
* 生成短信签约xml
*/
private String createDXSignXml(SignDto signObj, String payId, String verifyCode) throws Exception {
StringBuilder sb = new StringBuilder("<?xml version=\"1.0\" encoding=\"GBK\"?><sign>DXQY</sign>");
sb.append("<cardno>").append(signObj.getAccNumber()).append("</cardno>")//银行卡号
.append("<name>").append(signObj.getUserName()).append("</name>")//姓名
.append("<papertype>01</papertype>")//证件类型身份证
.append("<paperid>").append(signObj.getCertId()).append("</paperid>")//证件号码
.append("<payid>").append(payId).append("</payid>")//签约用户号
.append("<transq>").append(SerialNumberUtil.getYouChuSerialNumber("DXQY", 4)).append("</transq>")//交易流水号
.append("<verifycd>").append(verifyCode).append("</verifycd>")//短信验证码
.append("<bak1></bak1><bak2></bak2>");//备注
String xmlLength = String.format("%04d", sb.length());//报文长度
return xmlLength + sb.toString();
}
// 邮储签约界面
public String ycSignPage(HttpServletRequest request, HttpServletResponse response, SignDto signObj) {
String retPath = "/error.jsp";
try {
String projectId = DataConvert.toString(request.getParameter("con"));
String userName = "", phoneNumber = "", accNumber = "", certId = "";
if (signObj != null) {
userName = signObj.getUserName();
phoneNumber = signObj.getPhoneNumber();
accNumber = signObj.getAccNumber();
certId = signObj.getCertId();
}
if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(phoneNumber) || StringUtils.isEmpty(accNumber) || StringUtils.isEmpty(certId)) {
logger.error("" + projectId + "】信息不完整:userName=" + userName + ",phoneNumber=" + phoneNumber + "accNumber=" + accNumber + "certId=" + certId);
request.setAttribute("state", "500");
request.setAttribute("title", "服务器内部异常");
request.setAttribute("message", "您的信息不完整,请联系业务人员");
return retPath;
}
BizObjectManager bomLDC = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_CARD_TLSIGN");
BizObject ldc = bomLDC.createQuery("O.PROJECT_ID=:PROJECT_ID").setParameter("PROJECT_ID", projectId).getSingleResult(true);
if (ldc == null) {
ldc = bomLDC.newObject();
ldc.setAttributeValue("PROJECT_ID", projectId);
ldc.setAttributeValue("sign_type", "YC");
ldc.setAttributeValue("SIGN_STATUS", "sign_status1");
bomLDC.saveObject(ldc);
} else if ("sign_status2".equals(ldc.getAttribute("SIGN_STATUS").toString())) {
logger.error("" + projectId + "】无签约业务需求");
request.setAttribute("state", "404");
request.setAttribute("title", "UH OH!页面丢失");
request.setAttribute("message", "已签约,不能重复签约");
return retPath;
}
request.setAttribute("userName", userName);
request.setAttribute("phoneNumber", phoneNumber);
request.setAttribute("certId", certId);
request.setAttribute("accNumber", accNumber);
//前台展示短信息
String userNameShort = "*" + userName.substring(1, userName.length());
String phoneNumberShort = "*****" + phoneNumber.substring(phoneNumber.length() - 4);
String accNumberShort = "*****" + accNumber.substring(accNumber.length() - 4);
String certIdShort = certId.substring(certId.length() - 6);
request.setAttribute("userNameShort", userNameShort);
request.setAttribute("phoneNumberShort", phoneNumberShort);
request.setAttribute("accNumberShort", accNumberShort);
request.setAttribute("certIdShort", certIdShort);
request.setAttribute("projectId", projectId);
request.setAttribute("signType", "YC");
retPath = "/ycsign_index.jsp";
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("state", "500");
request.setAttribute("title", "服务器内部异常");
request.setAttribute("message", e.getMessage());
}
return retPath;
}
}