결제 - 키움결제 적용 2차

This commit is contained in:
이경숙
2026-03-30 18:35:06 +09:00
parent 8fd58d80b0
commit 63b675f435
4 changed files with 75 additions and 12 deletions

View File

@@ -5492,8 +5492,12 @@ public class BOOrdrService{
================================================== */
// todo :: api 연결이 아닌 db셀렉트로 변경.
DataMap kiwoomPayMap = mapper.selectKiwoomPgApiLog(payVO);//payService.insertTossPayKeyin(payVO);
log.info("insertKiwoomSetle service kiwoomPayMap ::: {}", kiwoomPayMap);
if (!CollectionUtils.isEmpty(kiwoomPayMap)) {
String response = StringUtil.isNullToString(kiwoomPayMap.get("rsltParam"));
log.info("insertKiwoomSetle service kiwoomPayMap_response ::: {}", response);
Map<String, Object> resultMap = new ObjectMapper().readValue(response, Map.class);
if (!CollectionUtils.isEmpty(resultMap)) {
@@ -5505,7 +5509,7 @@ public class BOOrdrService{
orderPgLogVO.setConfmDt(selectDateFormat(StringUtil.isNullToString(resultMap.get("SETTDATE")))); // 승인일시
orderPgLogVO.setApvlnb(StringUtil.isNullToString(resultMap.get("AUTHNO"))); //승인번호
orderPgLogVO.setCardCmpnyCd(StringUtil.isNullToString(resultMap.get("CARDCODE"))); //카드사코드
orderPgLogVO.setCardCmpnyNm(StringUtil.isNullToString(bOMaComncdService.selectBOCommcdDetail("TOSS_CARD_CD",orderPgLogVO.getCardCmpnyCd()))); //카드사명
orderPgLogVO.setCardCmpnyNm(StringUtil.isNullToString(bOMaComncdService.selectBOCommcdDetail("KIWOOM_CARD_CD",orderPgLogVO.getCardCmpnyCd()))); //카드사명
orderPgLogVO.setNintrAt((boolean) resultMap.get("NOINTFLAG") ? "Y" : "N"); //무이자여부
orderPgLogVO.setInstlmtMtCnt(resultMap.get("INSTALL") != null ? Integer.parseInt(resultMap.get("INSTALL").toString()):0); //할부개월수
@@ -5528,10 +5532,14 @@ public class BOOrdrService{
orderSetleVO.setCredtcardApvlnb(orderPgLogVO.getApvlnb());
orderSetleVO.setSetleTyCd(payVO.getSetleTyCd());
//orderSetleVO.setSetleMid(StringUtil.isNullToString(mapper.selectBOSopSetleMidKeyInqire(payVO))); // 쇼핑몰 결제 MID(상점키) 조회
orderSetleVO.setSetleMid("CFO20585"); //todo : paylink 관련 정리 후 db형으로 바꿈
orderSetleVO.setSetleMid("CTS18056"); //todo : paylink 관련 정리 후 db형으로 바꿈
log.info("insertKiwoomSetle service kiwoomPayMap_orderSetleVO ::: {}", orderSetleVO);
purchsMapper.updateOrderSetle(orderSetleVO);
log.info("insertKiwoomSetle service kiwoomPayMap_orderSetleVO end::: ");
content.put("status", "0");
content.put("message", "키움 결제 정보 등록을 완료 하였습니다.");
}

View File

@@ -32,6 +32,7 @@ import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOCrmDlvylcVO;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOSpbkVO;
import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService;
import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO;
import com.wb.domainserver.domain.gcone.promtn.coupon.service.BOCouponService;
import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService;
@@ -133,6 +134,8 @@ public class OrdrController {
private BOPurchsService boPurchsService;
@Autowired
private BOSubsvcService subsvcService;
@Autowired
private BOPayService payService;
/* ####################################
사용자 > 상품 > 구매/결제 > 회원구매하기 시작
@@ -1382,6 +1385,51 @@ public class OrdrController {
}
/**
* 키움 결제 연계 전 getEnc 값 받아오기
* @return PayKiwoomSucsC.jsp
* @author 이경숙
*/
@Policy(AuthPolicy.RESTRICTED)
@ResponseBody
@RequestMapping(value="/kiwoomPayGetEnc")
public Map<String, Object> selectKiwoomGetEnc(HttpServletRequest request) throws Exception {
BOPayVO payVO = new BOPayVO();
log.debug("kiwoomPayGetEnc = {}");
//String eucKrStr = new String(utf8Str.getBytes("UTF-8"), "EUC-KR");
//String utf8Str = new String(eucKrStr.getBytes("EUC-KR"), "UTF-8");
//request.setCharacterEncoding("EUC-KR");
payVO.setCpId(request.getParameter("CPID"));
payVO.setPayMethod(request.getParameter("PAYMETHOD"));
payVO.setOrderId(request.getParameter("ORDERNO"));
payVO.setType(request.getParameter("TYPE"));
payVO.setAmount(request.getParameter("AMOUNT"));
Map<String, Object> message;
String sopmalCd = payVO.getSopmalCd();
try {
message = payService.insertKiwoomPay(payVO);
} catch (Exception e) {
message = new HashMap<>() {{
put("response", "결제를 실패하였습니다.\n관리자에게 문의하시기 바랍니다.");
}};
}
log.info("insertKiwoomPay step5 ::: {}", message.get("KIWOOM_ENC"));
//model.addAttribute("message", message);
//return "sopmal/ordr/PayKiwoomSucsC";
return message;
}
/**
* 사용자 > 상품 > 구매/결제 > 회원구매하기 > 키움 결제 정보 등록
* @param model
@@ -1403,6 +1451,8 @@ public class OrdrController {
payVO.setSetleTyCd(request.getParameter("setleTyCd"));
payVO.setSetlerNm(request.getParameter("ordrrNm"));
log.info("insertKiwoomSetle controller payVO ::: {}", payVO);
String agentId = "";
String jSesionId = "";
String ipAdres = "";
@@ -1443,6 +1493,9 @@ public class OrdrController {
try {
content = service.insertKiwoomSetle(payVO);
log.info("insertKiwoomSetle controller content ::: {}", content);
} catch (WnbtRestException wre) {
log.info("insertKiwoomSetle : 키움 결제 정보 등록 : 실패 WnbtRestException");
log.error(wre.getMessage(), wre);

View File

@@ -53,7 +53,7 @@
const gcpayCardUseAt = $('#gcpayCardUseAt').val();
let gcpayAt = ( gcpayCardUseAt === 'Y')? 'Y' : 'N';
const setleTy = $('#setleSetupTyCd').val();
const setleTyCd = '#pg04';
let setleTyCd = '#pg04';
if(setleTy==='01')setleTyCd = '#pg04'; //kcp
else if(setleTy==='02')setleTyCd = '#pg03'; //toss
else if(setleTy==='03')setleTyCd = '#pg06'; //kiwoom
@@ -537,7 +537,7 @@
$('.order-method-normal__btn').removeClass('active');
$(form).find('#pgCmpnyNm').val(pgCmpnyNm);
if ('pg01' === id || 'pg02' === id) {
if ('pg01' === id || 'pg02' === id) { //GC페이
if ('pg02' === id) {
$('#gc-pay-bank-cash-receipt').prop('checked', true).trigger("click");
@@ -557,7 +557,7 @@
$(form).find('#setleTyCd').val('pg01' === id ? '01' : '03');
$('.bankSlideW, .cardSlideW').slick('setPosition');
} else if('pg05' === id){
} else if('pg05' === id){ //퀵계좌이체
$('#transfer-cash-receipt').prop('checked', true).trigger("click");
$(form).find('#transfer-cash-receipt').on('click', function () {
@@ -2998,7 +2998,7 @@
return false;
}
if ('kcp' === pgCmpnyNm || 'toss' === pgCmpnyNm) {
if ('kcp' === pgCmpnyNm || 'toss' === pgCmpnyNm || 'kiwoom' === pgCmpnyNm) {
const div = $('#setleForm').find('.order-method-normal');
if (!$(div).find('.order-method-normal__btn-container button').hasClass('active')) {
@@ -3093,7 +3093,7 @@
$('#setleForm').find('#pgCmpnyNm').val(pgCmpnyNm);
$('#setleForm').find('#setleTyCd').val(setleTyCd);
} else {
} else { //gc페이
if ('01' === setleTyCd) { // 카드
const index = $('.cardSlideW').slick('slickCurrentSlide');
const curCardId = $('#gcCardId' + index).val();
@@ -4660,7 +4660,7 @@
</div>
</div>
</c:if>
<%-- kcp 결제 종료 --%>
<%-- 키움 결제 종료 --%>
</div>
</form>
</div>

View File

@@ -30,6 +30,8 @@
<script type="text/javascript" language="javascript">
$(document).ready(function() {
var pf = document.payForm;
const orderForm = $('#order_info');
const setleTyCd = orderForm.find('.setleTyCd').val();
const setleAmt = orderForm.find('.setleAmt').val();
@@ -63,7 +65,7 @@
});
var pf;
function init() {
pf = document.payForm;
@@ -80,7 +82,7 @@
var TYPE = pf.TYPE.value;
var AMOUNT = pf.AMOUNT.value;
const url = '<c:url value="/sopmal/pay/kiwoomPayGetEnc"/>';
const url = '<c:url value="/sopmal/ordr/kiwoomPayGetEnc"/>';
// AJAX로 kiwoom_ENC 값 요청
$.ajax({
@@ -187,11 +189,11 @@
<input type="hidden" name="KIWOOM_ENC" value=""/> <!-- 보안 기능 -->
<input type="hidden" name="TYPE" value="P"/> <!-- 결제방식(P:PC/M:모바일/W:웹뷰) -->
<input type="hidden" name="CPID" value="CFO20585"/> <!-- 상점아이디 CFO20585,CFO20586-->
<input type="hidden" name="CPID" value="CTS18056"/> <!-- 상점아이디 개발:CTS18056 / 운영:CFO20585,CFO20586-->
<input type="hidden" name="PAYMETHOD" value="CARD"/> <!-- 결제수단 (CARD:카드/NAVERPAY:네이버페이)-->
<input type="hidden" name="ORDERNO" value="${data.setle.ordrInnb}"/> <!-- 주문번호 -->
<input type="hidden" name="AMOUNT" value="${data.setle.setleAmt}" /><!-- 결제금액 -->
<input type="hidden" name="AMOUNT" value="${data.setle.wonSetleAmt}" /><!-- 결제금액 -->
<input type="hidden" name="PRODUCTNAME" value="${data.setle.goodsNm}" /><!-- 상품명 -->
<input type="hidden" name="USERID" value="${data.ordr.mbrId}" /> <!-- 고객 ID -->
<input type="hidden" name="HOMEURL" value="" /> <!-- 결제 성공 후, 이동할 URL(결제 창에서 이동) -->