You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1085 lines
48 KiB
Java
1085 lines
48 KiB
Java
package gtpa.brs.payment.service;
|
|
|
|
import gtpa.brs.payment.service.impl.PreRegistPaymentMapper;
|
|
import gtpa.brs.security.KISA_SEED_CBC;
|
|
import com.raonsecure.transkey.TransKey;
|
|
import com.raonsecure.transkey.XSSValueExpection;
|
|
|
|
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
|
import gtpa.brs.util.SHA256Util;
|
|
import org.apache.http.HttpResponse;
|
|
import org.apache.http.NameValuePair;
|
|
import org.apache.http.client.ResponseHandler;
|
|
import org.apache.http.client.config.RequestConfig;
|
|
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
|
import org.apache.http.client.methods.HttpPost;
|
|
import org.apache.http.impl.client.BasicResponseHandler;
|
|
import org.apache.http.impl.client.CloseableHttpClient;
|
|
import org.apache.http.impl.client.HttpClients;
|
|
import org.apache.http.message.BasicNameValuePair;
|
|
import org.json.simple.JSONArray;
|
|
import org.json.simple.JSONObject;
|
|
import org.json.simple.parser.JSONParser;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import java.sql.SQLException;
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.*;
|
|
|
|
/**
|
|
* /////////////////////////////////////////////////////
|
|
* Company : MQNIC
|
|
* Create : seunghyun
|
|
* Date : 30/04/2019
|
|
* TIME : 10:58 AM
|
|
* Project : BRSPW
|
|
* Class : PreRegistPaymentService
|
|
* Desc :
|
|
* /////////////////////////////////////////////////////
|
|
*/
|
|
@SuppressFBWarnings
|
|
@Service
|
|
public class PreRegistPaymentService {
|
|
|
|
Logger logger = LoggerFactory.getLogger(PreRegistPaymentService.class);
|
|
|
|
@Resource(name = "preRegistPaymentDao")
|
|
PreRegistPaymentMapper paymentMapper;
|
|
|
|
@Resource(name = "globalsProperties")
|
|
Properties env;
|
|
|
|
/*@Autowired
|
|
HttpClient httpClient;*/
|
|
|
|
public Map registPayment(Map param, HttpServletRequest request) {
|
|
Map result = new HashMap();
|
|
try {
|
|
String url = env.getProperty("Globals.SmartPlatform.Url") + env.getProperty("Globals.SmartPlatform.prpRegist");
|
|
String terminalId = env.getProperty("Globals.PreRegistPayment.TerminalId");
|
|
String pbszUserKey = env.getProperty("Globals.PreRegistPayment.UserKey");
|
|
|
|
String tranSerialNo = paymentMapper.getTranSerialNo();
|
|
String priorOrdr = "1";
|
|
String mBerCi;
|
|
String vhcleNo = "";
|
|
String mberNo;
|
|
String vhcleManageNo = "";
|
|
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
String cardNo1;
|
|
String cardNo2;
|
|
String cardNo3;
|
|
String cardNo4;
|
|
String expireDay;
|
|
String secureNo = "";
|
|
String cvcNo = "";
|
|
String niNo;
|
|
String carrier;
|
|
String phoneNo;
|
|
String isForeigner;
|
|
String stcmpNo;
|
|
String setleMnKnd;
|
|
String setleMnMno;
|
|
String ccmpCode;
|
|
|
|
/* 22.08.08 서주희 - 웹접근성 작업(기능 추가)
|
|
* 22.08.29 서주희 - 웹접근성 작업(기능 제거)
|
|
* 23.07.20 김경민 - 웹접근성 작업(기능 복구)
|
|
*/
|
|
String cNo1 = (String) param.get("cardNo1");
|
|
String cNo4 = (String) param.get("cardNo4");
|
|
String decodeCardNo2 = (String) param.get("cardNo2");
|
|
String decodeCardNo3 = (String) param.get("cardNo3");
|
|
String cardNo = cNo1 + decodeCardNo2 + decodeCardNo3 + cNo4;
|
|
cvcNo = (String) param.get("cvcNo");
|
|
secureNo = (String) param.get("secureNo");
|
|
logger.info("cNo1:" + cNo1 + ",decodeCardNo2:" + decodeCardNo2 + ",decodeCardNo3:" + decodeCardNo3 + ",cNo4:" + cNo4);
|
|
logger.info("decodeInfo[ cardNo2:" + decodeCardNo2 + ",cardNo3:" + decodeCardNo3 + ",cvcNo:" + cvcNo + ",secureNo:" + secureNo + "]");
|
|
|
|
/* 22.08.08 서주희 - 웹접근성 작업(기능제거)
|
|
* 22.08.29 서주희 - 웹접근성 작업(기능 복구)
|
|
* 23.07.20 김경민 - 웹접근성 작업(가상 키패드 제거)
|
|
String cNo1 = (String) param.get("cardNo1");
|
|
String cNo4 = (String) param.get("cardNo4");
|
|
String decodeCardNo2 = TransKey.withoutSessionDecode(param.get("cardNo2_transkeyID").toString()
|
|
, param.get("initTime").toString()
|
|
, "numberMobile"
|
|
, param.get("cardNo2_transkey_keyIndex").toString()
|
|
, param.get("cardNo2_transkey_fieldType").toString()
|
|
, param.get("seedKey").toString()
|
|
, param.get("cardNo2_transkey").toString()
|
|
, param.get("cardNo2_transkey_HM").toString()
|
|
, null);
|
|
String decodeCardNo3 = TransKey.withoutSessionDecode(param.get("cardNo3_transkeyID").toString()
|
|
, param.get("initTime").toString()
|
|
, "numberMobile"
|
|
, param.get("cardNo3_transkey_keyIndex").toString()
|
|
, param.get("cardNo3_transkey_fieldType").toString()
|
|
, param.get("seedKey").toString()
|
|
, param.get("cardNo3_transkey").toString()
|
|
, param.get("cardNo3_transkey_HM").toString()
|
|
, null);
|
|
String cardNo = cNo1 + decodeCardNo2 + decodeCardNo3 + cNo4;
|
|
String decodeCvcNo = TransKey.withoutSessionDecode(param.get("cardNo2_transkeyID").toString()
|
|
, param.get("initTime").toString()
|
|
, "numberMobile"
|
|
, param.get("cvcNo_transkey_keyIndex").toString()
|
|
, param.get("cvcNo_transkey_fieldType").toString()
|
|
, param.get("seedKey").toString()
|
|
, param.get("cvcNo_transkey").toString()
|
|
, param.get("cvcNo_transkey_HM").toString()
|
|
, null);
|
|
String decodeSecureNo = TransKey.withoutSessionDecode(param.get("secureNo_transkeyID").toString()
|
|
, param.get("initTime").toString()
|
|
, "numberMobile"
|
|
, param.get("secureNo_transkey_keyIndex").toString()
|
|
, param.get("secureNo_transkey_fieldType").toString()
|
|
, param.get("seedKey").toString()
|
|
, param.get("secureNo_transkey").toString()
|
|
, param.get("secureNo_transkey_HM").toString()
|
|
, null);
|
|
secureNo = decodeSecureNo;
|
|
cvcNo = decodeCvcNo;
|
|
|
|
logger.info("decodeInfo[ cardNo2:" + decodeCardNo2 + ",cardNo3:" + decodeCardNo3 + ",cvcNo:" + decodeCvcNo + ",secureNo:" + decodeSecureNo + "]");
|
|
*/
|
|
|
|
mBerCi = (String) param.get("mberCi");
|
|
List<LinkedHashMap> carList = (ArrayList) param.get("cars");
|
|
LinkedHashMap carInfo = carList.get(0);
|
|
//for (LinkedHashMap carInfo : carList) {
|
|
logger.info("registedCarInfo: " + carInfo);
|
|
vhcleNo = (String) carInfo.get("vhcleNo");
|
|
vhcleManageNo = (String) carInfo.get("vhcleManageNo");
|
|
|
|
mberNo = (String) param.get("mberNo");
|
|
//cardNo = (String) param.get("cardNo");
|
|
logger.info("[" + cardNo + "]");
|
|
logger.info("cNo1:" + cNo1 + ",decodeCardNo2:" + decodeCardNo2 + ",decodeCardNo3:" + decodeCardNo3 + ",cNo4:" + cNo4);
|
|
if (cardNo.length() == 14) {
|
|
cardNo1 = cardNo.substring(0, 2);
|
|
cardNo2 = cardNo.substring(2, 6);
|
|
cardNo3 = cardNo.substring(6, 10);
|
|
cardNo4 = cardNo.substring(10, 14);
|
|
} else if (cardNo.length() == 15) {
|
|
cardNo1 = cardNo.substring(0, 3);
|
|
cardNo2 = cardNo.substring(3, 7);
|
|
cardNo3 = cardNo.substring(7, 11);
|
|
cardNo4 = cardNo.substring(11, 15);
|
|
} else {
|
|
cardNo1 = cardNo.substring(0, 4);
|
|
cardNo2 = cardNo.substring(4, 8);
|
|
cardNo3 = cardNo.substring(8, 12);
|
|
cardNo4 = cardNo.substring(12, 16);
|
|
}
|
|
|
|
logger.info("cardNo1:" + cardNo1 + ",cardNo2:" + cardNo2 + ",cardNo3:" + cardNo3 + ",cardNo4:" + cardNo4);
|
|
|
|
expireDay = (String) param.get("expireDay");
|
|
//secureNo = (String) param.get("secureNo");
|
|
//cvcNo = (String) param.get("cvcNo");
|
|
niNo = (String) param.get("niNo");
|
|
carrier = (String) param.get("phoneCarrier");
|
|
phoneNo = (String) param.get("phoneNo");
|
|
isForeigner = (String) param.get("isForeigner");
|
|
stcmpNo = (String) param.get("stcmpNo");
|
|
setleMnKnd = (String) param.get("setleMnKnd");
|
|
setleMnMno = (String) param.get("setleMnMno");
|
|
ccmpCode = (String) param.get("ccmpCode");
|
|
Map seedEncrypt = cardSeedEncrypt(terminalId, tranSerialNo, cardNo1, cardNo2
|
|
, cardNo3
|
|
, cardNo4, expireDay, secureNo, cvcNo, niNo, carrier, phoneNo
|
|
, isForeigner, vhcleNo
|
|
, pbszUserKey);
|
|
|
|
logger.info("seedEncrypt::" + seedEncrypt);
|
|
|
|
String trackData = (String) seedEncrypt.get("trackData");
|
|
String authInfo = (String) seedEncrypt.get("authInfo");
|
|
String custInfo = (String) seedEncrypt.get("custInfo");
|
|
|
|
String encryptNoData = SHA256Util.encryptSHA256(cardNo);
|
|
Map reqData = new LinkedHashMap();
|
|
reqData.put("insttNo", "BRSMC0100001");
|
|
reqData.put("insttCntcJobSe", "001");
|
|
reqData.put("mberNo", mberNo);
|
|
reqData.put("vhcleManageNo", vhcleManageNo);
|
|
reqData.put("stcmpNo", stcmpNo);
|
|
reqData.put("setleMnKnd", setleMnKnd);
|
|
reqData.put("setleMnMno", setleMnMno);
|
|
reqData.put("ccmpCode", ccmpCode);
|
|
reqData.put("requstDt", now);
|
|
reqData.put("tranSerialNo", tranSerialNo);
|
|
reqData.put("cardInfo", trackData);
|
|
reqData.put("authInfo", authInfo);
|
|
reqData.put("custInfo", custInfo);
|
|
reqData.put("mberCi", mBerCi);
|
|
reqData.put("vhcleNo", vhcleNo);
|
|
reqData.put("priorOrdr", priorOrdr);
|
|
reqData.put("registSe", "03");
|
|
|
|
logger.info("reqData::" + reqData);
|
|
result = requestPreRegistPayment(url, reqData);
|
|
logger.info("result::" + result);
|
|
/*if(result.get("rspnsCode").equals("0000")){
|
|
resultLlist.add(result);
|
|
}*/
|
|
//}
|
|
} catch (RuntimeException re) {
|
|
logger.error("[RuntimeException::" + "" + "]", re);
|
|
logger.error("registPayment :[" + param + "]");
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9998");
|
|
result.put("rspnsMssage", "잘못된 정보가 입력되었습니다. 다시 확인 후 입력바랍니다.");
|
|
} catch (Exception e) {
|
|
logger.error("[process error::" + "" + "]", e);
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", "연결 오류가 발생하였습니다.");
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public Map registTMPayment(Map param, HttpServletRequest request) {
|
|
Map result = new HashMap();
|
|
try {
|
|
String url = env.getProperty("Globals.SmartPlatform.Url") + env.getProperty("Globals.SmartPlatform.prpRegist");
|
|
String terminalId = env.getProperty("Globals.PreRegistPayment.TerminalId");
|
|
String pbszUserKey = env.getProperty("Globals.PreRegistPayment.UserKey");
|
|
|
|
String tranSerialNo = paymentMapper.getTranSerialNo();
|
|
String priorOrdr = "1";
|
|
String mBerCi;
|
|
String vhcleNo = "";
|
|
String mberNo;
|
|
String vhcleManageNo = "";
|
|
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
String secureNo = "";
|
|
String niNo = "";
|
|
String stcmpNo;
|
|
String setleMnKnd;
|
|
String setleMnMno;
|
|
String ccmpCode;
|
|
String ccmpKnd;
|
|
String decodeSecureNo = "";
|
|
|
|
mBerCi = (String) param.get("mberCi");
|
|
List<LinkedHashMap> carList = (ArrayList) param.get("cars");
|
|
LinkedHashMap carInfo = carList.get(0);
|
|
//for (LinkedHashMap carInfo : carList) {
|
|
logger.info("registedCarInfo: " + carInfo);
|
|
vhcleNo = (String) carInfo.get("vhcleNo");
|
|
vhcleManageNo = (String) carInfo.get("vhcleManageNo");
|
|
|
|
mberNo = (String) param.get("mberNo");
|
|
|
|
stcmpNo = (String) param.get("stcmpNo");
|
|
setleMnKnd = (String) param.get("setleMnKnd");
|
|
setleMnMno = (String) param.get("setleMnMno");
|
|
ccmpCode = (String) param.get("ccmpCode");
|
|
ccmpKnd = (String) param.get("ccmpKnd");
|
|
if("TP".equals(ccmpKnd)){
|
|
niNo = (String) param.get("niNo");
|
|
/*secureNo = (String) param.get("secureNo");
|
|
22.08.08 서주희 - 웹접근성 작업(기능제거)
|
|
* 22.08.29 서주희 - 웹접근성 작업(기능 복구)
|
|
* 23.07.20 김경민 - 웹접근성 작업(가상 키패드 제거)
|
|
*/
|
|
decodeSecureNo = TransKey.withoutSessionDecode(param.get("secureNo_transkeyID").toString()
|
|
, param.get("initTime").toString()
|
|
, "numberMobile"
|
|
, param.get("secureNo_transkey_keyIndex").toString()
|
|
, param.get("secureNo_transkey_fieldType").toString()
|
|
, param.get("seedKey").toString()
|
|
, param.get("secureNo_transkey").toString()
|
|
, param.get("secureNo_transkey_HM").toString()
|
|
, null);
|
|
secureNo = decodeSecureNo;
|
|
logger.info("decodeInfo[ secureNo:" + decodeSecureNo + "]");
|
|
}
|
|
Map seedEncrypt = tMoneySeedEncrypt(terminalId, tranSerialNo, mberNo, ccmpKnd
|
|
, secureNo, niNo, vhcleNo, pbszUserKey);
|
|
|
|
logger.info("seedEncrypt::" + seedEncrypt);
|
|
|
|
String trackData = (String) seedEncrypt.get("trackData");
|
|
String authInfo = "";
|
|
|
|
if("TP".equals(ccmpKnd)){
|
|
authInfo = (String) seedEncrypt.get("authInfo");
|
|
}else if("TB".equals(ccmpKnd)){
|
|
authInfo = (String) param.get("authInfo");
|
|
}
|
|
String custInfo = "NO_DATA";
|
|
|
|
Map reqData = new LinkedHashMap();
|
|
reqData.put("insttNo", "BRSMC0100001");
|
|
reqData.put("insttCntcJobSe", "001");
|
|
reqData.put("mberNo", mberNo);
|
|
reqData.put("vhcleManageNo", vhcleManageNo);
|
|
reqData.put("stcmpNo", stcmpNo);
|
|
reqData.put("setleMnKnd", setleMnKnd);
|
|
reqData.put("setleMnMno", setleMnMno);
|
|
reqData.put("ccmpCode", ccmpCode);
|
|
reqData.put("requstDt", now);
|
|
reqData.put("tranSerialNo", tranSerialNo);
|
|
reqData.put("cardInfo", trackData);
|
|
reqData.put("authInfo", authInfo);
|
|
reqData.put("custInfo", custInfo);
|
|
reqData.put("mberCi", mBerCi);
|
|
reqData.put("vhcleNo", vhcleNo);
|
|
reqData.put("priorOrdr", priorOrdr);
|
|
reqData.put("registSe", "03");
|
|
reqData.put("ccmpKnd", ccmpKnd);
|
|
|
|
logger.info("reqData::" + reqData);
|
|
result = requestPreRegistPayment(url, reqData);
|
|
logger.info("result::" + result);
|
|
} catch (RuntimeException re) {
|
|
logger.error("[RuntimeException::" + "" + "]", re);
|
|
logger.error("registPayment :[" + param + "]");
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9998");
|
|
result.put("rspnsMssage", "잘못된 정보가 입력되었습니다. 다시 확인 후 입력바랍니다.");
|
|
} catch (Exception e) {
|
|
logger.error("[process error::" + "" + "]", e);
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", "연결 오류가 발생하였습니다.");
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Terminate payment map.
|
|
*
|
|
* @param param the param
|
|
* @return the map
|
|
*/
|
|
public Map terminatePayment(Map param) {
|
|
Map result;
|
|
String url = env.getProperty("Globals.SmartPlatform.Url") + env.getProperty("Globals.SmartPlatform.prpTerminate");
|
|
String mberNo = (String) param.get("mberNo");
|
|
logger.info("terminatePayment mberNo -> " + mberNo);
|
|
List<LinkedHashMap> carList = (ArrayList) param.get("cars");
|
|
logger.info("carList -> " + carList);
|
|
//LinkedHashMap carInfo = carList.get(0);
|
|
Map carInfo = carList.get(0);
|
|
logger.info("carInfo -> " + carInfo);
|
|
//LinkedHashMap payInfo = (LinkedHashMap)param.get("pay");
|
|
Map payInfo = (Map) param.get("pay");
|
|
logger.info("payInfo -> " + payInfo);
|
|
String vhcleManageNo = (String) carInfo.get("VHCLE_MANAGE_NO");
|
|
String vkeyIssuSeqNo = (String) payInfo.get("VKEY_ISSU_SEQ_NO");
|
|
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
String stcmpNo = (String) payInfo.get("STCMP_NO");
|
|
String setleMnKnd = (String) payInfo.get("SETLE_MN_KND");
|
|
String setleMnMno = (String) payInfo.get("SETLE_MN_MNO");
|
|
|
|
Map reqData = new LinkedHashMap();
|
|
reqData.put("insttNo", "BRSMC0100001");
|
|
reqData.put("insttCntcJobSe", "002");
|
|
reqData.put("vhcleManageNo", vhcleManageNo);
|
|
reqData.put("mberNo", mberNo);
|
|
reqData.put("stcmpNo", stcmpNo);
|
|
reqData.put("setleMnKnd", setleMnKnd);
|
|
reqData.put("setleMnMno", setleMnMno);
|
|
reqData.put("requstDt", now);
|
|
reqData.put("vkeyIssuSeqNo", vkeyIssuSeqNo);
|
|
|
|
logger.info("reqData::" + reqData);
|
|
result = requestPreRegistPayment(url, reqData);
|
|
logger.info("result::" + result);
|
|
return result;
|
|
}
|
|
|
|
public List completePayment(Map param) {
|
|
List resultLlist = new ArrayList();
|
|
Map result;
|
|
String url = env.getProperty("Globals.SmartPlatform.Url") + env.getProperty("Globals.SmartPlatform.prpComplete");
|
|
String mberNo = (String) param.get("mberNo");
|
|
List<LinkedHashMap> pays = (ArrayList) param.get("credits");
|
|
for (LinkedHashMap payInfo : pays) {
|
|
String vkeyIssuSeqNo = (String) payInfo.get("vkeyIssuSeqNo");
|
|
String priorOrdr = (String) payInfo.get("priorOrdr");
|
|
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
|
|
Map reqData = new LinkedHashMap();
|
|
reqData.put("insttNo", "BRSMC0100001");
|
|
reqData.put("insttCntcJobSe", "008");
|
|
reqData.put("mberNo", mberNo);
|
|
reqData.put("vkeyIssuSeqNo", vkeyIssuSeqNo);
|
|
reqData.put("requstDt", now);
|
|
reqData.put("priorOrdr", priorOrdr);
|
|
reqData.put("registSe", "00");
|
|
|
|
logger.info("reqData::" + reqData);
|
|
result = requestPreRegistPayment(url, reqData);
|
|
logger.info("result::" + result);
|
|
if (result.get("rspnsCode").equals("0000")) {
|
|
resultLlist.add(result);
|
|
}
|
|
}
|
|
return resultLlist;
|
|
}
|
|
|
|
public Map approvalPayment(Map param) {
|
|
Map result;
|
|
String url = env.getProperty("Globals.SmartPlatform.Url") + env.getProperty("Globals.SmartPlatform.prpApproval");
|
|
String insttDelngNo = (String) param.get("insttDelngNo");
|
|
String vhcleNo = (String) param.get("vhcleNo");
|
|
String vhcleTy = (String) param.get("vhcleTy");
|
|
String vhcleOwnerCi = (String) param.get("vhcleOwnerCi");
|
|
|
|
String requstAmount = param.get("requstAmount").toString();
|
|
String occrrncDate = (String) param.get("occrrncDate");
|
|
String occrrncTime = (String) param.get("occrrncTime");
|
|
String insttChrgeDetail = (String) param.get("insttChrgeDetail");
|
|
String insttDetailCode = (String) param.get("insttDetailCode");
|
|
String insttDetailNm = (String) param.get("insttDetailNm");
|
|
String pasngSeCode = (String) param.get("pasngSeCode");
|
|
String ffnlgTaxitm = (String) param.get("ffnlgTaxitm");
|
|
String passivePaymentAt = (String) param.get("passivePaymentAt");
|
|
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
|
|
Map reqData = new LinkedHashMap();
|
|
reqData.put("insttNo", param.get("insttNo"));
|
|
reqData.put("insttCntcJobSe", "003");
|
|
reqData.put("vhcleNo", vhcleNo);
|
|
reqData.put("vhcleTy", vhcleTy);
|
|
reqData.put("vhcleOwnerCi", vhcleOwnerCi);
|
|
reqData.put("insttDelngNo", insttDelngNo);
|
|
reqData.put("requstDt", now);
|
|
reqData.put("requstAmount", requstAmount);
|
|
reqData.put("occrrncDate", occrrncDate);
|
|
reqData.put("occrrncTime", occrrncTime);
|
|
reqData.put("insttChrgeDetail", insttChrgeDetail);
|
|
reqData.put("insttDetailCode", insttDetailCode);
|
|
reqData.put("insttDetailNm", insttDetailNm);
|
|
reqData.put("pasngSeCode", pasngSeCode);
|
|
reqData.put("ffnlgTaxitm", ffnlgTaxitm);
|
|
reqData.put("passivePaymentAt", passivePaymentAt);
|
|
|
|
|
|
logger.info("reqData::" + reqData);
|
|
result = requestPreRegistPayment(url, reqData);
|
|
logger.info("result::" + result);
|
|
|
|
return result;
|
|
}
|
|
|
|
public Map approvalReservePayment(Map param) {
|
|
Map result;
|
|
String url = env.getProperty("Globals.SmartPlatform.Url") + env.getProperty("Globals.SmartPlatform.prpApprovalResve");
|
|
String insttDelngNo = (String) param.get("insttDelngNo");
|
|
String vhcleNo = (String) param.get("vhcleNo");
|
|
String vhcleTy = (String) param.get("vhcleTy");
|
|
String vhcleOwnerCi = (String) param.get("vhcleOwnerCi");
|
|
|
|
String requstAmount = (String) param.get("requstAmount");
|
|
String occrrncDate = (String) param.get("occrrncDate");
|
|
String occrrncTime = (String) param.get("occrrncTime");
|
|
String insttChrgeDetail = (String) param.get("insttChrgeDetail");
|
|
String insttDetailCode = (String) param.get("insttDetailCode");
|
|
String insttDetailNm = (String) param.get("insttDetailNm");
|
|
String pasngSeCode = (String) param.get("pasngSeCode");
|
|
String ffnlgTaxitm = (String) param.get("ffnlgTaxitm");
|
|
String reserveDate = (String) param.get("reserveDate");
|
|
String passivePaymentAt = (String) param.get("passivePaymentAt");
|
|
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
|
|
Map reqData = new LinkedHashMap();
|
|
reqData.put("insttNo", param.get("insttNo"));
|
|
reqData.put("insttCntcJobSe", "003");
|
|
reqData.put("vhcleNo", vhcleNo);
|
|
reqData.put("vhcleTy", vhcleTy);
|
|
reqData.put("vhcleOwnerCi", vhcleOwnerCi);
|
|
reqData.put("insttDelngNo", insttDelngNo);
|
|
reqData.put("requstDt", now);
|
|
reqData.put("requstAmount", requstAmount);
|
|
reqData.put("occrrncDate", occrrncDate);
|
|
reqData.put("occrrncTime", occrrncTime);
|
|
reqData.put("insttChrgeDetail", insttChrgeDetail);
|
|
reqData.put("insttDetailCode", insttDetailCode);
|
|
reqData.put("insttDetailNm", insttDetailNm);
|
|
reqData.put("pasngSeCode", pasngSeCode);
|
|
reqData.put("ffnlgTaxitm", ffnlgTaxitm);
|
|
reqData.put("passivePaymentAt", passivePaymentAt);
|
|
reqData.put("reserveDate", reserveDate);
|
|
|
|
|
|
logger.info("reqData::" + reqData);
|
|
result = requestPreRegistPayment(url, reqData);
|
|
logger.info("result::" + result);
|
|
|
|
return result;
|
|
}
|
|
|
|
public Map approvalResult(Map param) {
|
|
Map result;
|
|
String url = env.getProperty("Globals.SmartPlatform.Url") + env.getProperty("Globals.SmartPlatform.prpApprovalResult");
|
|
|
|
String vhcleNo = (String) param.get("vhcleNo");
|
|
String vhcleOwnerCi = (String) param.get("vhcleOwnerCi");
|
|
String brsNo = (String) param.get("brsNo");
|
|
String insttNo = (String) param.get("insttNo");
|
|
String insttDelngNo = (String) param.get("insttDelngNo");
|
|
String delngDate = (String) param.get("delngDate");
|
|
String delngTime = (String) param.get("delngTime");
|
|
String stcmpNm = (String) param.get("stcmpNm");
|
|
String mrhstNo = (String) param.get("mrhstNo");
|
|
String ffnlgTaxitm = (String) param.get("ffnlgTaxitm");
|
|
String requstAmount = (String) param.get("requstAmount");
|
|
String dscntRt = (String) param.get("dscntRt");
|
|
String dscntAmount = (String) param.get("dscntAmount");
|
|
String setleAmount = (String) param.get("setleAmount");
|
|
String feeRt = (String) param.get("feeRt");
|
|
String fee = (String) param.get("fee");
|
|
String stcmpDelngNo = (String) param.get("stcmpDelngNo");
|
|
String ccmpCode = (String) param.get("ccmpCode");
|
|
String ccmpNm = (String) param.get("ccmpNm");
|
|
String cardNo = (String) param.get("cardNo");
|
|
String confmNo = (String) param.get("confmNo");
|
|
String confmDt = (String) param.get("confmDt");
|
|
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
|
|
Map reqData = new LinkedHashMap();
|
|
reqData.put("insttNo", "BRSMC0000002");
|
|
reqData.put("insttCntcJobSe", "003");
|
|
reqData.put("vhcleNo", vhcleNo);
|
|
reqData.put("brsNo", brsNo);
|
|
reqData.put("vhcleOwnerCi", vhcleOwnerCi);
|
|
reqData.put("insttDelngNo", insttDelngNo);
|
|
reqData.put("requstDt", now);
|
|
reqData.put("requstAmount", requstAmount);
|
|
reqData.put("delngDate", delngDate);
|
|
reqData.put("delngTime", delngTime);
|
|
reqData.put("stcmpNm", stcmpNm);
|
|
reqData.put("mrhstNo", mrhstNo);
|
|
reqData.put("dscntRt", dscntRt);
|
|
reqData.put("dscntAmount", dscntAmount);
|
|
reqData.put("setleAmount", setleAmount);
|
|
reqData.put("feeRt", feeRt);
|
|
reqData.put("fee", fee);
|
|
reqData.put("stcmpDelngNo", stcmpDelngNo);
|
|
reqData.put("ccmpCode", ccmpCode);
|
|
reqData.put("ccmpNm", ccmpNm);
|
|
reqData.put("cardNo", cardNo);
|
|
reqData.put("confmNo", confmNo);
|
|
reqData.put("confmDt", confmDt);
|
|
reqData.put("ffnlgTaxitm", ffnlgTaxitm);
|
|
|
|
|
|
logger.info("reqData::" + reqData);
|
|
result = requestPreRegistPayment(url, reqData);
|
|
logger.info("result::" + result);
|
|
|
|
return result;
|
|
}
|
|
|
|
public Map requestPreRegistPayment(String requestURL,
|
|
//Map param
|
|
Map reqData
|
|
) {
|
|
Map result = new HashMap();
|
|
//CloseableHttpClient client = HttpClients.createDefault();
|
|
RequestConfig defaultRequestConfig = RequestConfig.custom()
|
|
.setSocketTimeout(10000)
|
|
.setConnectTimeout(10000)
|
|
.setConnectionRequestTimeout(10000)
|
|
.setStaleConnectionCheckEnabled(true)
|
|
.build();
|
|
CloseableHttpClient client = HttpClients.custom()
|
|
.setDefaultRequestConfig(defaultRequestConfig)
|
|
.build();
|
|
try {
|
|
String token = env.getProperty("Globals.SmartPlatform.token");
|
|
HttpPost postRequest = new HttpPost(requestURL); //POST 메소드 URL 새성
|
|
postRequest.setHeader("Accept", "application/json");
|
|
postRequest.setHeader("BROKER_TOKEN", token);
|
|
List<NameValuePair> pairs = new ArrayList<>();
|
|
Iterator<String> keys = reqData.keySet().iterator();
|
|
while (keys.hasNext()) {
|
|
String key = keys.next();
|
|
pairs.add(new BasicNameValuePair(key, (String) reqData.get(key)));
|
|
}
|
|
postRequest.setEntity(new UrlEncodedFormEntity(pairs, "UTF-8"));
|
|
HttpResponse response = client.execute(postRequest);
|
|
//Response 출력
|
|
if (response.getStatusLine().getStatusCode() == 200) {
|
|
ResponseHandler<String> handler = new BasicResponseHandler();
|
|
String body = handler.handleResponse(response);
|
|
JSONParser parser = new JSONParser();
|
|
Object obj = parser.parse(body);
|
|
JSONObject jsonObj = (JSONObject) obj;
|
|
JSONObject data = (JSONObject) jsonObj.get("data");
|
|
logger.info("body::" + jsonObj.toJSONString());
|
|
if (jsonObj.get("result").equals("SUCCESS")) {
|
|
if (data.get("rspnsCode").equals("0000")) {
|
|
result.put("rspnsResult", "S");
|
|
result.put("ccmpNm", data.get("ccmpNm"));
|
|
result.put("vkeyPblNo", data.get("vkeyPblNo"));
|
|
result.put("vkeyIssuSeqNo", data.get("vkeyIssuSeqNo"));
|
|
result.put("mberNo", data.get("mberNo"));
|
|
result.put("vkeyInfoSttus", data.get("vkeyInfoSttus"));
|
|
|
|
} else {
|
|
result.put("rspnsResult", "E");
|
|
}
|
|
result.put("rspnsCode", data.get("rspnsCode"));
|
|
result.put("rspnsMssage", data.get("rspnsMssage"));
|
|
} else {
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", jsonObj.get("resultMessage"));
|
|
}
|
|
|
|
} else {
|
|
logger.error("response is error : " + response.getStatusLine().getStatusCode());
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", "response is error");
|
|
}
|
|
} catch (RuntimeException re) {
|
|
logger.error("[RuntimeException::" + "" + "]", re);
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", "시스템 오류가 발생하였습니다.");
|
|
} catch (Exception e) {
|
|
logger.error("errorMessage::" + "", e);
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", "연결 오류가 발생하였습니다.");
|
|
} finally {
|
|
try {
|
|
client.close();
|
|
} catch (IOException io) {
|
|
logger.error("[process error::" + "" + "]", io);
|
|
}
|
|
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public Map cardSeedEncrypt(
|
|
String terminalId, String tranSerialNo, String cardNo1, String cardNo2, String cardNo3, String cardNo4
|
|
, String expireDay, String secureNo, String cvcNo, String niNo, String phoneCarrier, String phoneNo
|
|
, String isForeigner, String carNo, String userKey) {
|
|
byte[] pbszUserKey = hexStringToByteArray(userKey);
|
|
Map result = new HashMap();
|
|
String errLine = "";
|
|
|
|
logger.info("cardNo1:" + cardNo1 + ",cardNo2:" + cardNo2 + ",cardNo3:" + cardNo3 + ",cardNo4:" + cardNo4);
|
|
terminalId = terminalId.substring(terminalId.length() - 8, terminalId.length());
|
|
errLine = "1";
|
|
String cardBackNo = cardNo2 + cardNo3 + cardNo4;
|
|
cvcNo = padRightSpace(cvcNo, 4);
|
|
errLine = "2";
|
|
phoneNo = padRightSpace(phoneNo, 12);
|
|
errLine = "3";
|
|
carNo = carNo.substring(carNo.length() - 4, carNo.length());
|
|
errLine = "4";
|
|
byte[] fByte = new byte[3];
|
|
fByte[0] = (byte) 0xFF;
|
|
fByte[1] = (byte) 0xFF;
|
|
fByte[2] = (byte) 0xFF;
|
|
|
|
|
|
ByteArrayOutputStream sourceData1 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream bData1 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream sourceData2 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream bData2 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream sourceData3 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream bData3 = new ByteArrayOutputStream();
|
|
try {
|
|
sourceData1.write(cardBackNo.getBytes());
|
|
errLine = "5";
|
|
sourceData1.write(expireDay.getBytes());
|
|
errLine = "6";
|
|
byte sourceDataByte1[] = sourceData1.toByteArray();
|
|
bData1.write(terminalId.getBytes());
|
|
bData1.write(tranSerialNo.getBytes());
|
|
errLine = "7";
|
|
byte bDataByte1[] = bData1.toByteArray();
|
|
errLine = "8";
|
|
byte[] seedCbcEncryptData1 = KISA_SEED_CBC.SEED_CBC_Encrypt(pbszUserKey, sourceDataByte1, bDataByte1, 0, 16);
|
|
errLine = "9";
|
|
String hexString = byteArrayToHexString(seedCbcEncryptData1, 0, 32);
|
|
errLine = "10";
|
|
String trackData = cardNo1 + hexString;
|
|
result.put("trackData", trackData);
|
|
/*print_hex("sourceDataByte1", sourceDataByte1, 16);
|
|
print_hex("bDataByte", bDataByte1, 16);
|
|
print_hex("seedCbcEncryptData1", seedCbcEncryptData1, 16);*/
|
|
logger.info("hexString::" + hexString);
|
|
logger.info("trackData::" + trackData);
|
|
|
|
sourceData2.write(secureNo.getBytes());
|
|
sourceData2.write(niNo.getBytes());
|
|
sourceData2.write(cvcNo.getBytes());
|
|
sourceData2.write(fByte);
|
|
byte sourceData2Byte[] = sourceData2.toByteArray();
|
|
bData2.write(carNo.getBytes());
|
|
bData2.write(cardBackNo.getBytes());
|
|
byte bData2Byte[] = bData2.toByteArray();
|
|
byte[] seedCbcEncryptData2 = KISA_SEED_CBC.SEED_CBC_Encrypt(pbszUserKey, sourceData2Byte, bData2Byte, 0, 16);
|
|
String hexString2 = byteArrayToHexString(seedCbcEncryptData2, 0, 32);
|
|
result.put("authInfo", hexString2);
|
|
/*print_hex("sourceData2Byte", sourceData2Byte, 16);
|
|
print_hex("bData2", bData2Byte, 16);
|
|
print_hex("authDataSeedEncrypt", seedCbcEncryptData2, 16);*/
|
|
logger.info("hexString2::" + hexString2);
|
|
|
|
sourceData3.write(phoneCarrier.getBytes());
|
|
sourceData3.write(phoneNo.getBytes());
|
|
sourceData3.write(fByte);
|
|
byte sourceData3Byte[] = sourceData3.toByteArray();
|
|
bData3.write(carNo.getBytes());
|
|
bData3.write(cardBackNo.getBytes());
|
|
byte bData3Byte[] = bData3.toByteArray();
|
|
byte[] seedCbcEncryptData3 = KISA_SEED_CBC.SEED_CBC_Encrypt(pbszUserKey, sourceData3Byte, bData3Byte, 0, 16);
|
|
String hexText3 = byteArrayToHexString(seedCbcEncryptData3, 0, 32);
|
|
String custInfo = isForeigner + hexText3;
|
|
result.put("custInfo", custInfo);
|
|
/*print_hex("sourceData3Byte", sourceData3Byte, 16);
|
|
print_hex("bData3Byte", bData3Byte, 16);
|
|
print_hex("authDataSeedEncrypt", seedCbcEncryptData3, 16);*/
|
|
logger.info("hexText3::" + hexText3);
|
|
logger.info("custInfo::" + custInfo);
|
|
result.put("rsMsg", "success");
|
|
result.put("rsCd", "01");
|
|
} catch (RuntimeException re) {
|
|
logger.error("[RuntimeException::" + "" + "]", re);
|
|
result.put("rsMsg", "시스템 처리 오류");
|
|
result.put("rsCd", "02");
|
|
if("".equals(errLine)){
|
|
logger.info(errLine+":cardS:terminalId::" + terminalId);
|
|
}else if("1".equals(errLine)){
|
|
logger.info(errLine+":cardS:cvcNo::" + cvcNo);
|
|
}else if("2".equals(errLine)){
|
|
logger.info(errLine+":cardS:phoneNo::" + phoneNo);
|
|
}else if("3".equals(errLine)){
|
|
logger.info(errLine+":cardS:carNo::" + carNo);
|
|
}else if("4".equals(errLine)){
|
|
logger.info(errLine+":cardS:cardBackNo::" + cardBackNo);
|
|
}else if("5".equals(errLine)){
|
|
logger.info(errLine+":cardS:expireDay::" + expireDay);
|
|
}else if("6".equals(errLine)){
|
|
logger.info(errLine+":cardS:tranSerialNo::" + tranSerialNo);
|
|
}else if("7".equals(errLine)){
|
|
logger.info(errLine+":cardS:bData1::" + bData1);
|
|
}else if("8".equals(errLine)){
|
|
logger.info(errLine+":cardS:pbszUserKey::" + pbszUserKey);
|
|
}else if("9".equals(errLine)){
|
|
logger.info(errLine+":cardS:");
|
|
}else if("10".equals(errLine)){
|
|
logger.info(errLine+":cardS:");
|
|
}
|
|
} catch (IOException re) {
|
|
logger.error("[IOException::" + "" + "]", re);
|
|
result.put("rsMsg", "시스템 스트림처리 오류");
|
|
result.put("rsCd", "02");
|
|
} catch (Exception e) {
|
|
logger.error("[process error::" + "" + "]", e);
|
|
result.put("rsMsg", "시스템 오류");
|
|
result.put("rsCd", "02");
|
|
} finally {
|
|
try {
|
|
if (sourceData1 != null) sourceData1.close();
|
|
if (bData1 != null) bData1.close();
|
|
if (sourceData2 != null) sourceData2.close();
|
|
if (bData2 != null) bData2.close();
|
|
if (sourceData3 != null) sourceData3.close();
|
|
if (bData3 != null) bData3.close();
|
|
} catch (IOException io) {
|
|
logger.error("[process error::" + "" + "]", io);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public Map tMoneySeedEncrypt(
|
|
String terminalId, String tranSerialNo, String mberNo, String ccmpKnd
|
|
, String secureNo, String niNo, String carNo, String userKey) {
|
|
byte[] pbszUserKey = hexStringToByteArray(userKey);
|
|
Map result = new HashMap();
|
|
|
|
terminalId = terminalId.substring(terminalId.length() - 8, terminalId.length());
|
|
String cardBackNo = "";
|
|
String expireDay = "";
|
|
carNo = carNo.substring(carNo.length() - 4, carNo.length());
|
|
String mberNo1 = mberNo.substring(0, mberNo.length() - 16);
|
|
String mberNoSub = mberNo.substring(mberNo.length() - 12, mberNo.length());
|
|
mberNo = mberNo.substring(mberNo.length() - 16, mberNo.length());
|
|
byte[] fByte = new byte[3];
|
|
fByte[0] = (byte) 0xFF;
|
|
fByte[1] = (byte) 0xFF;
|
|
fByte[2] = (byte) 0xFF;
|
|
|
|
ByteArrayOutputStream sourceData1 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream bData1 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream sourceData2 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream bData2 = new ByteArrayOutputStream();
|
|
try {
|
|
sourceData1.write(mberNo.getBytes());
|
|
byte sourceDataByte1[] = sourceData1.toByteArray();
|
|
bData1.write(terminalId.getBytes());
|
|
bData1.write(tranSerialNo.getBytes());
|
|
byte bDataByte1[] = bData1.toByteArray();
|
|
byte[] seedCbcEncryptData1 = KISA_SEED_CBC.SEED_CBC_Encrypt(pbszUserKey, sourceDataByte1, bDataByte1, 0, 16);
|
|
String hexString = byteArrayToHexString(seedCbcEncryptData1, 0, 32);
|
|
String trackData = mberNo1+hexString;
|
|
result.put("trackData", trackData);
|
|
logger.info("trackData::" + trackData);
|
|
|
|
if("TP".equals(ccmpKnd)){
|
|
sourceData2.write(secureNo.getBytes());
|
|
sourceData2.write(niNo.getBytes());
|
|
sourceData2.write(fByte);
|
|
byte sourceData2Byte[] = sourceData2.toByteArray();
|
|
bData2.write(carNo.getBytes());
|
|
bData2.write(mberNoSub.getBytes());
|
|
byte bData2Byte[] = bData2.toByteArray();
|
|
byte[] seedCbcEncryptData2 = KISA_SEED_CBC.SEED_CBC_Encrypt(pbszUserKey, sourceData2Byte, bData2Byte, 0, 16);
|
|
String hexString2 = byteArrayToHexString(seedCbcEncryptData2, 0, 32);
|
|
result.put("authInfo", hexString2);
|
|
logger.info("hexString2::" + hexString2);
|
|
}
|
|
|
|
result.put("rsMsg", "success");
|
|
result.put("rsCd", "01");
|
|
} catch (RuntimeException re) {
|
|
logger.error("[RuntimeException::" + "" + "]", re);
|
|
result.put("rsMsg", "시스템 처리 오류");
|
|
result.put("rsCd", "02");
|
|
} catch (IOException re) {
|
|
logger.error("[IOException::" + "" + "]", re);
|
|
result.put("rsMsg", "시스템 스트림처리 오류");
|
|
result.put("rsCd", "02");
|
|
} catch (Exception e) {
|
|
logger.error("[process error::" + "" + "]", e);
|
|
result.put("rsMsg", "시스템 오류");
|
|
result.put("rsCd", "02");
|
|
} finally {
|
|
try {
|
|
if (sourceData1 != null) sourceData1.close();
|
|
if (bData1 != null) bData1.close();
|
|
if (sourceData2 != null) sourceData2.close();
|
|
if (bData2 != null) bData2.close();
|
|
} catch (IOException io) {
|
|
logger.error("[process error::" + "" + "]", io);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private byte[] hexStringToByteArray(String s) {
|
|
int len = s.length();
|
|
byte[] data = new byte[len / 2];
|
|
for (int i = 0; i < len; i += 2) {
|
|
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
|
|
+ Character.digit(s.charAt(i + 1), 16));
|
|
}
|
|
return data;
|
|
}
|
|
|
|
private String byteArrayToHexString(byte[] bytes, int offset, int length) {
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
for (byte b : bytes) {
|
|
|
|
sb.append(String.format("%02X", b & 0xff));
|
|
}
|
|
|
|
return sb.toString().substring(offset, length);
|
|
}
|
|
|
|
private String padRightSpace(String str, int num) {
|
|
return String.format("%1$-" + num + "s", str).replace(' ', ' ');
|
|
}
|
|
|
|
private String padLeftSpace(String inputString, int length) {
|
|
if (inputString.length() >= length) {
|
|
return inputString;
|
|
}
|
|
StringBuilder sb = new StringBuilder();
|
|
while (sb.length() < length - inputString.length()) {
|
|
sb.append(' ');
|
|
}
|
|
sb.append(inputString);
|
|
|
|
return sb.toString();
|
|
}
|
|
|
|
private void print_hex(String valName, byte[] data, int dataLen) {
|
|
int i = 0;
|
|
|
|
//System.out.printf("%s [%dbyte] :", valName, dataLen);
|
|
for (i = 0; i < dataLen; i++) {
|
|
if ((i & 0x0F) == 0)
|
|
logger.info("");
|
|
|
|
//System.out.printf(" %02X", data[i]);
|
|
}
|
|
logger.info("");
|
|
}
|
|
|
|
public List<Map> getPaymentMngCd() {
|
|
return paymentMapper.getPaymentMngCd();
|
|
}
|
|
|
|
public List<Map> getPaymentCd(Map params) {
|
|
return paymentMapper.getPaymentCd(params);
|
|
}
|
|
|
|
public Map getPaymentInfo(String userNo) {
|
|
return paymentMapper.getPaymentInfo(userNo);
|
|
}
|
|
|
|
public Map checkNormalAcctNo(Map param) {
|
|
Map result;
|
|
|
|
String url = env.getProperty("Globals.PreRegistPayment.acctnmRcms");
|
|
String secrKey = env.getProperty("Globals.PreRegistPayment.secrKey");
|
|
String key = env.getProperty("Globals.PreRegistPayment.key");
|
|
|
|
String trscSeqNo = paymentMapper.getTrscSeqNo();
|
|
String bankCd = (String) param.get("bankCd");
|
|
String searchAcctNo = (String) param.get("acctNo");
|
|
String niNo1 = (String) param.get("niNo1");
|
|
|
|
JSONObject jsonData = new JSONObject();
|
|
jsonData.put("SECR_KEY", secrKey);
|
|
jsonData.put("KEY", key);
|
|
JSONArray reqDatas = new JSONArray();
|
|
JSONObject reqData = new JSONObject();
|
|
reqData.put("BANK_CD", bankCd);
|
|
reqData.put("SEARCH_ACCT_NO", searchAcctNo);
|
|
reqData.put("ACNM_NO", niNo1);
|
|
reqData.put("ICHE_AMT", "0");
|
|
reqData.put("TRSC_SEQ_NO", trscSeqNo);
|
|
reqDatas.add(reqData);
|
|
jsonData.put("REQ_DATA", reqDatas);
|
|
|
|
logger.info("jsonData::" + jsonData);
|
|
result = requestAcctNmRcms(url, jsonData);
|
|
|
|
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
|
result.put("reqDt", now);
|
|
result.put("TRSC_SEQ_NO", trscSeqNo);
|
|
result.put("BANK_CD", bankCd);
|
|
result.put("BANK_NM", param.get("bankNm"));
|
|
result.put("ACNUT_NO", searchAcctNo);
|
|
result.put("BSNM_REGIST_NO", param.get("bsnmRegistNo"));
|
|
result.put("NI_NO1", niNo1);
|
|
if (result.get("ACCT_NM") != null) {
|
|
result.put("ACCT_NM", result.get("ACCT_NM"));
|
|
}
|
|
result.put("rspnsCode", result.get("rspnsCode"));
|
|
result.put("rspnsMssage", result.get("rspnsMssage"));
|
|
logger.info("result::" + result);
|
|
|
|
return result;
|
|
}
|
|
|
|
public Map requestAcctNmRcms(String requestURL,
|
|
//Map param
|
|
JSONObject jsonData
|
|
) {
|
|
Map result = new HashMap();
|
|
try {
|
|
//CloseableHttpClient client = HttpClients.createDefault();
|
|
RequestConfig defaultRequestConfig = RequestConfig.custom()
|
|
.setSocketTimeout(10000)
|
|
.setConnectTimeout(10000)
|
|
.setConnectionRequestTimeout(10000)
|
|
.setStaleConnectionCheckEnabled(true)
|
|
.build();
|
|
CloseableHttpClient client = HttpClients.custom()
|
|
.setDefaultRequestConfig(defaultRequestConfig)
|
|
.build();
|
|
try {
|
|
HttpPost postRequest = new HttpPost(requestURL); //POST 메소드 URL 새성
|
|
postRequest.setHeader("Accept", "application/json");
|
|
|
|
List<NameValuePair> params = new ArrayList<>();
|
|
params.add(new BasicNameValuePair("JSONData", jsonData.toString()));
|
|
|
|
postRequest.setEntity(new UrlEncodedFormEntity(params));
|
|
HttpResponse response = client.execute(postRequest);
|
|
//Response 출력
|
|
if (response.getStatusLine().getStatusCode() == 200) {
|
|
ResponseHandler<String> handler = new BasicResponseHandler();
|
|
String body = handler.handleResponse(response);
|
|
body = body.replaceAll("\r\n", "");
|
|
body = body.replaceAll("\r", "");
|
|
body = body.replaceAll("\n", "");
|
|
JSONParser parser = new JSONParser();
|
|
Object obj = parser.parse(body.trim());
|
|
JSONObject jsonObj = (JSONObject) obj;
|
|
JSONArray data = (JSONArray) jsonObj.get("RESP_DATA");
|
|
logger.info(body.trim());
|
|
if (jsonObj.get("RSLT_CD").equals("000")) {
|
|
JSONObject respData = (JSONObject) data.get(0);
|
|
result.put("ACCT_NM", respData.get("ACCT_NM"));
|
|
result.put("TRSC_SEQ_NO", respData.get("TRSC_SEQ_NO"));
|
|
result.put("rspnsCode", jsonObj.get("RSLT_CD"));
|
|
result.put("rspnsMssage", jsonObj.get("RSLT_MSG"));
|
|
} else {
|
|
result.put("rspnsResult", "E");
|
|
//result.put("rspnsCode", jsonObj.get("RSLT_CD"));
|
|
result.put("rspnsCode", jsonObj.get("RSLT_CD"));
|
|
result.put("rspnsMssage", jsonObj.get("RSLT_MSG"));
|
|
}
|
|
|
|
} else {
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", "response is error");
|
|
}
|
|
} catch (RuntimeException re) {
|
|
logger.error("[RuntimeException::" + "" + "]", re);
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", "시스템 오류가 발생하였습니다.");
|
|
} catch (Exception e) {
|
|
result.put("rspnsResult", "E");
|
|
result.put("rspnsCode", "9999");
|
|
result.put("rspnsMssage", "연결 오류가 발생하였습니다.");
|
|
} finally {
|
|
try {
|
|
client.close();
|
|
} catch (IOException io) {
|
|
logger.error("[process error::" + "" + "]", io);
|
|
}
|
|
|
|
}
|
|
} catch (RuntimeException re) {
|
|
logger.error("[RuntimeException::" + "" + "]", re);
|
|
} catch (Exception e) {
|
|
logger.error("[process error::" + "" + "]", e);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public List<Map> getBankCd(Map params) throws SQLException {
|
|
return paymentMapper.getBankCd(params);
|
|
}
|
|
|
|
public void insertAcctHist(Map acctHistData) throws SQLException {
|
|
paymentMapper.insertAcctHist(acctHistData);
|
|
}
|
|
|
|
public int insertAcctInfoComplete(List acctHistData) throws SQLException {
|
|
return paymentMapper.insertAcctInfoComplete(acctHistData);
|
|
}
|
|
}
|