添加邮储签约
This commit is contained in:
parent
912135f6d7
commit
f38f65d1a9
@ -1,20 +1,10 @@
|
||||
package com.tenwa.lease.app.allinpay.servlet;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.allinpay.xstruct.quickpay.FAGRARET;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.allinpay.xml.XmlParser;
|
||||
import com.allinpay.xstruct.common.AipgRsp;
|
||||
import com.allinpay.xstruct.common.InfoRsp;
|
||||
import com.allinpay.xstruct.quickpay.FAGRARET;
|
||||
import com.allinpay.xstruct.quickpay.FAGRCRET;
|
||||
import com.amarsoft.app.lc.util.DateAssistant;
|
||||
import com.amarsoft.are.jbo.BizObject;
|
||||
@ -24,254 +14,276 @@ import com.amarsoft.are.util.DataConvert;
|
||||
import com.amarsoft.awe.util.ASResultSet;
|
||||
import com.amarsoft.awe.util.SqlObject;
|
||||
import com.amarsoft.awe.util.Transaction;
|
||||
import com.tenwa.lease.app.allinpay.util.AllinpayProperties;
|
||||
import com.tenwa.lease.app.allinpay.service.AllinpayService;
|
||||
import com.tenwa.lease.app.allinpay.service.impl.AllinpayServiceImpl;
|
||||
import com.tenwa.lease.app.allinpay.util.AllinpayProperties;
|
||||
import com.tenwa.lease.app.allinpay.util.AllinpayUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@WebServlet(urlPatterns = { "/allinpay/sign" })
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@WebServlet(urlPatterns = {"/allinpay/sign"})
|
||||
public class AllinpayServlet extends BaseServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private AllinpayProperties factory ;
|
||||
private AllinpayProperties factory;
|
||||
|
||||
private AllinpayService allinpayService = new AllinpayServiceImpl();
|
||||
private AllinpayService allinpayService = new AllinpayServiceImpl();
|
||||
|
||||
// 通联卡扣短信发送
|
||||
public String allinPaySendMessages(HttpServletRequest request, HttpServletResponse response)
|
||||
throws MalformedURLException, Exception {
|
||||
Map<String, String> msg = new HashMap<>();
|
||||
msg.put("message", "error");
|
||||
// 通联卡扣短信发送
|
||||
public String allinPaySendMessages(HttpServletRequest request, HttpServletResponse response)
|
||||
throws MalformedURLException, Exception {
|
||||
String signType = request.getParameter("signType");
|
||||
String projectId = request.getParameter("projectId");
|
||||
if (signType.equals("YCcollect")) {
|
||||
return new YCPaySignServlet().ycDXNotice(request, response, getSignObj(projectId));
|
||||
}
|
||||
|
||||
String projectId = request.getParameter("projectId");
|
||||
Map<String, String> xmlMap = allinpayService.allinPaySendMessages(projectId);
|
||||
String phoneNumber = xmlMap.get("phoneNumber");
|
||||
String subjectid = xmlMap.get("subjectid");
|
||||
factory = new AllinpayProperties(subjectid);
|
||||
Map<String, String> msg = new HashMap<>();
|
||||
msg.put("message", "error");
|
||||
Map<String, String> xmlMap = allinpayService.allinPaySendMessages(projectId);
|
||||
String phoneNumber = xmlMap.get("phoneNumber");
|
||||
String subjectid = xmlMap.get("subjectid");
|
||||
factory = new AllinpayProperties(subjectid);
|
||||
|
||||
Map<String, String> map = factory.allinPaySendMessages(xmlMap);
|
||||
Map<String, String> map = factory.allinPaySendMessages(xmlMap);
|
||||
|
||||
if (!"success".equals(map.get("message"))) {
|
||||
logger.info("系统异常或通联反馈异常:" + map.get("msg"));
|
||||
throw new Exception(map.get("msg"));
|
||||
} else {
|
||||
String requestContent = map.get("request");
|
||||
String responseContent = map.get("response");
|
||||
String time = DateAssistant.getTodayNow();
|
||||
AipgRsp rsp = XmlParser.parseRsp(responseContent);
|
||||
InfoRsp infoRsp = rsp.getINFO();
|
||||
FAGRARET ret = (FAGRARET) rsp.trxObj();
|
||||
SqlObject sqlObject = null;
|
||||
if ("0000".equals(infoRsp.getRET_CODE())) {
|
||||
String retCode = ret.getRET_CODE();
|
||||
if (retCode != null && "0000".equals(retCode)) {
|
||||
msg.put("message", "success");
|
||||
String reqSn = infoRsp.getREQ_SN();
|
||||
Cookie[] cookies = request.getCookies();
|
||||
Cookie cookie = AllinpayUtil.getCookie(phoneNumber, cookies);
|
||||
if (cookie == null) {
|
||||
cookie = new Cookie(phoneNumber, reqSn);
|
||||
} else {
|
||||
cookie.setValue(reqSn);
|
||||
}
|
||||
cookie.setMaxAge(60 * 10);
|
||||
response.addCookie(cookie);
|
||||
if (!"success".equals(map.get("message"))) {
|
||||
logger.info("系统异常或通联反馈异常:" + map.get("msg"));
|
||||
throw new Exception(map.get("msg"));
|
||||
} else {
|
||||
String requestContent = map.get("request");
|
||||
String responseContent = map.get("response");
|
||||
String time = DateAssistant.getTodayNow();
|
||||
AipgRsp rsp = XmlParser.parseRsp(responseContent);
|
||||
InfoRsp infoRsp = rsp.getINFO();
|
||||
FAGRARET ret = (FAGRARET) rsp.trxObj();
|
||||
SqlObject sqlObject = null;
|
||||
if ("0000".equals(infoRsp.getRET_CODE())) {
|
||||
String retCode = ret.getRET_CODE();
|
||||
if (retCode != null && "0000".equals(retCode)) {
|
||||
msg.put("message", "success");
|
||||
String reqSn = infoRsp.getREQ_SN();
|
||||
Cookie[] cookies = request.getCookies();
|
||||
Cookie cookie = AllinpayUtil.getCookie(phoneNumber, cookies);
|
||||
if (cookie == null) {
|
||||
cookie = new Cookie(phoneNumber, reqSn);
|
||||
} else {
|
||||
cookie.setValue(reqSn);
|
||||
}
|
||||
cookie.setMaxAge(60 * 10);
|
||||
response.addCookie(cookie);
|
||||
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("customerLaunchTime", time);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
} else {
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("customerLaunchTime", time);
|
||||
sqlObject.setParameter("requestContent", requestContent);
|
||||
sqlObject.setParameter("responseContent", responseContent);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
}
|
||||
} else {
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("customerLaunchTime", time);
|
||||
sqlObject.setParameter("requestContent", requestContent);
|
||||
sqlObject.setParameter("responseContent", responseContent);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
}
|
||||
allinpayService.update(sqlObject);
|
||||
}
|
||||
String message = JSON.toJSONString(msg);
|
||||
response.getWriter().write(message);
|
||||
return null;
|
||||
}
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("customerLaunchTime", time);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
} else {
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("customerLaunchTime", time);
|
||||
sqlObject.setParameter("requestContent", requestContent);
|
||||
sqlObject.setParameter("responseContent", responseContent);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
}
|
||||
} else {
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("customerLaunchTime", time);
|
||||
sqlObject.setParameter("requestContent", requestContent);
|
||||
sqlObject.setParameter("responseContent", responseContent);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
}
|
||||
allinpayService.update(sqlObject);
|
||||
}
|
||||
String message = JSON.toJSONString(msg);
|
||||
response.getWriter().write(message);
|
||||
return null;
|
||||
}
|
||||
|
||||
// 通联卡扣协议签约
|
||||
public String allinPaySigning(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
Map<String, String> msg = new HashMap<>();
|
||||
msg.put("message", "error");
|
||||
// 通联卡扣协议签约
|
||||
public String allinPaySigning(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
String signType = request.getParameter("signType");
|
||||
String projectId = request.getParameter("projectId");
|
||||
if (signType.equals("YCcollect")) {
|
||||
return new YCPaySignServlet().ycDXSign(request, response, getSignObj(projectId));
|
||||
}
|
||||
|
||||
String verCode = request.getParameter("verCode");
|
||||
String projectId = request.getParameter("projectId");
|
||||
Map<String, String> messageMap = allinpayService.allinPaySigning(projectId);
|
||||
String phoneNumber = messageMap.get("phoneNumber");
|
||||
String subjectid = messageMap.get("subjectid");
|
||||
factory = new AllinpayProperties(subjectid);
|
||||
String time = DateAssistant.getTodayNow();
|
||||
Map<String, String> msg = new HashMap<>();
|
||||
msg.put("message", "error");
|
||||
|
||||
Cookie[] cookies = request.getCookies();
|
||||
Cookie cookie = AllinpayUtil.getCookie(phoneNumber, cookies);
|
||||
if (cookie == null) {
|
||||
msg.put("msg", "验证码失效,请重新获取验证码");
|
||||
String message = JSON.toJSONString(msg);
|
||||
response.getWriter().write(message);
|
||||
return null;
|
||||
}
|
||||
String reqSn = cookie.getValue();
|
||||
Map<String, String> mapXml = new HashMap<>();
|
||||
mapXml.put("reqSn", reqSn);
|
||||
mapXml.put("verCode", verCode);
|
||||
Map<String, String> map = factory.allinPaySigning(mapXml);
|
||||
String verCode = request.getParameter("verCode");
|
||||
Map<String, String> messageMap = allinpayService.allinPaySigning(projectId);
|
||||
String phoneNumber = messageMap.get("phoneNumber");
|
||||
String subjectid = messageMap.get("subjectid");
|
||||
factory = new AllinpayProperties(subjectid);
|
||||
String time = DateAssistant.getTodayNow();
|
||||
|
||||
if (!"success".equals(map.get("message"))) {
|
||||
logger.info("系统异常或通联反馈异常:" + map.get("msg"));
|
||||
throw new Exception(map.get("msg"));
|
||||
} else {
|
||||
String requestContent = map.get("request");
|
||||
String responseContent = map.get("response");
|
||||
AipgRsp rsp = XmlParser.parseRsp(responseContent);
|
||||
InfoRsp infoRsp = rsp.getINFO();
|
||||
SqlObject sqlObject = null;
|
||||
if ("0000".equals(infoRsp.getRET_CODE())) {
|
||||
FAGRCRET ret = (FAGRCRET) rsp.trxObj();
|
||||
String retCode = ret.getRET_CODE();
|
||||
if (retCode != null && "0000".equals(retCode)) {
|
||||
msg.put("message", "success");
|
||||
String agrmNo = ret.getAGRMNO();
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,AGRMNO=:agrmno,SIGN_STATUS=:signStatus WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("signTime", time);
|
||||
sqlObject.setParameter("agrmno", agrmNo);
|
||||
sqlObject.setParameter("signStatus", "sign_status2");
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
} else {
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,SIGN_STATUS=:signStatus,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("signTime", time);
|
||||
sqlObject.setParameter("signStatus", "sign_status3");
|
||||
sqlObject.setParameter("requestContent", requestContent);
|
||||
sqlObject.setParameter("responseContent", responseContent);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
msg.put("msg", ret.getERR_MSG());
|
||||
}
|
||||
} else {
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,SIGN_STATUS=:signStatus,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("signTime", time);
|
||||
sqlObject.setParameter("signStatus", "sign_status3");
|
||||
sqlObject.setParameter("requestContent", requestContent);
|
||||
sqlObject.setParameter("responseContent", responseContent);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
msg.put("msg", infoRsp.getERR_MSG());
|
||||
}
|
||||
allinpayService.update(sqlObject);
|
||||
}
|
||||
String message = JSON.toJSONString(msg);
|
||||
response.getWriter().write(message);
|
||||
return null;
|
||||
}
|
||||
Cookie[] cookies = request.getCookies();
|
||||
Cookie cookie = AllinpayUtil.getCookie(phoneNumber, cookies);
|
||||
if (cookie == null) {
|
||||
msg.put("msg", "验证码失效,请重新获取验证码");
|
||||
String message = JSON.toJSONString(msg);
|
||||
response.getWriter().write(message);
|
||||
return null;
|
||||
}
|
||||
String reqSn = cookie.getValue();
|
||||
Map<String, String> mapXml = new HashMap<>();
|
||||
mapXml.put("reqSn", reqSn);
|
||||
mapXml.put("verCode", verCode);
|
||||
Map<String, String> map = factory.allinPaySigning(mapXml);
|
||||
|
||||
// 通联签约页面
|
||||
public void allinPaySign(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
Transaction Sqlca = null;
|
||||
ASResultSet res = null;
|
||||
try {
|
||||
String projectId = DataConvert.toString(request.getParameter("con"));
|
||||
if (!"success".equals(map.get("message"))) {
|
||||
logger.info("系统异常或通联反馈异常:" + map.get("msg"));
|
||||
throw new Exception(map.get("msg"));
|
||||
} else {
|
||||
String requestContent = map.get("request");
|
||||
String responseContent = map.get("response");
|
||||
AipgRsp rsp = XmlParser.parseRsp(responseContent);
|
||||
InfoRsp infoRsp = rsp.getINFO();
|
||||
SqlObject sqlObject = null;
|
||||
if ("0000".equals(infoRsp.getRET_CODE())) {
|
||||
FAGRCRET ret = (FAGRCRET) rsp.trxObj();
|
||||
String retCode = ret.getRET_CODE();
|
||||
if (retCode != null && "0000".equals(retCode)) {
|
||||
msg.put("message", "success");
|
||||
String agrmNo = ret.getAGRMNO();
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,AGRMNO=:agrmno,SIGN_STATUS=:signStatus WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("signTime", time);
|
||||
sqlObject.setParameter("agrmno", agrmNo);
|
||||
sqlObject.setParameter("signStatus", "sign_status2");
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
} else {
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,SIGN_STATUS=:signStatus,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("signTime", time);
|
||||
sqlObject.setParameter("signStatus", "sign_status3");
|
||||
sqlObject.setParameter("requestContent", requestContent);
|
||||
sqlObject.setParameter("responseContent", responseContent);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
msg.put("msg", ret.getERR_MSG());
|
||||
}
|
||||
} else {
|
||||
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,SIGN_STATUS=:signStatus,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
|
||||
sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("signTime", time);
|
||||
sqlObject.setParameter("signStatus", "sign_status3");
|
||||
sqlObject.setParameter("requestContent", requestContent);
|
||||
sqlObject.setParameter("responseContent", responseContent);
|
||||
sqlObject.setParameter("projectId", projectId);
|
||||
msg.put("msg", infoRsp.getERR_MSG());
|
||||
}
|
||||
allinpayService.update(sqlObject);
|
||||
}
|
||||
String message = JSON.toJSONString(msg);
|
||||
response.getWriter().write(message);
|
||||
return null;
|
||||
}
|
||||
|
||||
String userName = "";
|
||||
String phoneNumber = "";
|
||||
String accNumber = "";
|
||||
String certId = "";
|
||||
String sql ="SELECT ca.account customername,ca.mobile phonenumber,ca.acc_number accNumber,ca.certid certId FROM lb_project_info lpi LEFT JOIN customer_account ca ON ca.project_id=lpi.ID WHERE lpi.id=:Id";
|
||||
Sqlca = Transaction.createTransaction("als");
|
||||
SqlObject sqlObject = new SqlObject(sql);
|
||||
sqlObject.setParameter("Id", projectId);
|
||||
res = Sqlca.getASResultSet(sqlObject);
|
||||
while (res.next()) {
|
||||
userName = res.getString("customername");
|
||||
phoneNumber = res.getString("phonenumber");
|
||||
accNumber = res.getString("accNumber");
|
||||
certId = res.getString("certId");
|
||||
}
|
||||
if (userName==null || "".equals(userName) || phoneNumber==null || "".equals(phoneNumber) || accNumber==null || "".equals(accNumber) || certId==null || "".equals(certId)) {
|
||||
logger.error("【"+projectId+"】信息不完整:userName="+userName+",phoneNumber="+phoneNumber+"accNumber="+accNumber+"certId="+certId);
|
||||
request.setAttribute("state", "500");
|
||||
request.setAttribute("title", "服务器内部异常");
|
||||
request.setAttribute("message", "您的信息不完整,请联系业务人员");
|
||||
request.getRequestDispatcher("/error.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
// 签约页面(通联/邮储)
|
||||
public String allinPaySign(HttpServletRequest request, HttpServletResponse response) {
|
||||
String errorPage = "/error.jsp";
|
||||
try {
|
||||
String projectId = DataConvert.toString(request.getParameter("con"));
|
||||
SignDto signObj = getSignObj(projectId);
|
||||
String userName = "", phoneNumber = "", accNumber = "", certId = "", collectType = "";
|
||||
if (signObj != null) {
|
||||
userName = signObj.getUserName();
|
||||
phoneNumber = signObj.getPhoneNumber();
|
||||
accNumber = signObj.getAccNumber();
|
||||
certId = signObj.getCertId();
|
||||
collectType = signObj.getCollectType();
|
||||
}
|
||||
if(StringUtils.isEmpty(collectType) || "YLcollect".equals(collectType)){
|
||||
request.setAttribute("state", "500");
|
||||
request.setAttribute("title", "服务器内部异常");
|
||||
request.setAttribute("message", "签约渠道与签约类型【"+collectType+"】不一致,请联系业务人员");
|
||||
return errorPage;
|
||||
}
|
||||
if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(phoneNumber) || StringUtils.isEmpty(accNumber) || StringUtils.isEmpty(certId) || StringUtils.isEmpty(collectType)) {
|
||||
logger.error("【" + projectId + "】信息不完整:userName=" + userName + ",phoneNumber=" + phoneNumber + "accNumber=" + accNumber + "certId=" + certId + "collectType=" + collectType);
|
||||
request.setAttribute("state", "500");
|
||||
request.setAttribute("title", "服务器内部异常");
|
||||
request.setAttribute("message", "您的信息不完整,请联系业务人员");
|
||||
return errorPage;
|
||||
}
|
||||
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", collectType);
|
||||
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 errorPage;
|
||||
}
|
||||
request.setAttribute("userName", userName);
|
||||
request.setAttribute("phoneNumber", phoneNumber);
|
||||
request.setAttribute("accNumber", accNumber);
|
||||
request.setAttribute("certId", certId);
|
||||
request.setAttribute("projectId", projectId);
|
||||
request.setAttribute("signType", collectType);
|
||||
|
||||
//
|
||||
BizObjectManager bomLDC = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_CARD_TLSIGN", Sqlca);
|
||||
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", "TL");
|
||||
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", "已签约,不能重复签约");
|
||||
request.getRequestDispatcher("/error.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
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("userName", userName);
|
||||
//request.setAttribute("contractNumber", contractNumber);
|
||||
request.setAttribute("phoneNumber", phoneNumber);
|
||||
request.setAttribute("certId", certId);
|
||||
request.setAttribute("accNumber", accNumber);
|
||||
//request.setAttribute("contractNumberShort", contractNumberShort);
|
||||
request.setAttribute("userNameShort", userNameShort);
|
||||
request.setAttribute("phoneNumberShort", phoneNumberShort);
|
||||
request.setAttribute("accNumberShort", accNumberShort);
|
||||
request.setAttribute("certIdShort", certIdShort);
|
||||
request.setAttribute("projectId", projectId);
|
||||
request.getRequestDispatcher("/Sign_index.jsp").forward(request, response);
|
||||
} catch (Exception e) {
|
||||
if (Sqlca != null)
|
||||
try {
|
||||
Sqlca.rollback();
|
||||
} catch (Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
e.printStackTrace();
|
||||
request.setAttribute("state", "500");
|
||||
request.setAttribute("title", "服务器内部异常");
|
||||
request.setAttribute("message",e.getMessage());
|
||||
request.getRequestDispatcher("/error.jsp").forward(request, response);
|
||||
} finally {
|
||||
if (res != null) {
|
||||
try {
|
||||
res.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (Sqlca != null)
|
||||
try {
|
||||
Sqlca.commit();
|
||||
Sqlca.disConnect();
|
||||
Sqlca = null;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
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);
|
||||
|
||||
return "/Sign_index.jsp";
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
request.setAttribute("state", "500");
|
||||
request.setAttribute("title", "服务器内部异常");
|
||||
request.setAttribute("message", e.getMessage());
|
||||
return errorPage;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取前台展示业务数据
|
||||
*
|
||||
* @param projectId
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private SignDto getSignObj(String projectId) throws Exception {
|
||||
Transaction Sqlca = null;
|
||||
SignDto signDto = null;
|
||||
try {
|
||||
Sqlca = Transaction.createTransaction(JBOFactory.createJBOTransaction());
|
||||
String sql = "SELECT ca.account customername,ca.mobile phonenumber,ca.acc_number accNumber,ca.certid certId,ca.collect_type collectType FROM lb_project_info lpi JOIN customer_account ca ON ca.project_id=lpi.ID WHERE lpi.id=:Id limit 1";
|
||||
ASResultSet res = Sqlca.getASResultSet(new SqlObject(sql));
|
||||
if (res.next()) {
|
||||
String userName = res.getString("customername");
|
||||
String phoneNumber = res.getString("phonenumber");
|
||||
String accNumber = res.getString("accNumber");
|
||||
String certId = res.getString("certId");
|
||||
String collectType = res.getString("collectType");
|
||||
signDto = new SignDto(userName, phoneNumber, accNumber, certId, collectType);
|
||||
}
|
||||
Sqlca.commit();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Sqlca.rollback();
|
||||
}
|
||||
return signDto;
|
||||
}
|
||||
}
|
||||
|
||||
45
src/com/tenwa/lease/app/allinpay/servlet/SignDto.java
Normal file
45
src/com/tenwa/lease/app/allinpay/servlet/SignDto.java
Normal file
@ -0,0 +1,45 @@
|
||||
package com.tenwa.lease.app.allinpay.servlet;
|
||||
|
||||
/**
|
||||
* @program: apzl_leasing
|
||||
* @author: yjf
|
||||
* @create: 2020-12-21 16:55
|
||||
**/
|
||||
public class SignDto {
|
||||
private String userName;
|
||||
private String phoneNumber;
|
||||
private String certId;
|
||||
private String collectType;
|
||||
private String accNumber;
|
||||
|
||||
public SignDto() {
|
||||
}
|
||||
|
||||
public SignDto(String userName, String phoneNumber, String certId, String accNumber, String collectType) {
|
||||
this.userName = userName;
|
||||
this.phoneNumber = phoneNumber;
|
||||
this.certId = certId;
|
||||
this.accNumber = accNumber;
|
||||
this.collectType = collectType;
|
||||
}
|
||||
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
public String getPhoneNumber() {
|
||||
return phoneNumber;
|
||||
}
|
||||
|
||||
public String getCertId() {
|
||||
return certId;
|
||||
}
|
||||
|
||||
public String getAccNumber() {
|
||||
return accNumber;
|
||||
}
|
||||
|
||||
public String getCollectType() {
|
||||
return collectType;
|
||||
}
|
||||
}
|
||||
205
src/com/tenwa/lease/app/allinpay/servlet/YCPaySignServlet.java
Normal file
205
src/com/tenwa/lease/app/allinpay/servlet/YCPaySignServlet.java
Normal file
@ -0,0 +1,205 @@
|
||||
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.SocketClientUtil;
|
||||
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);
|
||||
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);
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user