265 lines
12 KiB
Java
265 lines
12 KiB
Java
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.ServletException;
|
|
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.FAGRCRET;
|
|
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.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.AllinpayUtil;
|
|
|
|
@WebServlet(urlPatterns = { "/allinpay/sign" })
|
|
public class AllinpayServlet extends BaseServlet {
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private AllinpayProperties factory = new AllinpayProperties();
|
|
|
|
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");
|
|
|
|
String contractId = request.getParameter("contractId");
|
|
Map<String, String> xmlMap = allinpayService.allinPaySendMessages(contractId);
|
|
String phoneNumber = xmlMap.get("phoneNumber");
|
|
String contractNumber = xmlMap.get("contractNumber");
|
|
|
|
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);
|
|
|
|
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime WHERE CONTRACT_NUMBER=:contractNumber";
|
|
sqlObject = new SqlObject(sql);
|
|
sqlObject.setParameter("customerLaunchTime", time);
|
|
sqlObject.setParameter("contractNumber", contractNumber);
|
|
} else {
|
|
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE CONTRACT_NUMBER=:contractNumber";
|
|
sqlObject = new SqlObject(sql);
|
|
sqlObject.setParameter("customerLaunchTime", time);
|
|
sqlObject.setParameter("requestContent", requestContent);
|
|
sqlObject.setParameter("responseContent", responseContent);
|
|
sqlObject.setParameter("contractNumber", contractNumber);
|
|
}
|
|
} else {
|
|
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE CONTRACT_NUMBER=:contractNumber";
|
|
sqlObject = new SqlObject(sql);
|
|
sqlObject.setParameter("customerLaunchTime", time);
|
|
sqlObject.setParameter("requestContent", requestContent);
|
|
sqlObject.setParameter("responseContent", responseContent);
|
|
sqlObject.setParameter("contractNumber", contractNumber);
|
|
}
|
|
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");
|
|
|
|
String verCode = request.getParameter("verCode");
|
|
String contractId = request.getParameter("contractId");
|
|
Map<String, String> messageMap = allinpayService.allinPaySigning(contractId);
|
|
String contractNumber = messageMap.get("contractNumber");
|
|
String phoneNumber = messageMap.get("phoneNumber");
|
|
String time = DateAssistant.getTodayNow();
|
|
|
|
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);
|
|
|
|
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 CONTRACT_NUMBER=:contractNumber";
|
|
sqlObject = new SqlObject(sql);
|
|
sqlObject.setParameter("signTime", time);
|
|
sqlObject.setParameter("agrmno", agrmNo);
|
|
sqlObject.setParameter("signStatus", "sign_status2");
|
|
sqlObject.setParameter("contractNumber", contractNumber);
|
|
} else {
|
|
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,SIGN_STATUS=:signStatus,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE CONTRACT_NUMBER=:contractNumber";
|
|
sqlObject = new SqlObject(sql);
|
|
sqlObject.setParameter("signTime", time);
|
|
sqlObject.setParameter("signStatus", "sign_status3");
|
|
sqlObject.setParameter("requestContent", requestContent);
|
|
sqlObject.setParameter("responseContent", responseContent);
|
|
sqlObject.setParameter("contractNumber", contractNumber);
|
|
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 CONTRACT_NUMBER=:contractNumber";
|
|
sqlObject = new SqlObject(sql);
|
|
sqlObject.setParameter("signTime", time);
|
|
sqlObject.setParameter("signStatus", "sign_status3");
|
|
sqlObject.setParameter("requestContent", requestContent);
|
|
sqlObject.setParameter("responseContent", responseContent);
|
|
sqlObject.setParameter("contractNumber", contractNumber);
|
|
msg.put("msg", infoRsp.getERR_MSG());
|
|
}
|
|
allinpayService.update(sqlObject);
|
|
}
|
|
String message = JSON.toJSONString(msg);
|
|
response.getWriter().write(message);
|
|
return null;
|
|
}
|
|
|
|
// ͨÁªÇ©Ô¼Ò³Ãæ
|
|
public void allinPaySign(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
|
Transaction Sqlca = null;
|
|
ASResultSet res = null;
|
|
try {
|
|
String contractId = DataConvert.toString(request.getParameter("con"));
|
|
|
|
String userName = "";
|
|
String phoneNumber = "";
|
|
String accNumber = "";
|
|
String certId = "";
|
|
String contractNumber = "";
|
|
//String sql = "SELECT O.contract_number,ci.customername customername,ca.mobile phonenumber,ca.acc_number accNumber,cc.certid certId FROM LB_CONTRACT_INFO O LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = O.ID AND LUL.IS_MAIN = 'Y' LEFT JOIN CUSTOMER_INFO CI ON CI.CUSTOMERID = LUL.CUSTOMER_ID and (CI.STATUS <> 'status04' or ci.STATUS is null) LEFT JOIN CUSTOMER_ACCOUNT CA ON CA.CONTRACT_ID = O.ID LEFT JOIN CUSTOMER_TEL CT ON CT.CUSTOMERID = CI.CUSTOMERID and ct.ISNEW='yes' LEFT JOIN CUSTOMER_CERT CC ON CI.CUSTOMERID = CC.CUSTOMERID and cc.STATUS in('valid','status02') WHERE O.id=:Id";
|
|
String sql ="SELECT lpi.project_no contract_number,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", contractId);
|
|
res = Sqlca.getASResultSet(sqlObject);
|
|
while (res.next()) {
|
|
contractNumber = res.getString("contract_number");
|
|
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)) {
|
|
throw new RuntimeException("ÐÅÏ¢²»ÍêÕû,ÇëÁªÏµÒµÎñÈËÔ±!");
|
|
}
|
|
|
|
//
|
|
BizObjectManager bomLDC = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_CARD_TLSIGN", Sqlca);
|
|
BizObject ldc = bomLDC.createQuery("O.CONTRACT_NUMBER=:CONTRACT_NUMBER").setParameter("CONTRACT_NUMBER", contractNumber).getSingleResult(true);
|
|
if(ldc == null){
|
|
ldc = bomLDC.newObject();
|
|
ldc.setAttributeValue("CONTRACT_NUMBER", contractNumber);
|
|
ldc.setAttributeValue("SIGN_STATUS", "sign_status1");
|
|
bomLDC.saveObject(ldc);
|
|
}
|
|
String contractNumberShort = "*****" + contractNumber.substring(contractNumber.length() - 6);
|
|
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("contractId", contractId);
|
|
request.getRequestDispatcher("/Sign_index.jsp").forward(request, response);
|
|
} catch (Exception e) {
|
|
if (Sqlca != null)
|
|
try {
|
|
Sqlca.rollback();
|
|
} catch (Exception e1) {
|
|
e1.printStackTrace();
|
|
}
|
|
e.printStackTrace();
|
|
throw new ServletException("ϵͳÒì³££¬ÇëÁªÏµÏà¹ØÒµÎñÈËÔ±");
|
|
} 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();
|
|
}
|
|
}
|
|
}
|
|
}
|