From 87efc0362e121f33898c07d9c78f4e910d2dd0ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Fri, 27 Mar 2026 15:31:02 +0900 Subject: [PATCH 01/97] =?UTF-8?q?fix=20:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=A0=95=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mybatis/xml/mapper/gcone/mbr/mbr/BOMbrMapper.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/resources/mybatis/xml/mapper/gcone/mbr/mbr/BOMbrMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/mbr/mbr/BOMbrMapper.xml index 1a693192..aa50408c 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/mbr/mbr/BOMbrMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/mbr/mbr/BOMbrMapper.xml @@ -3671,9 +3671,11 @@ AND GMP.SOPMAL_CD = #{sopmalCd} LEFT JOIN GC_MEMBER_GRAD MG ON GMP.MBR_GRAD_INNB = MG.MBR_GRAD_INNB AND GMP.SOPMAL_CD = MG.SOPMAL_CD + AND MG.USE_AT = 'Y' LEFT JOIN GC_MEMBER_GRAD MG_NEXT ON MG.MBR_GRAD_ORDR + 1 = MG_NEXT.MBR_GRAD_ORDR AND MG.SOPMAL_CD = MG_NEXT.SOPMAL_CD + AND MG_NEXT.USE_AT = 'Y' LEFT JOIN GC_ORDER O ON MBR.MBR_DV_CD = O.MBR_DV_CD AND MBR.MBR_INNB = O.MBR_INNB AND O.USE_AT = 'Y' From 8573a3e7a41aeccdbf514c96245fdc9a234e1e56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EA=B2=BD=EC=88=99?= Date: Fri, 27 Mar 2026 18:34:29 +0900 Subject: [PATCH 02/97] =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20-=20=ED=82=A4?= =?UTF-8?q?=EC=9B=80=EA=B2=B0=EC=A0=9C=20=EC=A0=81=EC=9A=A9=201=EC=B0=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gcone/ordr/ordr/mapper/BOOrdrMapper.java | 9 + .../ordr/ordr/service/BOOrdrLogService.java | 12 +- .../ordr/ordr/service/BOOrdrService.java | 665 +++++------------- .../ordr/controller/OrdrApiController.java | 146 +++- .../ordr/controller/OrdrController.java | 112 ++- .../sopmal/ordr/controller/PayController.java | 92 --- .../mapper/gcone/ordr/ordr/BOOrdrMapper.xml | 10 + .../WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp | 232 +++++- .../views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp | 79 +-- 9 files changed, 722 insertions(+), 635 deletions(-) diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/mapper/BOOrdrMapper.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/mapper/BOOrdrMapper.java index ea6f6cc2..bf995d92 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/mapper/BOOrdrMapper.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/mapper/BOOrdrMapper.java @@ -1015,6 +1015,15 @@ public interface BOOrdrMapper { * @param refundVO */ public Integer selectSubsvcRefundAmt(BOOrdrRefundVO refundVO); + + + + /** + * 키움결제 GC_ORDER_PG_API_LOG 결과 조회 + * @param payVO + * @return List + */ + public DataMap selectKiwoomPgApiLog(BOPayVO payVO); } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrLogService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrLogService.java index 27fa7acc..2b26131d 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrLogService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrLogService.java @@ -191,7 +191,11 @@ public class BOOrdrLogService { pgResult = false; } else { - if ("kcp".equals(payVO.getPgCmpnyNm())) { + if("kiwoom".equals(payVO.getPgCmpnyNm())) { + resCd = "0000"; + message = "결제 승인 성공"; + //결제실패에 대한 응답은 없음 + } else if ("kcp".equals(payVO.getPgCmpnyNm())) { resCd = StringUtil.isNullToString(resultMap.get("res_cd")); message = StringUtil.isNullToString(resultMap.get("res_msg")); @@ -227,7 +231,7 @@ public class BOOrdrLogService { String logDtlCn = ""; String operNm = ""; String dvCd = payVO.getDvCd(); - String setleTyCd = payVO.getSetleTyCd(); + //String setleTyCd = payVO.getSetleTyCd(); if ("02".equals(dvCd)) { // 관리자 주문 String mbrNm = ""; if (payVO.getMbrNm() != null) { @@ -311,7 +315,7 @@ public class BOOrdrLogService { /** * 주문 로그 단순 등록 - * @param pgApiLogVO + * @param logVO */ @Transactional(propagation = Propagation.REQUIRES_NEW) public void insertBOOrderLogRegist(BOOrderLogVO logVO, boolean result, String message) { @@ -336,7 +340,7 @@ public class BOOrdrLogService { /** * 주문 종기능 로그 등록 - * @param pgApiLogVO + * @param bellVO */ @Transactional(propagation = Propagation.REQUIRES_NEW) public void insertBOOrderBellLogRegist(BOOrderLogVO bellVO) { diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java index 38f04039..c7f409b8 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java @@ -120,18 +120,12 @@ public class BOOrdrService{ @Autowired private BOSiteService boSiteService; - @Autowired - private BOGoodsService boGoodsService; - @Autowired private BOMssageService mssageService; @Autowired private BOMbrMapper mbrMapper; - @Autowired - private BOMaMtngMapper mtmgMapper; - @Autowired private BOSelngprufService selngprufService; @@ -150,13 +144,10 @@ public class BOOrdrService{ @Autowired private BOSubsvcService subsvcService; - @Autowired - private PropertyService propertyService; - /** * 주문 전체 목록 조회 - * @param vo(mbrInnb) + * @param ordrSrchVO * @return List */ public Map> selectBOAllOrdrListInqire(BOOrdrSrchVO ordrSrchVO) { @@ -169,7 +160,6 @@ public class BOOrdrService{ && ordrSrchVO.getSrchOrdrSttusCds().length > 0) { for(String srchOrdrSttusCd : ordrSrchVO.getSrchOrdrSttusCds()){ ordrSrchVO.setSrchOrdrSttusCd(srchOrdrSttusCd); - //resultMap.put("resultList"+ordrSrchVO.getSrchOrdrSttusCd(),mapper.selectBOAllOrdrListInqire(ordrSrchVO)); } } log.debug("resultMap : {}", resultMap); @@ -178,7 +168,7 @@ public class BOOrdrService{ /** * 기본배송지 유무 조회 - * @param crmDlvylcVO + * @param map * @return Map */ public String selectBOdftDlvylcAt(DataMap map){ @@ -197,12 +187,7 @@ public class BOOrdrService{ try { // 기존 기본배송지 N 처리 mapper.updateBODftDlvylcAt(crmDlvylcVO); - // 기본배송지 수정 - /*int result = mapper.updateBOdftDlvylcAtUpdt(crmDlvylcVO); - // 배송지 등록 결과 massage에 담음 - if (result > 0) { - message.put("result", "자주쓰는 배송지 등록 성공"); - }*/ + } catch (WnbtRestException wre){ throw new WnbtRestException(wre.getMessage()); } catch (Exception e){ @@ -213,7 +198,7 @@ public class BOOrdrService{ /** * 기본 배송지 설정 - * @param BOCrmDlvylcVO + * @param crmDlvylcVO */ public Map updateBODftDlvylcAtYset(BOCrmDlvylcVO crmDlvylcVO){ Map message = new HashMap<>(); @@ -248,7 +233,7 @@ public class BOOrdrService{ /** * 최근 배송지 목록 조회 - * @param BOCrmDlvylcVO + * @param crmDlvylcVO * @return List */ public List selectBORecentDlvylcListInqire(BOCrmDlvylcVO crmDlvylcVO) { @@ -266,7 +251,7 @@ public class BOOrdrService{ /** * 회원 자주쓰는 배송지 상세 조회 - * @param vo(adbkInnb) + * @param crmDlvylcVO * @return BOCrmDlvylcVO */ public BOCrmDlvylcVO selectBODlvylcUpdtPopupForm(BOCrmDlvylcVO crmDlvylcVO) { @@ -283,7 +268,7 @@ public class BOOrdrService{ /** * 자주쓰는 배송지 등록 - * @param BOCrmDlvylcVO + * @param crmDlvylcVO * @return Integer */ public Map insertBODlvylcRegist(BOCrmDlvylcVO crmDlvylcVO) { @@ -302,7 +287,7 @@ public class BOOrdrService{ /** * 자주쓰는 배송지 삭제 - * @param BOCrmDlvylcVO + * @param crmDlvylcVO * @return Map */ public Map deleteBODlvylc(BOCrmDlvylcVO crmDlvylcVO) { @@ -320,7 +305,7 @@ public class BOOrdrService{ } /** * 자주쓰는 배송지 수정 - * @param BOCrmDlvylcVO + * @param crmDlvylcVO * @return Map */ public Map updateBODlvylc(BOCrmDlvylcVO crmDlvylcVO) { @@ -338,7 +323,7 @@ public class BOOrdrService{ } /** * 기본 배송지 체크 시 다른 배송지 N으로 수정 - * @param BOCrmDlvylcVO + * @param crmDlvylc */ public void updateBODftDlvylcAt(BOCrmDlvylcVO crmDlvylc) { mapper.updateBODftDlvylcAt(crmDlvylc); @@ -569,33 +554,6 @@ public class BOOrdrService{ // 주문 상태 업데이트 orderCommService.commonOrderSttusCdUpdt(orderVO, currOrdrSttusCd); -// try { -// orderCommService.commonOrderSttusCdUpdt(orderVO, currOrdrSttusCd); -// } catch(Exception e) { -// -// } - -// purchsMapper.updateOrdrSttusCdByFmOrder(orderVO); // FM_ORDER 주문 상태 수정 -// -// purchsMapper.updateOrdrSttusCdByFmOrderItemOption(orderVO); // FM_ORDER_ITEM_OPTION 주문 상태 수정 -// -// purchsMapper.updateOrdrSttusCdByFmOrderShipping(orderVO); // FM_ORDER_SHIPPING 주문 상태 수정 - - -// if (StringUtils.hasText(currOrdrSttusCd) && StringUtils.hasText(ordrSttusCd)) { -// if (Integer.parseInt(currOrdrSttusCd) > Integer.parseInt(ordrSttusCd) || "95".equals(ordrSttusCd)) { -//// BOOrderLogVO logVO = new BOOrderLogVO(); -// -// logVO.setOrdrInnb(new BigInteger(ordrInnb)); -// logVO.setSopmalCd(ordrVO.getSopmalCd()); -// logVO.setLogDvCd("01"); -// logVO.setDvCd("02"); -// logVO.setLogSj("되돌리기 [" + currOrdrSttusCdNm + " => " + ordrSttusCdNm + "]"); -// -// purchsMapper.insertOrderLog(logVO); -// } -// } - if ("25".equals(ordrSttusCd)) { purchsMapper.updateOrderSetleComptAt(orderVO); } @@ -858,22 +816,6 @@ public class BOOrdrService{ * @return DataMap */ public Map selectBOSetleCanclRefndRegist(BOOrdrVO ordrVO) { - /* - DataMap ordrDtl = mapper.selectOrdrDtl(ordrVO); - - List ordrGoodsList = mapper.selectCanclPaymentGoodsList(ordrVO); - - int totOrdrQy = ordrGoodsList.stream().mapToInt(obj -> (int) obj.get("ordrQy")).sum(); - - DataMap content = new DataMap() {{ - put("ordrDtl", ordrDtl); - put("ordrGoodsList", ordrGoodsList); - put("totOrdrQy", totOrdrQy); - }}; - return content; - */ - - Map content = new HashMap<>(); BOOrdrDlvyVO ordrDlvyVO = new BOOrdrDlvyVO(); @@ -905,7 +847,7 @@ public class BOOrdrService{ log.debug("여러곳 배송 환불 상품 목록 : {}", shippingList); - List returnResnList = mapper.selectReturnResnList(ordrDlvyVO); + //List returnResnList = mapper.selectReturnResnList(ordrDlvyVO); // 공통코드 호출 BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); @@ -1031,7 +973,7 @@ public class BOOrdrService{ /** * 관리자 > 주문 > 주문 로그 등록 - * @param BOOrderLogVO + * @param logVO * @return void */ public void updateDlvylcInfoLogRegist(BOOrderLogVO logVO) { @@ -2833,8 +2775,6 @@ public class BOOrdrService{ spbkVO.setMbrId(ordrVO.getMbrId()); - - //구매하기 상품 조회 spbkVO.setCartDvCd("02"); List goodsList02 = mapper.selectSpbkGoodsList(spbkVO); @@ -3424,10 +3364,6 @@ public class BOOrdrService{ LinkedHashMap shippingMap = (LinkedHashMap) param.get("shipping"); -// String ordrAdressZip = StringUtil.isNullToString(param.get("dlvylcZip")); -// String dlvylcAreaCd = (String) param.get("dlvylcAreaCd"); -// String prefcd = (String) param.get("prefcd"); - String ordrAdressZip = StringUtil.isNullToString(shippingMap != null ? shippingMap.get("dlvylcZip") : ""); String dlvylcAreaCd = StringUtil.isNullToString(shippingMap != null ? shippingMap.get("dlvylcAreaCd") : ""); String prefcd = StringUtil.isNullToString(shippingMap != null ? shippingMap.get("prefcd") : ""); @@ -3861,6 +3797,11 @@ public class BOOrdrService{ return orderService.insertMngrOrdrRegist(param, MemberJwtContextHolder.getMemberInfo()); } + + /* =============================================== + 무통장 결제 정보 등록 + ================================================== */ + /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 무통장 결제 정보 등록 * @param payVO @@ -3930,55 +3871,6 @@ public class BOOrdrService{ purchsMapper.updateOrderSetleNoBank(orderSetleVO); -// purchsMapper.updateOrdrSttusCdByFmOrder(orderVO); // FM_ORDER 주문 상태 수정 -// -// purchsMapper.updateOrdrSttusCdByFmOrderItemOption(orderVO); // FM_ORDER_ITEM_OPTION 주문 상태 수정 -// -// purchsMapper.updateOrdrSttusCdByFmOrderShipping(orderVO); // FM_ORDER_SHIPPING 주문 상태 수정 -// -// -// // 2. 쿠폰 사용 처리 =============================================================== -// try { -// BODwldCouponVO dwldCouponVO = new BODwldCouponVO(); -// dwldCouponVO.setSopmalCd(payVO.getSopmalCd()); -// dwldCouponVO.setOrdrInnb(payVO.getOrderId()); -// couponService.updateBOUseCouponProcs(dwldCouponVO); -// } catch (Exception e) { -// log.debug("사용 쿠폰 처리 실패", e.getMessage()); -// throw new WnbtRestException("쿠폰 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// -// // 3.사용 마일리지 조회 및 할인 차감 ================================================= -// BOMlgVO mlgVO = purchsMapper.selectOrdrMlgUse(orderVO); -// if (mlgVO != null) { -// BigDecimal accmlmnyAmt = mlgVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOMlgUse(mlgVO); -// } catch (Exception e) { -// log.debug("사용 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("마일리지 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } -// -// // 4. (2025-06-20 CJH 추가) 사용 GC 머니 차감 ================================================= -// BOCashVO cashVO = purchsMapper.selectOrdrCashMlgUse(payVO); -// log.debug("캐쉬 VO : {}", cashVO); -// if (cashVO != null) { -// BigDecimal accmlmnyAmt = cashVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOCashUse(cashVO); // 사용 마일리지 할인 차감 -// } catch (Exception e) { -// log.debug("사용 충전형 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("GC 머니 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } - try { selectBOOrdrMssageSndngProcs(orderVO); } catch (Exception e) { @@ -4002,6 +3894,11 @@ public class BOOrdrService{ return content; } + + /* =============================================== + KCP 결제 정보 등록 + ================================================== */ + /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > KCP 거래등록 정보 조회 * @param param @@ -4065,63 +3962,15 @@ public class BOOrdrService{ orderVO.setOrdrSttusCd("25"); // 주문상태코드(25:결제확인) } -// // 1-1. FM_ORDER 주문 상태 수정 ================================================== -// purchsMapper.updateOrdrSttusCdByFmOrder(orderVO); -// // 1-2. FM_ORDER_ITEM_OPTION 주문 상태 수정 ===================================== -// purchsMapper.updateOrdrSttusCdByFmOrderItemOption(orderVO); -// // 1-3. FM_ORDER_SHIPPING 주문 상태 수정 ======================================== -// purchsMapper.updateOrdrSttusCdByFmOrderShipping(orderVO); } // 주문 공통 전처리 ( 상태체크, 상태변경, 마일리지, 쿠폰, GC머니 ) orderCommService.commonOrderPreProcess(payVO, orderVO); -// // 2. 쿠폰 사용 처리 =============================================================== -// try { -// BODwldCouponVO dwldCouponVO = new BODwldCouponVO(); -// dwldCouponVO.setSopmalCd(payVO.getSopmalCd()); -// dwldCouponVO.setOrdrInnb(payVO.getOrderId()); -// couponService.updateBOUseCouponProcs(dwldCouponVO); -// } catch (Exception e) { -// log.debug("사용 쿠폰 처리 실패", e.getMessage()); -// throw new WnbtRestException("쿠폰 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// -// // 3.사용 마일리지 조회 및 할인 차감 ================================================= -// BOMlgVO mlgVO = purchsMapper.selectOrdrMlgUse(orderVO); -// if (mlgVO != null) { -// BigDecimal accmlmnyAmt = mlgVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOMlgUse(mlgVO); -// } catch (Exception e) { -// log.debug("사용 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("마일리지 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } -// -// // 4. (2025-06-20 CJH 추가) 사용 GC 머니 차감 ================================================= -// BOCashVO cashVO = purchsMapper.selectOrdrCashMlgUse(payVO); -// log.debug("캐쉬 VO : {}", cashVO); -// if (cashVO != null) { -// BigDecimal accmlmnyAmt = cashVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOCashUse(cashVO); // 사용 마일리지 할인 차감 -// } catch (Exception e) { -// log.debug("사용 충전형 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("GC 머니 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } - - + /* =============================================== + 결제 API + ================================================== */ Map kcpMap = payService.insertKcpPay(payVO); - - if (!CollectionUtils.isEmpty(kcpMap)) { String response = StringUtil.isNullToString(kcpMap.get("response")); Map resultMap = new ObjectMapper().readValue(response, Map.class); @@ -4142,23 +3991,6 @@ public class BOOrdrService{ orderPgLogVO.setEscwAt(resultMap.get("escw_yn") != null ? resultMap.get("escw_yn").toString() : "N"); orderPgLogVO.setDelngAmt(resultMap.get("amount") != null ? new BigDecimal(resultMap.get("amount").toString()) : BigDecimal.valueOf(0)); - // 금액 검증 - PG사 결제 승인전 하고 있음 - /*BOOrdrVO paramVO = new BOOrdrVO(); - paramVO.setSopmalCd(payVO.getSopMalCd()); - paramVO.setOrdrInnb(payVO.getOrderId()); - DataMap ordrMap = mapper.selectOrdrGoodsDtllTot(paramVO); - if (!CollectionUtils.isEmpty(resultMap)) { - BigDecimal setleAmt = (BigDecimal) ordrMap.get("setleAmt"); - BigDecimal amount = new BigDecimal((String) resultMap.get("amount")); - - if (setleAmt.intValue() == amount.intValue()) { - orderPgLogVO.setDelngAmt(amount); - } else { - insertSetleFailLog(payVO.getSopMalCd(), payVO.getOrderId(), "000", "KCP 결제 실패 [결제 금액 매칭 오류]"); // 결제 실패 로그 등록 - throw new WnbtRestException("KCP 결제 실패 [결제 금액 매칭 오류]"); - } - }*/ - log.debug("orderPgLogVO1===={}",orderPgLogVO); if ("01".equals(payVO.getSetleTyCd()) || "10".equals(payVO.getSetleTyCd())) { //카드/간편결제카드(01), 페이코(10) @@ -4404,6 +4236,10 @@ public class BOOrdrService{ // } + /* =============================================== + TOSS 결제 정보 등록 + ================================================== */ + /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > TOSS 결제 정보 등록 * @param payVO @@ -4459,60 +4295,10 @@ public class BOOrdrService{ // 주문 공통 전처리 ( 상태체크, 상태변경, 마일리지, 쿠폰, GC머니 ) orderCommService.commonOrderPreProcess(payVO, orderVO); -// // 1-1. FM_ORDER 주문 상태 수정 ============================================== -// purchsMapper.updateOrdrSttusCdByFmOrder(orderVO); -// // 1-2. FM_ORDER_ITEM_OPTION 주문 상태 수정 ===================================== -// purchsMapper.updateOrdrSttusCdByFmOrderItemOption(orderVO); -// // 1-3. FM_ORDER_SHIPPING 주문 상태 수정 ======================================== -// purchsMapper.updateOrdrSttusCdByFmOrderShipping(orderVO); -// -// -// // 2. 쿠폰 사용 처리 =============================================================== -// try { -// BODwldCouponVO dwldCouponVO = new BODwldCouponVO(); -// dwldCouponVO.setSopmalCd(payVO.getSopmalCd()); -// dwldCouponVO.setOrdrInnb(payVO.getOrderId()); -// couponService.updateBOUseCouponProcs(dwldCouponVO); -// } catch (Exception e) { -// log.debug("사용 쿠폰 처리 실패", e.getMessage()); -// throw new WnbtRestException("쿠폰 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// -// // 3.사용 마일리지 조회 및 할인 차감 ================================================= -// BOMlgVO mlgVO = purchsMapper.selectOrdrMlgUse(orderVO); -// if (mlgVO != null) { -// BigDecimal accmlmnyAmt = mlgVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOMlgUse(mlgVO); -// } catch (Exception e) { -// log.debug("사용 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("마일리지 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } -// -// // 4. (2025-06-20 CJH 추가) 사용 GC 머니 차감 ================================================= -// BOCashVO cashVO = purchsMapper.selectOrdrCashMlgUse(payVO); -// log.debug("캐쉬 VO : {}", cashVO); -// if (cashVO != null) { -// BigDecimal accmlmnyAmt = cashVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOCashUse(cashVO); // 사용 마일리지 할인 차감 -// } catch (Exception e) { -// log.debug("사용 충전형 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("GC 머니 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } - - + /* =============================================== + 결제 API + ================================================== */ Map tossPayMap = payService.insertTossPay(payVO); - - if (!CollectionUtils.isEmpty(tossPayMap)) { String response = StringUtil.isNullToString(tossPayMap.get("response")); Map resultMap = new ObjectMapper().readValue(response, Map.class); @@ -4550,24 +4336,6 @@ public class BOOrdrService{ orderPgLogVO.setVirtlAcntVrifyKy(StringUtil.isNullToString(rctMap.get("url"))); } - // 금액 검증 - PG사 결제 승인전 하고 있음 - /*BOOrdrVO ordrVO = new BOOrdrVO(); - ordrVO.setSopmalCd(payVO.getSopmalCd()); - ordrVO.setOrdrInnb(payVO.getOrderId()); - DataMap ordrMap = mapper.selectOrdrGoodsDtllTot(ordrVO); - if (!CollectionUtils.isEmpty(resultMap)) { - BigDecimal setleAmt = (BigDecimal) ordrMap.get("setleAmt"); - BigDecimal totalAmount = BigDecimal.valueOf((int) resultMap.get("totalAmount")); - - if (setleAmt.intValue() == totalAmount.intValue()) { - orderPgLogVO.setDelngAmt(totalAmount); - } else { - insertSetleFailLog(payVO.getSopmalCd(), payVO.getOrderId(), "0000", "토스 결제 실패 [결제 금액 매칭 오류]"); // 결제 실패 로그 등록 - - throw new WnbtRestException("토스 결제 실패 [결제 금액 매칭 오류]"); - } - }*/ - if ("01".equals(payVO.getSetleTyCd()) || "10".equals(payVO.getSetleTyCd())) { // 카드(01), 페이코(10) LinkedHashMap cartMap = (LinkedHashMap) resultMap.get("card"); //카드결제(일반카드, 간편결제카드, 간편결제카드+적립식) @@ -4849,6 +4617,9 @@ public class BOOrdrService{ // } + /* =============================================== + TOSSPAY 결제 정보 등록 + ================================================== */ /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > TOSSPAY 결제 정보 등록 @@ -4865,17 +4636,6 @@ public class BOOrdrService{ } - /** - * 주문 후 장바구니 비우기 - * @param orderVO - */ - @Transactional(propagation = Propagation.REQUIRES_NEW) - public void deleteBOCart(BOOrderVO orderVO) throws Exception { - purchsMapper.deleteCart(orderVO); - } - - - /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > TOSSPAY 결제 정보 등록 * @param payVO @@ -4910,62 +4670,11 @@ public class BOOrdrService{ // 주문 공통 전처리 ( 상태체크, 상태변경, 마일리지, 쿠폰, GC머니 ) orderCommService.commonOrderPreProcess(payVO, orderVO); -// -// // 1-1. FM_ORDER 주문 상태 수정 ============================================== -// purchsMapper.updateOrdrSttusCdByFmOrder(orderVO); -// // 1-2. FM_ORDER_ITEM_OPTION 주문 상태 수정 ================================== -// purchsMapper.updateOrdrSttusCdByFmOrderItemOption(orderVO); -// // 1-3. FM_ORDER_SHIPPING 주문 상태 수정 ===================================== -// purchsMapper.updateOrdrSttusCdByFmOrderShipping(orderVO); -// -// // 2. 쿠폰 사용 처리 ========================================================== -// try { -// BODwldCouponVO dwldCouponVO = new BODwldCouponVO(); -// dwldCouponVO.setSopmalCd(payVO.getSopmalCd()); -// dwldCouponVO.setOrdrInnb(payVO.getOrderId()); -// couponService.updateBOUseCouponProcs(dwldCouponVO); -// } catch (Exception e) { -// log.debug("사용 쿠폰 처리 실패", e.getMessage()); -// throw new WnbtRestException("쿠폰 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// -// // 3.사용 마일리지 조회 및 할인 차감 ============================================= -// BOMlgVO mlgVO = purchsMapper.selectOrdrMlgUse(orderVO); -// if (mlgVO != null) { -// BigDecimal accmlmnyAmt = mlgVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOMlgUse(mlgVO); // 사용 마일리지 할인 차감 -// } catch (Exception e) { -// log.debug("사용 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("마일리지 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } -// -// // 4. (2025-06-20 CJH 추가) 사용 GC 머니 차감 ================================================= -// BOCashVO cashVO = purchsMapper.selectOrdrCashMlgUse(payVO); -// log.debug("캐쉬 VO : {}", cashVO); -// if (cashVO != null) { -// BigDecimal accmlmnyAmt = cashVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOCashUse(cashVO); // 사용 마일리지 할인 차감 -// } catch (Exception e) { -// log.debug("사용 충전형 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("GC 머니 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } /* =============================================== 5. 결제 API ================================================== */ Map tossPayMap = payService.insertTossPay(payVO); - - if (!CollectionUtils.isEmpty(tossPayMap)) { String response = StringUtil.isNullToString(tossPayMap.get("response")); Map resultMap = new ObjectMapper().readValue(response, Map.class); @@ -5204,6 +4913,10 @@ public class BOOrdrService{ // } + /* =============================================== + KCP 카드 수기 결제 정보 등록 + ================================================== */ + /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > KCP 카드 수기 결제 정보 등록 * @param payVO @@ -5254,59 +4967,10 @@ public class BOOrdrService{ // 주문 공통 전처리 ( 상태체크, 상태변경, 마일리지, 쿠폰, GC머니 ) orderCommService.commonOrderPreProcess(payVO, orderVO); -// // 1-1. FM_ORDER 주문 상태 수정 ============================================== -// purchsMapper.updateOrdrSttusCdByFmOrder(orderVO); -// // 1-2. FM_ORDER_ITEM_OPTION 주문 상태 수정 ===================================== -// purchsMapper.updateOrdrSttusCdByFmOrderItemOption(orderVO); -// // 1-3. FM_ORDER_SHIPPING 주문 상태 수정 ======================================== -// purchsMapper.updateOrdrSttusCdByFmOrderShipping(orderVO); -// -// -// // 2. 쿠폰 사용 처리 =============================================================== -// try { -// BODwldCouponVO dwldCouponVO = new BODwldCouponVO(); -// dwldCouponVO.setSopmalCd(payVO.getSopmalCd()); -// dwldCouponVO.setOrdrInnb(payVO.getOrderId()); -// couponService.updateBOUseCouponProcs(dwldCouponVO); -// } catch (Exception e) { -// log.debug("사용 쿠폰 처리 실패", e.getMessage()); -// throw new WnbtRestException("쿠폰 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// -// // 3.사용 마일리지 조회 및 할인 차감 ================================================= -// BOMlgVO mlgVO = purchsMapper.selectOrdrMlgUse(orderVO); -// if (mlgVO != null) { -// BigDecimal accmlmnyAmt = mlgVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOMlgUse(mlgVO); -// } catch (Exception e) { -// log.debug("사용 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("마일리지 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } -// -// // 4. (2025-06-20 CJH 추가) 사용 GC 머니 차감 ================================================= -// BOCashVO cashVO = purchsMapper.selectOrdrCashMlgUse(payVO); -// log.debug("캐쉬 VO : {}", cashVO); -// if (cashVO != null) { -// BigDecimal accmlmnyAmt = cashVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOCashUse(cashVO); // 사용 마일리지 할인 차감 -// } catch (Exception e) { -// log.debug("사용 충전형 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("GC 머니 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } - - + /* =============================================== + 결제 API + ================================================== */ Map kcpMap = payService.insertKcpPayKeyin(payVO); - if (!CollectionUtils.isEmpty(kcpMap)) { String response = StringUtil.isNullToString(kcpMap.get("response")); Map resultMap = new ObjectMapper().readValue(response, Map.class); @@ -5320,24 +4984,6 @@ public class BOOrdrService{ orderPgLogVO.setEscwAt(resultMap.get("escw_yn") != null ? resultMap.get("escw_yn").toString() : "N"); orderPgLogVO.setDelngAmt(resultMap.get("amount") != null ? new BigDecimal(resultMap.get("amount").toString()) : BigDecimal.valueOf(0)); - // 금액 검증 - PG사 결제 승인전 하고 있음 - /*BOOrdrVO paramVO = new BOOrdrVO(); - paramVO.setSopmalCd(payVO.getSopmalCd()); - paramVO.setOrdrInnb(payVO.getOrderId()); - DataMap ordrMap = mapper.selectOrdrGoodsDtllTot(paramVO); - - if (!CollectionUtils.isEmpty(resultMap)) { - BigDecimal setleAmt = (BigDecimal) ordrMap.get("setleAmt"); - BigDecimal amount = new BigDecimal((String) resultMap.get("amount")); - - if (setleAmt.intValue() == amount.intValue()) { - orderPgLogVO.setDelngAmt(amount); - } else { - insertSetleFailLog(payVO.getSopmalCd(), payVO.getOrderId(), "0000", "KCP 결제 실패 [결제 금액 매칭 오류]"); // 결제 실패 로그 등록 - throw new WnbtRestException("KCP 결제 실패 [결제 금액 매칭 오류]"); - } - }*/ - orderPgLogVO.setApvlnb(StringUtil.isNullToString(resultMap.get("app_no"))); orderPgLogVO.setCardCmpnyCd(StringUtil.isNullToString(resultMap.get("card_cd"))); orderPgLogVO.setCardCmpnyNm(StringUtil.isNullToString(resultMap.get("card_name"))); @@ -5513,6 +5159,9 @@ public class BOOrdrService{ // } + /* =============================================== + TOSS 카드 수기 결제 정보 등록 + ================================================== */ /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > TOSS 카드 수기 결제 정보 등록 @@ -5562,59 +5211,10 @@ public class BOOrdrService{ // 주문 공통 전처리 ( 상태체크, 상태변경, 마일리지, 쿠폰, GC머니 ) orderCommService.commonOrderPreProcess(payVO, orderVO); -// // 1-1. FM_ORDER 주문 상태 수정 ============================================== -// purchsMapper.updateOrdrSttusCdByFmOrder(orderVO); -// // 1-2. FM_ORDER_ITEM_OPTION 주문 상태 수정 ================================== -// purchsMapper.updateOrdrSttusCdByFmOrderItemOption(orderVO); -// // 1-3. FM_ORDER_SHIPPING 주문 상태 수정 ===================================== -// purchsMapper.updateOrdrSttusCdByFmOrderShipping(orderVO); -// -// // 2. 쿠폰 사용 처리 =============================================================== -// try { -// BODwldCouponVO dwldCouponVO = new BODwldCouponVO(); -// dwldCouponVO.setSopmalCd(payVO.getSopmalCd()); -// dwldCouponVO.setOrdrInnb(payVO.getOrderId()); -// couponService.updateBOUseCouponProcs(dwldCouponVO); -// } catch (Exception e) { -// log.debug("사용 쿠폰 처리 실패", e.getMessage()); -// throw new WnbtRestException("쿠폰 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// -// // 3.사용 마일리지 조회 및 할인 차감 ================================================= -// BOMlgVO mlgVO = purchsMapper.selectOrdrMlgUse(orderVO); -// if (mlgVO != null) { -// BigDecimal accmlmnyAmt = mlgVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOMlgUse(mlgVO); -// } catch (Exception e) { -// log.debug("사용 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("마일리지 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } -// -// // 4. (2025-06-20 CJH 추가) 사용 GC 머니 차감 ================================================= -// BOCashVO cashVO = purchsMapper.selectOrdrCashMlgUse(payVO); -// log.debug("캐쉬 VO : {}", cashVO); -// if (cashVO != null) { -// BigDecimal accmlmnyAmt = cashVO.getAccmlmnyAmt(); -// -// if (0 < accmlmnyAmt.intValue()) { -// try { -// mlgService.insertBOCashUse(cashVO); // 사용 마일리지 할인 차감 -// } catch (Exception e) { -// log.debug("사용 충전형 마일리지 처리 실패", e.getMessage()); -// throw new WnbtRestException("GC 머니 사용에 실패했습니다.\n관리자에게 문의하시기 바랍니다."); -// } -// } -// } - - + /* =============================================== + 결제 API + ================================================== */ Map tossPayMap = payService.insertTossPayKeyin(payVO); - - if (!CollectionUtils.isEmpty(tossPayMap)) { String response = StringUtil.isNullToString(tossPayMap.get("response")); Map resultMap = new ObjectMapper().readValue(response, Map.class); @@ -5647,27 +5247,6 @@ public class BOOrdrService{ orderPgLogVO.setVirtlAcntVrifyKy(StringUtil.isNullToString(rctMap.get("url"))); } - // 금액 검증 - PG사 결제 승인전 하고 있음 - /*BOOrdrVO paramVO = new BOOrdrVO(); - - paramVO.setSopmalCd(payVO.getSopmalCd()); - paramVO.setOrdrInnb(payVO.getOrderId()); - - DataMap ordrMap = mapper.selectOrdrGoodsDtllTot(paramVO); - - if (!CollectionUtils.isEmpty(resultMap)) { - BigDecimal setleAmt = (BigDecimal) ordrMap.get("setleAmt"); - BigDecimal totalAmount = BigDecimal.valueOf((int) resultMap.get("totalAmount")); - - if (setleAmt.intValue() == totalAmount.intValue()) { - orderPgLogVO.setDelngAmt(totalAmount); - } else { - insertSetleFailLog(payVO.getSopmalCd(), payVO.getOrderId(), "0000", "토스 결제 실패 [결제 금액 매칭 오류]"); // 결제 실패 로그 등록 - - throw new WnbtRestException("토스 결제 실패 [결제 금액 매칭 오류]"); - } - }*/ - LinkedHashMap cartMap = (LinkedHashMap) resultMap.get("card"); if (!CollectionUtils.isEmpty(resultMap)) { @@ -5850,6 +5429,137 @@ public class BOOrdrService{ // } + /* =============================================== + KIWOOM 결제 정보 등록 + ================================================== */ + + /** + * 사용자 > 상품 > 구매/결제 > 회원구매하기 > KIWOOM 결제 정보 등록 + * @param payVO + * @return Map + */ + @Transactional + public Map insertKiwoomSetle(BOPayVO payVO) throws Exception { + Map message = new HashMap<>() ; + + message = insertKiwoomSetle1(payVO); // 결제 관련 처리 + + return message; + } + + + /** + * 사용자 > 상품 > 구매/결제 > 회원구매하기 > KIWOOM 결제 정보 등록 + * @param payVO + * @return Map + */ + @Transactional + public Map insertKiwoomSetle1(BOPayVO payVO) throws Exception { + + boolean payResult = true; + Map content = new HashMap<>(); + BOOrderPgLogVO orderPgLogVO = new BOOrderPgLogVO(); + + orderPgLogVO.setOrdrInnb(new BigInteger(payVO.getOrderId())); + orderPgLogVO.setSopmalCd(payVO.getSopmalCd()); + orderPgLogVO.setPgCmpnyNm(payVO.getPgCmpnyNm()); + orderPgLogVO.setSetlerNm(payVO.getSetlerNm()); + orderPgLogVO.setSetleMthCd(payVO.getSetleTyCd()); + + try{ + + // 1. 주문상태 수정 ===================================================== + BOOrderVO orderVO = new BOOrderVO(); + orderVO.setSopmalCd(payVO.getSopmalCd()); + orderVO.setOrdrInnb(new BigInteger(payVO.getOrderId())); + orderVO.setOrdrSttusCd("25"); // 주문상태코드(25:결제확인) + + if (StringUtils.hasText(payVO.getMbrInnb())) { + orderVO.setMbrInnb(new BigInteger(payVO.getMbrInnb())); + } + + // 주문 공통 전처리 ( 상태체크, 상태변경, 마일리지, 쿠폰, GC머니 ) + orderCommService.commonOrderPreProcess(payVO, orderVO); + + /* =============================================== + 결제 API >> DB select로 진행함 + ================================================== */ + // todo :: api 연결이 아닌 db셀렉트로 변경. + DataMap kiwoomPayMap = mapper.selectKiwoomPgApiLog(payVO);//payService.insertTossPayKeyin(payVO); + if (!CollectionUtils.isEmpty(kiwoomPayMap)) { + String response = StringUtil.isNullToString(kiwoomPayMap.get("rsltParam")); + Map resultMap = new ObjectMapper().readValue(response, Map.class); + + if (!CollectionUtils.isEmpty(resultMap)) { + + /* =============================================== + 5. FM_ORDER_PG_LOG 등록값 셋팅 + ================================================== */ + orderPgLogVO.setDelngNb(StringUtil.isNullToString(resultMap.get("DAOUTRX"))); // 거래번호 (결제키) + 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.setNintrAt((boolean) resultMap.get("NOINTFLAG") ? "Y" : "N"); //무이자여부 + orderPgLogVO.setInstlmtMtCnt(resultMap.get("INSTALL") != null ? Integer.parseInt(resultMap.get("INSTALL").toString()):0); //할부개월수 + + // todo ::: 주문금액을 api테이블과 넘어온 값이랑 비교해야 처리필요 + //if(!CollectionUtils.isEmpty(resultMap)) {} else { + // throw new WnbtRestException("토스 결제 실패 [결제 금액 매칭 오류]"); + // } + orderPgLogVO.setDelngAmt(resultMap.get("AMOUNT") != null ? new BigDecimal(resultMap.get("AMOUNT").toString()) : BigDecimal.valueOf(0)); + + orderPgLogVO.setEscwAt("N"); // 에스크로여부 + orderPgLogVO.setVirtlAcntVrifyKy(""); //매출증빙영수증URL + orderPgLogVO.setRsltMssageCn("0000"); + orderPgLogVO.setRsltCd("정상처리-카드거래"); + + // 6. FM_ORDER_SETLE 수정 ============================================== + BOOrderSetleVO orderSetleVO = new BOOrderSetleVO(); + orderSetleVO.setSopmalCd(payVO.getSopmalCd()); + orderSetleVO.setOrdrInnb(new BigInteger(payVO.getOrderId())); + orderSetleVO.setPgInnb(orderPgLogVO.getDelngNb()); + orderSetleVO.setCredtcardApvlnb(orderPgLogVO.getApvlnb()); + orderSetleVO.setSetleTyCd(payVO.getSetleTyCd()); + //orderSetleVO.setSetleMid(StringUtil.isNullToString(mapper.selectBOSopSetleMidKeyInqire(payVO))); // 쇼핑몰 결제 MID(상점키) 조회 + orderSetleVO.setSetleMid("CFO20585"); //todo : paylink 관련 정리 후 db형으로 바꿈 + + purchsMapper.updateOrderSetle(orderSetleVO); + + content.put("status", "0"); + content.put("message", "키움 결제 정보 등록을 완료 하였습니다."); + } + } else { + throw new WnbtRestException("키움 결제 수신 정보를 찾을 수 없어 결제가 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + } + + try { + selectBOOrdrMssageSndngProcs(orderVO); + } catch (Exception e) { + log.debug("{} 메시지 발송 실패", payVO.getOrderId()); + } + + } catch (WnbtRestException wre) { + log.error("insertKiwoomSetle1 WnbtRestException : ", wre); + payResult = false; + throw wre; + } catch (Exception wre) { + log.error("insertKiwoomSetle1 Exception : ", wre); + payResult = false; + throw wre; + } finally { + log.info("insertKiwoomSetle1 order finally !!!!! {} ", payVO.getOrderId()); + // FM_ORDER_PG_LOG 등록 + ordrLogService.insertBOOrderPgLog(orderPgLogVO); + // 주문 로그 + ordrLogService.insertSetleOrderLog(payVO, payResult, "0000", "키움 결제 실패 [결제 정보 NULL]"); + } + + + return content; + } + + /** @@ -6017,6 +5727,17 @@ public class BOOrdrService{ return message; } + + /** + * 주문 후 장바구니 비우기 + * @param orderVO + */ + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void deleteBOCart(BOOrderVO orderVO) throws Exception { + purchsMapper.deleteCart(orderVO); + } + + /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 주문완료 정보 조회 * @param ordrVO @@ -6707,7 +6428,7 @@ public class BOOrdrService{ /** * 사용자 > 상품 > 상품상세 > 기존 장바구니 상품정보 삭제 - * @param goodsVOList + * @param spbkVO * @return Map */ @Transactional @@ -7194,7 +6915,7 @@ public class BOOrdrService{ /** * 배송지 조회 - * @param payVO + * @param vo */ public DataMap selectBOOrdrDlvylc(BOOrdrShippingVO vo) { DataMap map = new DataMap(); @@ -7593,7 +7314,7 @@ public class BOOrdrService{ /** * 주문 메세지 처리 - * @param payVO + * @param orderVO * @return */ public void selectBOOrdrMssageSndngProcs (BOOrderVO orderVO) throws Exception { diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrApiController.java b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrApiController.java index 54dd44ff..ae750282 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrApiController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrApiController.java @@ -2,6 +2,8 @@ package com.wb.domainserver.domain.sopmal.ordr.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.wb.domainserver.common.msg.GconeMessageSource; +import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrLogService; +import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO; import com.wb.domainserver.domain.sopmal.ordr.vo.OrdrVO; import com.wb.domainserver.exception.WnbtRestException; import com.wb.domainserver.response.WnbtWebClientResponseHandler; @@ -9,17 +11,23 @@ import com.wb.domainserver.security.authorization.annotation.AuthPolicy; import com.wb.domainserver.security.authorization.annotation.Policy; import com.wb.domainserver.util.communicate.RESRC; import com.wb.domainserver.util.communicate.SendToResrc; +import com.wb.domainserver.util.dataaccess.DataMap; +import com.wb.domainserver.util.string.StringUtil; import com.wb.domainserver.util.util.Util; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; -import java.util.ArrayList; -import java.util.List; +import java.io.BufferedReader; +import java.net.URLDecoder; +import java.util.*; @Slf4j @Controller @@ -34,6 +42,9 @@ public class OrdrApiController { @Autowired private GconeMessageSource messageSource; + @Autowired + private BOOrdrLogService ordrLogService; + private Util utilClass; /* #################################### @@ -95,4 +106,135 @@ public class OrdrApiController { return Integer.parseInt(cleanedCode.toString(), 16); } + + /* ################################################## + 사용자 > 결제(키움) > 결제 성공 후 결제값 응답받음 + ################################################## */ + /** + * 키움 결제 연계처리 - 결과통보페이지 + * @author 이경숙 + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value="/kiwoomPayWebhook") + @ResponseBody + public ResponseEntity selectPaymentkiwoomWebhook(HttpServletRequest request) throws Exception { + + // 0. 키움에서 온 값 로그 출력 (결제실패에 대한 응답은 없음) + printKiwoomRequest(request); + + // 1. 주문 로그 남김 (GC_ORDER_LOG) + BOPayVO payVO = new BOPayVO(); + DataMap pgApiLogReqVO = new DataMap(); + String orderNo = StringUtil.isNullToString(request.getParameter("ORDERNO")); + String orderNm = StringUtil.isNullToString(request.getParameter("USERNAME")); + String resParam = queryStringToJson(request.getQueryString()); + + payVO.setPgCmpnyNm("kiwoom"); //pg사명 + payVO.setDvCd("01"); //사용자 + payVO.setOrderId(orderNo); //주문번호 + payVO.setSetlerNm(orderNm); //주문자명 + pgApiLogReqVO.put("resParam",resParam); //응답전문 + + ordrLogService.insertSetleOrderPgLog(payVO, pgApiLogReqVO); + + // 2. PG API 로그 남김 (GC_ORDER_PG_API_LOG) + pgApiLogReqVO.put("reqParam", ""); //요청전문 + pgApiLogReqVO.put("ordrInnb", orderNo); //주문번호 + pgApiLogReqVO.put("sopmalCd", "SK"); //쇼핑몰코드 + pgApiLogReqVO.put("pgCmpnyNm", "kiwoom"); //pg사명 + pgApiLogReqVO.put("mbrInnb", ""); //회원번호 + pgApiLogReqVO.put("resParam", resParam); //응답전문 + + ordrLogService.insertBOPgApiLogReqRegist(pgApiLogReqVO); + + String response = "SUCCESS"; + + return ResponseEntity.ok() + .contentType(MediaType.TEXT_HTML) + .body(response); + } + + + + public static void printKiwoomRequest(HttpServletRequest request) { + try { + System.out.println("========== [KIWOOM REQUEST START] =========="); + + // 1. 기본 정보 + System.out.println("URL : " + request.getRequestURL()); + System.out.println("METHOD : " + request.getMethod()); + System.out.println("QUERY : " + request.getQueryString()); + System.out.println("REMOTE IP : " + request.getRemoteAddr()); + + // 2. 파라미터 (가장 중요) + System.out.println("---------- PARAM ----------"); + request.setCharacterEncoding("EUC-KR"); + request.getParameterMap().forEach((key, values) -> { + System.out.println(key + " = " + Arrays.toString(values)); + }); + + // 3. 헤더 + System.out.println("---------- HEADER ----------"); + Collections.list(request.getHeaderNames()).forEach(header -> { + System.out.println(header + " = " + request.getHeader(header)); + }); + + // 4. Body (JSON 대응) + System.out.println("---------- BODY ----------"); + + StringBuilder body = new StringBuilder(); + BufferedReader reader = request.getReader(); + String line; + + while ((line = reader.readLine()) != null) { + body.append(line); + } + + System.out.println(body.toString()); + + System.out.println("========== [KIWOOM REQUEST END] =========="); + + } catch (Exception e) { + System.out.println("❌ REQUEST LOG ERROR"); + e.printStackTrace(); + } + } + + + public String queryStringToJson(String queryString) throws Exception { + Map map = new HashMap<>(); + + if (queryString != null && !queryString.isEmpty()) { + String[] pairs = queryString.split("&"); + + for (String pair : pairs) { + String[] keyValue = pair.split("=", 2); + + String key = URLDecoder.decode(keyValue[0], "UTF-8"); + String value = keyValue.length > 1 ? URLDecoder.decode(keyValue[1], "UTF-8") : ""; + + map.put(key, value); + } + } + + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(map); + } + + public Map queryStringToMap(String queryString) throws Exception { + Map map = new HashMap<>(); + + if (queryString != null) { + for (String param : queryString.split("&")) { + String[] pair = param.split("=", 2); + + String key = URLDecoder.decode(pair[0], "EUC-KR"); + String value = pair.length > 1 ? URLDecoder.decode(pair[1], "EUC-KR") : ""; + + map.put(key, value); + } + } + return map; + } + } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java index 24c7d08d..e130275f 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java @@ -831,7 +831,9 @@ public class OrdrController { String pgCmpnyNm = setle.getPgCmpnyNm(); String setleTyCd = setle.getSetleTyCd(); - if ("gcpay".equals(pgCmpnyNm)) { + if ("kiwoom".equals(pgCmpnyNm)) { + url = "sopmal/ordr/OrdrReqstKiwoomPayR"; + } else if ("gcpay".equals(pgCmpnyNm)) { url = "sopmal/ordr/OrdrReqstGcpayPayR"; } else if ("kcp".equals(pgCmpnyNm)) { if ("sopmal_m".equals(deviceType)) { @@ -1173,19 +1175,6 @@ public class OrdrController { payVO.setSetlerNm(request.getParameter("buyr_name")); - //에스크로 정보추가 - /*payVO.setEscwUsed(request.getParameter("escw_used")); - payVO.setPayMod(request.getParameter("pay_mod")); - payVO.setRcvrName(request.getParameter("rcvr_name")); - payVO.setRcvrTel1(request.getParameter("rcvr_tel1")); - payVO.setRcvrTel2(request.getParameter("rcvr_tel2")); - payVO.setRcvrZipx(request.getParameter("rcvr_zipx")); - payVO.setRcvrAdd1(request.getParameter("rcvr_add1")); - payVO.setRcvrAdd2(request.getParameter("rcvr_add2")); - payVO.setDeliTerm(request.getParameter("deli_term")); - payVO.setBaskCntx(request.getParameter("bask_cntx")); - payVO.setGoodInfo(request.getParameter("good_info"));*/ - log.debug("payVO => {} ", new Gson().toJson(payVO)); String resCd = request.getParameter("res_cd"); @@ -1383,6 +1372,101 @@ public class OrdrController { return "sopmal/ordr/OrdrRspnsTossPayR"; } + + /** + * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 키움 결제 정보 등록 + * @param model + * @param request + * @return OrdrRspnsKiwoomPayR.jsp + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value="/insertKiwoomSetle") + public String insertKiwoomSetle(ModelMap model, HttpServletRequest request) { + BOPayVO payVO = new BOPayVO(); + + payVO.setOrderId(request.getParameter("orderId")); + payVO.setAmount(request.getParameter("setleAmt")); + payVO.setSopmalCd(request.getParameter("sopmalCd")); + payVO.setMbrInnb(request.getParameter("mbrInnb")); + payVO.setMbrId(request.getParameter("mbrId")); + payVO.setSesionId(request.getParameter("sesionId")); + payVO.setPgCmpnyNm(request.getParameter("pgCmpnyNm")); + payVO.setSetleTyCd(request.getParameter("setleTyCd")); + payVO.setSetlerNm(request.getParameter("ordrrNm")); + + String agentId = ""; + String jSesionId = ""; + String ipAdres = ""; + + // 쿠키를 가져옴 + Cookie[] cookies = request.getCookies(); + + //agentId 쿠키 있을 경우 가져옴 + if (cookies != null) { + for (Cookie cookie : cookies) { + if (cookie.getName().equals("JSESSIONID")) { + jSesionId = cookie.getValue(); + payVO.setSessionId(jSesionId); + } + } + } + //gc_agent_id 가져옴 + if (CookieUtil.hasAgentCookie(request.getCookies())) { + agentId = CookieUtil.getAgentCookieValue(request.getCookies()); + payVO.setAgentId(agentId); + } + Map util = new HashMap<>(); + util = utilClass.getRequestInfo(request); + ipAdres = util.get("XForwardedFor"); + payVO.setIpAdres(ipAdres); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + payVO.setMbrNm(user.getMbrNm()); //회원명(관리자명) + if ("01".equals(user.getSysDvCd())) { + payVO.setDvCd("01"); + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrDvCd(user.getMbrDvCd()); + } else { + payVO.setDvCd("02"); + } + + Map content; + + try { + content = service.insertKiwoomSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertKiwoomSetle : 키움 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertKiwoomSetle : 키움 결제 정보 등록 : 실패"); + log.error(e.getMessage(), e); + + content = new HashMap<>() {{ + put("status", "1"); + put("message", "키움 결제 정보 등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + if ("0".equals(content.get("status"))) { + commonOrderPostProcess(payVO); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTosspaySetle", payVO), +// model, +// "data" +// ); + model.addAttribute("paramVO", payVO); + + return "sopmal/ordr/OrdrRspnsKiwoomPayR"; + } + + /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 주문완료 화면 이동 * @return OrdrComptR.jsp diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/PayController.java b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/PayController.java index 7ad2d0c3..aa372e56 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/PayController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/PayController.java @@ -703,98 +703,6 @@ public class PayController { } - - /** - * 키움 결제 연계처리 - 결과통보페이지 - * @return PayKiwoomSucsC.jsp - * @author 이경숙 - */ - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/kiwoomPayWebhook") - @ResponseBody - public ResponseEntity selectPaymentkiwoomWebhook(HttpServletRequest request) throws Exception { - - String resultCode = request.getParameter("RESULTCODE"); - String orderNo = request.getParameter("ORDERNO"); - String amount = request.getParameter("AMOUNT"); - - printKiwoomRequest(request); - - /* 실제 처리해야 되는 부분 - // 1. 주문 조회 - Order order = orderService.find(orderNo); - - // 2. 중복 방지 - if ("PAID".equals(order.getStatus())) return "OK"; - - // 3. 금액 검증 - if (!order.getAmount().equals(Integer.parseInt(amount))) { - order.setStatus("FAIL"); - return "OK"; - } - - // 4. 성공 처리 - if ("0000".equals(resultCode)) { - order.setStatus("PAID"); - } else { - order.setStatus("FAIL"); - } - - orderService.save(order); -*/ - String response = "SUCCESS"; - - return ResponseEntity.ok() - .contentType(MediaType.TEXT_HTML) - .body(response); - } - - - - public static void printKiwoomRequest(HttpServletRequest request) { - try { - System.out.println("========== [KIWOOM REQUEST START] =========="); - - // 1. 기본 정보 - System.out.println("URL : " + request.getRequestURL()); - System.out.println("METHOD : " + request.getMethod()); - System.out.println("QUERY : " + request.getQueryString()); - System.out.println("REMOTE IP : " + request.getRemoteAddr()); - - // 2. 파라미터 (가장 중요) - System.out.println("---------- PARAM ----------"); - request.getParameterMap().forEach((key, values) -> { - System.out.println(key + " = " + Arrays.toString(values)); - }); - - // 3. 헤더 - System.out.println("---------- HEADER ----------"); - Collections.list(request.getHeaderNames()).forEach(header -> { - System.out.println(header + " = " + request.getHeader(header)); - }); - - // 4. Body (JSON 대응) - System.out.println("---------- BODY ----------"); - - StringBuilder body = new StringBuilder(); - BufferedReader reader = request.getReader(); - String line; - - while ((line = reader.readLine()) != null) { - body.append(line); - } - - System.out.println(body.toString()); - - System.out.println("========== [KIWOOM REQUEST END] =========="); - - } catch (Exception e) { - System.out.println("❌ REQUEST LOG ERROR"); - e.printStackTrace(); - } - } - - /** * 키움 결제 연계처리 - 성공결과페이지 * @return PayKiwoomSucsC.jsp diff --git a/src/main/resources/mybatis/xml/mapper/gcone/ordr/ordr/BOOrdrMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/ordr/ordr/BOOrdrMapper.xml index dd924ce0..168c6bb8 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/ordr/ordr/BOOrdrMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/ordr/ordr/BOOrdrMapper.xml @@ -5739,6 +5739,16 @@ AND O.SUBSVC_AT = 'Y' + + + + diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp index 4bab810f..c70eae22 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp @@ -53,7 +53,10 @@ const gcpayCardUseAt = $('#gcpayCardUseAt').val(); let gcpayAt = ( gcpayCardUseAt === 'Y')? 'Y' : 'N'; const setleTy = $('#setleSetupTyCd').val(); - const setleTyCd = (setleTy==='01')?'#pg04':'#pg03'; + const setleTyCd = '#pg04'; + if(setleTy==='01')setleTyCd = '#pg04'; //kcp + else if(setleTy==='02')setleTyCd = '#pg03'; //toss + else if(setleTy==='03')setleTyCd = '#pg06'; //kiwoom if (gcpayAt === 'N') { $(setleTyCd).click(); @@ -525,7 +528,12 @@ $(form).find('.pgContent').hide(); $(form).find('#' + id + 'Content').show(); - $(form).find('#setleSetupTyCd').val() === '01' ? $(form).find('#pg04Content').show() : $(form).find('#pg03Content').show(); + + //$(form).find('#setleSetupTyCd').val() === '01' ? $(form).find('#pg04Content').show() : $(form).find('#pg03Content').show(); + if($(form).find('#setleSetupTyCd').val() === '01'){$(form).find('#pg04Content').show();} + else if($(form).find('#setleSetupTyCd').val() === '02'){$(form).find('#pg03Content').show();} + else if($(form).find('#setleSetupTyCd').val() === '03'){$(form).find('#pg06Content').show();} + $('.order-method-normal__btn').removeClass('active'); $(form).find('#pgCmpnyNm').val(pgCmpnyNm); @@ -579,7 +587,10 @@ const content = $('.order-method-normal__content'); const useCashMlgAmt = $('#useCashMlgAmt').val(); - $('#setleSetupTyCd').val() === '01' ? $('#pg04').click() : $('#pg03').click(); + //$('#setleSetupTyCd').val() === '01' ? $('#pg04').click() : $('#pg03').click(); + if($('#setleSetupTyCd').val() === '01'){$('#pg04').click();} + else if($('#setleSetupTyCd').val() === '02'){$('#pg03').click();} + else if($('#setleSetupTyCd').val() === '03'){$('#pg05').click();} $('.order-method-normal__btn').removeClass('active'); $(this).addClass('active'); @@ -3014,7 +3025,12 @@ const id = '01' === issuTrgetDvCd ? 'issuTrgetMbtlnb' : 'issuTrgetBsnmNb'; let rlPgCmpnyNm = $('#pgCmpnyNm').val(); - let setleTyId = $('kcp' === pgCmpnyNm ? '#pg04Content' : '#pg03Content').find('button[name="' + setleTyCd + '"]').attr('id'); + let pgCont = ""; + if('kiwoom' === pgCmpnyNm) pgCont='pg06Content'; + else if('kcp' === pgCmpnyNm) pgCont='pg04Content'; + else pgCont='pg03Content'; + let setleTyId = $('#'+pgCont).find('button[name="' + setleTyCd + '"]').attr('id'); + if ('tosspay' === rlPgCmpnyNm) { setleTyId = 'acount' @@ -3510,6 +3526,82 @@ }); } + + <%-- 공통 Header --%> @@ -4428,6 +4520,138 @@ <%-- kcp 결제 종료 --%> + + <%-- 키움 결제 시작 --%> + +
+ + +
+ +
+ <%-- kcp 결제 종료 --%> diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp index 566e1cae..7c53b2a0 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp @@ -34,10 +34,7 @@ const setleTyCd = orderForm.find('.setleTyCd').val(); const setleAmt = orderForm.find('.setleAmt').val(); const ordrInnb = orderForm.find('.ordrInnb').val(); - const goodsNm = orderForm.find('.goodsNm').val(); const ordrrNm = orderForm.find('.ordrrNm').val(); - const ordrrEmail = orderForm.find('.ordrrEmail').val(); - const ordrrMbtlnb = orderForm.find('.ordrrMbtlnb').val().replace(/[^0-9]/g, ''); const sopmalCd = orderForm.find('.sopmalCd').val(); const mbrInnb = orderForm.find('.mbrInnb').val(); @@ -62,14 +59,13 @@ console.log("HOMEURL:::"+ pf.HOMEURL.value); console.log("FAILURL:::"+ pf.FAILURL.value); - init(); + kiwoomPay(); }); var pf; function init() { - //alert(navigator.userAgent); pf = document.payForm; pf.ORDERNO.value = getTimeStamp(); } @@ -165,52 +161,41 @@ -
- - - - +<%-- Controller에 넘어가는 값 --%> + + + + + - - - - - - + + + + + + + + +
- - - - - - +<%-- 결제창에 넘어가는 값 --%> +
+ + + + + - - + + + - + + + + + +
From 085ae7f2b497ae323c2da01e990a231e3db67ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=98=84=EC=9A=B1?= Date: Mon, 30 Mar 2026 13:27:54 +0900 Subject: [PATCH 03/97] =?UTF-8?q?=EA=B0=9C=EB=B0=9C=ED=99=98=EA=B2=BD=20?= =?UTF-8?q?=EC=84=B8=ED=8C=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 8 ++++---- src/main/resources/application-dev.yml | 22 +++++++++++----------- src/main/resources/application-local.yml | 18 +++++++++--------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index cbf811e3..cb121f94 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,7 +8,7 @@ pipeline { environment { SERVER_IP = "${DEPLOY_WAS_SERVER_IP}" SERVER_USER = "tomcat" - TOMCAT_HOME = "${ENVIRONMENT == 'dev' ? '/var/lib/tomcat' : '/usr/local/tomcat'}" + TOMCAT_HOME = "${ENVIRONMENT == 'dev' ? '/usr/local/tomcat' : '/usr/local/tomcat'}" APP_NAME = "sakemall" ROOT_NAME = "ROOT" DEPLOY_PATH = "${TOMCAT_HOME}/webapps" @@ -21,7 +21,7 @@ pipeline { GIT_BRANCH = "${ENVIRONMENT == 'dev' ? 'develop' : 'master'}" NGINX_STATIC_PATH = "/var/www/sopmall" NGINX_SERVER_IP = "${DEPLOY_WEB_SERVER_IP}" - NGINX_USER = "${ENVIRONMENT == 'dev' ? 'dev1' : 'ubuntu'}" + NGINX_USER = "${ENVIRONMENT == 'dev' ? 'ubuntu' : 'ubuntu'}" // SSH_KEY_PATH = "C:/Users/CHAMDAHAN-41/.ssh/id_rsa" } @@ -41,8 +41,8 @@ pipeline { properties([ parameters([ choice(name: 'ENVIRONMENT', choices: ['dev'], description: '배포할 어플리케이션 profile 선택'), - choice(name: 'DEPLOY_WAS_SERVER_IP', choices: ['00.00.00.00'], description: 'WAR 배포할 서버IP 선택'), - choice(name: 'DEPLOY_WEB_SERVER_IP', choices: ['00.00.00.00'], description: 'STATIC RESOURCE 배포할 서버IP 선택'), + choice(name: 'DEPLOY_WAS_SERVER_IP', choices: ['10.2.0.129'], description: 'WAR 배포할 서버IP 선택'), + choice(name: 'DEPLOY_WEB_SERVER_IP', choices: ['10.2.1.226'], description: 'STATIC RESOURCE 배포할 서버IP 선택'), // choice(name: 'DEPLOY_TARGET', choices: ['ALL', 'WEB_ONLY', 'WAS_ONLY', 'PROPERTY_ONLY'], description: '배포 대상 선택'), string(name: 'GIT_REPO', defaultValue: 'http://115.68.207.90:3000/itfirst/sake.git', description: 'Git 레파지토리 URL'), choice(name: 'DEPLOY_TARGET', choices: ['ALL', 'WEB_ONLY', 'WAS_ONLY'], description: '배포 대상 선택') diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 60b0bae8..c444ac13 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -58,7 +58,7 @@ spring: gcone: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false + jdbc-url: jdbc:mysql://115.68.231.30:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false username: sakeone password: dnlfxjtm13@$ minimumIdle: 1 @@ -66,11 +66,11 @@ spring: idleTimeout: 30000 #30초 maxLifetime: 1800000 #30분 connectionTimeout: 30000 - poolName: gconedDevPool + poolName: SakeDevPool sure: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false + jdbc-url: jdbc:mysql://115.68.231.30:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false username: sakeone password: dnlfxjtm13@$ minimumIdle: 1 @@ -85,7 +85,7 @@ spring: show-sql: true servlet: multipart: - max-file-size: 10MB + max-file-size: 15MB max-request-size: -1 mybatis: @@ -111,7 +111,7 @@ sopmalfo: rtrn: /data/gcone/rtrnFile extensions: images: .gif,.jpg,.jpeg,.png - cdnurl: http://dev.img.soju1sake1.com + cdnurl: https://19d28cf7178139ad.kinxzone.com pagination: @@ -353,11 +353,11 @@ mngrfo: fileupload: uploaddirs: goods: C:/file/temp - doc: /docFile - web: /webFile + doc: /data/gcone/docFile + web: /data/gcone/webFile extensions: images: .gif,.jpg,.jpeg,.png - cdnurl: http://dev.img.soju1sake1.com + cdnurl: https://19d28cf7178139ad.kinxzone.com subsvc: dft-goods-optn-innb: 5 @@ -367,7 +367,7 @@ secret: host: - img: http://dev.img.soju1sake1.com + img: https://19d28cf7178139ad.kinxzone.com naverpay: order: @@ -380,7 +380,7 @@ naverpay: real-url: https://pay.naver.com mail: - host: mail.sake1jan.com + host: 10.2.1.76 port: 587 username: custom@sake1jan.com password: mail13@$ @@ -420,7 +420,7 @@ bankda: css-cours : css/theme/themeAF.css #선물하기 URL -presenturl : dev.svc.soju1sake1.com +presenturl : devsvc.soju1sake1.com # 출고 택배사 구분 EXPORT, (택배사 구분코드 HDRYCPN) # 송장번호 %INVCNB% 치환 diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 765d6d5e..c8e22b23 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -58,7 +58,7 @@ spring: gcone: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false + jdbc-url: jdbc:mysql://115.68.231.30:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false username: sakeone password: dnlfxjtm13@$ minimumIdle: 1 @@ -66,11 +66,11 @@ spring: idleTimeout: 30000 #30초 maxLifetime: 1800000 #30분 connectionTimeout: 30000 - poolName: gconedDevPool + poolName: SakeDevPool sure: hikari: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://115.68.176.232:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false + jdbc-url: jdbc:mysql://115.68.231.30:3306/sake?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=yes&verifyServerCertificate=false username: sakeone password: dnlfxjtm13@$ minimumIdle: 1 @@ -111,7 +111,7 @@ sopmalfo: rtrn: /data/gcone/rtrnFile extensions: images: .gif,.jpg,.jpeg,.png - cdnurl: https://19b0bde6dcdc15ad.kinxzone.com + cdnurl: https://19d28cf7178139ad.kinxzone.com pagination: @@ -357,8 +357,8 @@ mngrfo: web: /data/gcone/webFile extensions: images: .gif,.jpg,.jpeg,.png - cdnurl: https://19b0bde6dcdc15ad.kinxzone.com - upurl: https://www.soju1sake1.com + dnurl: https://19d28cf7178139ad.kinxzone.com + # upurl: https://www.soju1sake1.com subsvc: dft-goods-optn-innb: 5 @@ -367,7 +367,7 @@ secret: host: - img: https://19b0bde6dcdc15ad.kinxzone.com/ + img: https://19d28cf7178139ad.kinxzone.com naverpay: order: @@ -380,7 +380,7 @@ naverpay: real-url: https://pay.naver.com mail: - host: mail.sake1jan.com + host: 10.2.1.76 port: 587 username: custom@sake1jan.com password: mail13@$ @@ -420,7 +420,7 @@ bankda: css-cours : css/theme/themeAF.css #선물하기 URL -presenturl : dev.svc.gcone.co.kr +presenturl : devsvc.soju1sake1.com # 출고 택배사 구분 EXPORT, (택배사 구분코드 HDRYCPN) # 송장번호 %INVCNB% 치환 From 955979b7d64cd0b92d2524b53f96c06b9ef53432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Mon, 30 Mar 2026 14:41:48 +0900 Subject: [PATCH 04/97] =?UTF-8?q?fix=20:=20=EC=87=BC=ED=95=91=EB=AA=B0=20?= =?UTF-8?q?=EC=A3=BC=EB=AC=B8=EA=B2=B0=EC=A0=9C=ED=99=94=EB=A9=B4=20-=20?= =?UTF-8?q?=EB=B0=B0=EC=86=A1=EC=A7=80=20=EC=A0=95=ED=95=A9=EC=84=B1=20?= =?UTF-8?q?=EA=B2=80=EC=82=AC(=EB=AA=A8=EB=B0=94=EC=9D=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp | 6 +- .../views/sopmal/ordr/SubsvcPurchsC.jsp | 6 +- .../views/sopmal_m/ordr/MbrPurchsC.jsp | 61 +++++++++++++---- .../views/sopmal_m/ordr/SubsvcPurchsC.jsp | 66 ++++++++++++++----- 4 files changed, 104 insertions(+), 35 deletions(-) diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp index 5d9dc3d1..551e63a4 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp @@ -2805,7 +2805,7 @@ const required = requiredMap[dlvylcAreaCd]; if (required) { - const $input = $('input.new[name="' + required + '"]'); + const $input = $('#' + required); const title = $input.attr('title'); const value = $input.val(); @@ -3760,7 +3760,7 @@ "> "> "> - "> + "> "> "> "> @@ -3782,7 +3782,7 @@ 개인통관번호 - "> + "> diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/SubsvcPurchsC.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/SubsvcPurchsC.jsp index cd618134..1ff688fa 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/SubsvcPurchsC.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/SubsvcPurchsC.jsp @@ -2775,7 +2775,7 @@ const required = requiredMap[dlvylcAreaCd]; if (required) { - const $input = $('input.new[name="' + required + '"]'); + const $input = $('#' + required); const title = $input.attr('title'); const value = $input.val(); @@ -3648,7 +3648,7 @@ "> "> "> - "> + "> "> "> "> @@ -3670,7 +3670,7 @@ 개인통관번호 - "> + "> diff --git a/src/main/webapp/WEB-INF/views/sopmal_m/ordr/MbrPurchsC.jsp b/src/main/webapp/WEB-INF/views/sopmal_m/ordr/MbrPurchsC.jsp index 4c19b3c5..e7e996c9 100644 --- a/src/main/webapp/WEB-INF/views/sopmal_m/ordr/MbrPurchsC.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal_m/ordr/MbrPurchsC.jsp @@ -125,8 +125,8 @@ let cstmclerText = 'KR' === $(".dlvylcAreaCd").eq(idx).val() ? '개인통관번호 : ' + $(".cstmclerCd").eq(idx).val() : ''; $(".deliveryInfo__cstmclerCd").text(cstmclerText); $(".cstmclerCdC").val($(".cstmclerCd").eq(idx).val()); - console.log("cstmclerCd : ",cstmclerText); - console.log("dlvylcAreaCd : ",$(".dlvylcAreaCd").eq(idx).val()); + // console.log("cstmclerCd : ",cstmclerText); + // console.log("dlvylcAreaCd : ",$(".dlvylcAreaCd").eq(idx).val()); //hidden 정보 set fn_select_mngrOrdr_postcode(fn_set_dlvylc, idx); } @@ -1841,6 +1841,17 @@ $(form).find('input[name="recpntMbtlnb"]').val(fn_format_mbtlnb(data.mbtlnb)); closeModal('postModal'); + let dlvylcAreaCd = $('#dlvylcForm').find('input[name="dlvylcAreaCd"]').val(); + + if('JP' === dlvylcAreaCd){ + + $('.cstmclerArea').hide(); + $('.cstmclerArea').find('input').prop('disabled', true); + } else { + $('.cstmclerArea').show(); + $('.cstmclerArea').find('input').prop('disabled', false); + } + // 배송지 정보 세팅 이후 결제예정금액 재계산 fn_get_setle_amt(); } @@ -2782,8 +2793,8 @@ const dlvylcDvCd = $('input[name="dlvylcDvCd"]:checked').val(); const isDftDlvylc = $('#isDftDlvylc').val(); // 기본 배송지 세팅 여부 + /* 선물하기 > 정합성 검사 시작 1 */ if (ordrTyCd === '04') { - $('#dlvylcForm').find('.required_gift').each(function () { const val = $(this).val(); const name = $(this).attr('name'); @@ -2799,7 +2810,15 @@ } }); + /* 선물하기 > 정합성 검사 종료 1 */ + } else { + // console.log("dlvylcDvCd : ",dlvylcDvCd); + const requiredMap = { + KR: 'cstmclerCd', + JP: 'prefcd' + }; + if (dlvylcDvCd === 'Default') { $('#dlvylcForm').find('.required').each(function () { const val = $(this).val(); @@ -2808,13 +2827,27 @@ const title = $(this).attr('title'); fn_call_alert_modal(title + ' 항목을 입력해 주십시요'); - isValid = false; return false; } }); + const dlvylcAreaCd = $('#dlvylcForm').find('input[name="dlvylcAreaCd"]').val(); + const required = requiredMap[dlvylcAreaCd]; + if (required) { + const $input = $('input[name="' + required + '"]'); + const title = $input.attr('title'); + const value = $input.val(); + + if (fn_is_empty(value)) { + fn_call_alert_modal(title + '을 입력해 주십시오'); + isValid = false; + + return false; + } + } + let dlvylcAdresDvCd = $('#dlvylcForm').find('input[name="dlvylcAdresDvCd"]').val(); $('#dlvylcForm').find('input').each(function () { @@ -2874,8 +2907,8 @@ } }); - // 선물하기 아닐경우 끝 } else { + /* TODO : 선물하기 > 정합성 검사 시작 2 */ if (isDftDlvylc === 'N') { $('#dlvylcForm').find('.required').each(function () { const val = $(this).val(); @@ -2907,6 +2940,9 @@ } }); } + + /* 선물하기 > 정합성 검사 종료 2 */ + } } @@ -3708,9 +3744,9 @@

"> "> - "> - "> - "> + "> + "> + "> "> "> " > @@ -3804,18 +3840,17 @@ - - -<%-- --%> + +
휴대폰 번호
-
+
휴대폰 번호
-
+
- <%-- kcp 결제 종료 --%> + <%-- 키움 결제 종료 --%> diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp index 7c53b2a0..972c0aac 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp @@ -30,6 +30,8 @@ - - + + @@ -3615,6 +3615,22 @@ } }); } + + function kiwoom_Completepayment() { + + console.log("::: parent window 호출 됨 ::::"); + var frm = document.order_info; + frm.submit(); + + /*if (frm.res_cd.value == "0000"){ + /!* 결제인증 완료 후 결제승인 요청을 위한 비즈니스 로직 구현 *!/ + frm.submit(); + } else { + /!* 결제인증 실패에 대한 처리 *!/ + alert( "[" + frm.res_cd.value + "] " + frm.res_msg.value ); + location.reload(); + }*/ + } diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp index 972c0aac..7748bff4 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp @@ -29,9 +29,7 @@ <%-- Controller에 넘어가는 값 --%> -
+"> - + @@ -198,7 +179,7 @@ - +
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrRspnsKiwoomPayR.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrRspnsKiwoomPayR.jsp new file mode 100644 index 00000000..433bcabd --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrRspnsKiwoomPayR.jsp @@ -0,0 +1,80 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%> +<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%> + +<%-- + Class Name : OrdrPay.jsp + Description : 결제 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2024-04-11 김혜인 최초 생성 +--%> + + + + + + + <%-- 공통 include --%> + + + + + + +
+ + + + + + + + +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/PayKiwoomSucsC.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/PayKiwoomSucsC.jsp index c508714f..f143ce3e 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/PayKiwoomSucsC.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/PayKiwoomSucsC.jsp @@ -51,6 +51,8 @@

메세지 :

결과코드 :

+ + From 9a61e308e1a1ba92c829a7db435e22776f354ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EA=B2=BD=EC=88=99?= Date: Tue, 31 Mar 2026 16:27:25 +0900 Subject: [PATCH 08/97] =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20-=20=ED=82=A4?= =?UTF-8?q?=EC=9B=80=EA=B2=B0=EC=A0=9C=20=EC=8A=B9=EC=9D=B8=EB=82=A0?= =?UTF-8?q?=EC=A7=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/gcone/ordr/ordr/service/BOOrdrService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java index b8a31c36..f79915c2 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java @@ -5508,7 +5508,7 @@ public class BOOrdrService{ 5. FM_ORDER_PG_LOG 등록값 셋팅 ================================================== */ orderPgLogVO.setDelngNb(StringUtil.isNullToString(resultMap.get("DAOUTRX"))); // 거래번호 (결제키) - orderPgLogVO.setConfmDt(selectDateFormat(StringUtil.isNullToString(resultMap.get("SETTDATE")))); // 승인일시 + orderPgLogVO.setConfmDt(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("KIWOOM_CARD_CD",orderPgLogVO.getCardCmpnyCd()))); //카드사명 From a434e3eade1cad3ffe0fb74124456b523054d21c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EA=B2=BD=EC=88=99?= Date: Tue, 31 Mar 2026 16:37:54 +0900 Subject: [PATCH 09/97] =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20-=20=ED=82=A4?= =?UTF-8?q?=EC=9B=80=EA=B2=B0=EC=A0=9C=20=EB=AC=B4=EC=9D=B4=EC=9E=90?= =?UTF-8?q?=ED=95=A0=EB=B6=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/gcone/ordr/ordr/service/BOOrdrService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java index f79915c2..4313f731 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java @@ -5512,7 +5512,7 @@ public class BOOrdrService{ orderPgLogVO.setApvlnb(StringUtil.isNullToString(resultMap.get("AUTHNO"))); //승인번호 orderPgLogVO.setCardCmpnyCd(StringUtil.isNullToString(resultMap.get("CARDCODE"))); //카드사코드 orderPgLogVO.setCardCmpnyNm(StringUtil.isNullToString(bOMaComncdService.selectBOCommcdDetail("KIWOOM_CARD_CD",orderPgLogVO.getCardCmpnyCd()))); //카드사명 - orderPgLogVO.setNintrAt((boolean) resultMap.get("NOINTFLAG") ? "Y" : "N"); //무이자여부 + orderPgLogVO.setNintrAt(StringUtil.isNullToString(resultMap.get("NOINTFLAG"))); //무이자여부 orderPgLogVO.setInstlmtMtCnt(resultMap.get("INSTALL") != null ? Integer.parseInt(resultMap.get("INSTALL").toString()):0); //할부개월수 // todo ::: 주문금액을 api테이블과 넘어온 값이랑 비교해야 처리필요 From 5ac14532e232128c99ab8b24e3f37616be440305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EA=B2=BD=EC=88=99?= Date: Tue, 31 Mar 2026 17:52:57 +0900 Subject: [PATCH 10/97] =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20-=20=ED=82=A4?= =?UTF-8?q?=EC=9B=80=EA=B2=B0=EC=A0=9C=20sitemid=20db=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ordr/ordr/service/BOOrdrService.java | 4 +- .../mapper/gcone/ordr/ordr/BOOrdrMapper.xml | 13 +---- .../views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp | 51 +++++++++++-------- 3 files changed, 32 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java index 4313f731..3e2f8d58 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java @@ -5533,8 +5533,8 @@ public class BOOrdrService{ orderSetleVO.setPgInnb(orderPgLogVO.getDelngNb()); orderSetleVO.setCredtcardApvlnb(orderPgLogVO.getApvlnb()); orderSetleVO.setSetleTyCd(payVO.getSetleTyCd()); - //orderSetleVO.setSetleMid(StringUtil.isNullToString(mapper.selectBOSopSetleMidKeyInqire(payVO))); // 쇼핑몰 결제 MID(상점키) 조회 - orderSetleVO.setSetleMid("CTS18056"); //todo : paylink 관련 정리 후 db형으로 바꿈 + orderSetleVO.setSetleMid(StringUtil.isNullToString(mapper.selectBOSopSetleMidKeyInqire(payVO))); // 쇼핑몰 결제 MID(상점키) 조회 + //orderSetleVO.setSetleMid(payVO.getCpId()); //todo : paylink 관련 정리 후 db형으로 바꿈 : CTS18056 log.info("insertKiwoomSetle service kiwoomPayMap_orderSetleVO ::: {}", orderSetleVO); diff --git a/src/main/resources/mybatis/xml/mapper/gcone/ordr/ordr/BOOrdrMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/ordr/ordr/BOOrdrMapper.xml index 83c4e4be..bfca364e 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/ordr/ordr/BOOrdrMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/ordr/ordr/BOOrdrMapper.xml @@ -5265,7 +5265,7 @@ WHEN #{pgCmpnyNm} = 'toss' OR #{pgCmpnyNm} = 'tosspay' THEN TOSS_MID -- 토스 WHEN #{pgCmpnyNm} = 'naverpay' OR #{pgCmpnyNm} = 'kakaopay' THEN EASYPAY_MID -- 이지페이 WHEN #{pgCmpnyNm} = 'gcpay' THEN BPAY_MID -- 브랜드페이 - WHEN #{pgCmpnyNm} = 'kcp' THEN KCP_MID -- kcp + WHEN #{pgCmpnyNm} = 'kcp' OR #{pgCmpnyNm} = 'kiwoom' THEN KCP_MID -- kcp, kiwoom END END, '') AS SETLE_MID FROM GC_PAY_LINK @@ -5784,17 +5784,6 @@ AND O.SUBSVC_AT = 'Y' - - - - - - - - - - - + + + + + + <%-- 결제창에 넘어가는 값 --%>

- - - - - + <%-- 개발환경:DEV / 서버환경 : LIVE --%> + + + + + + + + + <%-- 상점아이디 개발:CTS18056 / 운영:CFO20585,CFO20586--%> + <%-- 결제방식(P:PC/M:모바일/W:웹뷰) --%> + <%-- 결제수단 (CARD:카드/NAVERPAY:네이버페이)--%> + <%-- 과세 비과세 여부(00: 과세, 01: 비과세, 02: 복합과세) --%> + <%-- 과금 유형(1: 일반) --%> + <%-- 상품구분(1: 디지털, 2: 실물) --%> + <%-- 보안 기능 --%> - - - - - - - - - - - + <%-- 주문번호 --%> + <%-- 결제금액 --%> + <%-- 상품명 --%> + <%-- 고객 ID --%> + <%-- 결제 성공 후, 이동할 URL(결제 창에서 이동) --%> + <%-- 결제실패 후, 확인버튼 입력 시 이동할 URL --%> + <%-- 키움페이 결제 완료 창 없이 HOMEURL로 바로 이동(Y/N) --%>
\ No newline at end of file From 4a91b40254c74501a8ab55ec28f46e5721590fbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EA=B2=BD=EC=88=99?= Date: Tue, 31 Mar 2026 18:19:00 +0900 Subject: [PATCH 11/97] =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20-=20=ED=82=A4?= =?UTF-8?q?=EC=9B=80=EA=B2=B0=EC=A0=9C=20=EC=A4=91=EA=B0=84=20=EA=B2=B0?= =?UTF-8?q?=EC=A0=9C=EC=B0=BD=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ordr/controller/OrdrController.java | 22 +++++----- .../views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp | 40 +------------------ .../views/sopmal/ordr/OrdrReqstKiwoomPreR.jsp | 35 ++++++++++++++++ 3 files changed, 50 insertions(+), 47 deletions(-) create mode 100644 src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPreR.jsp diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java index 2f5bf040..edde29da 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java @@ -1387,7 +1387,6 @@ public class OrdrController { /** * 키움 결제 연계 전 getEnc 값 받아오기 - * @return PayKiwoomSucsC.jsp * @author 이경숙 */ @Policy(AuthPolicy.RESTRICTED) @@ -1423,13 +1422,23 @@ public class OrdrController { log.info("insertKiwoomPay step5 ::: {}", message.get("KIWOOM_ENC")); - //model.addAttribute("message", message); - //return "sopmal/ordr/PayKiwoomSucsC"; - return message; } + /** + * 키움 결제 연계처리 - 사전 승인 후 결제요청 페이지 이동 + * @return PayKiwoomSucsC.jsp + * @author 이경숙 + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value="/kiwoomPayPreSuccss") + public String confirmKiwoom(HttpServletRequest request, ModelMap model) throws Exception { + + return "sopmal/ordr/OrdrReqstKiwoomPreR"; + } + + /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 키움 결제 정보 등록 * @param model @@ -1521,11 +1530,6 @@ public class OrdrController { } model.addAttribute("data", content); -// responseHandler.handleResponse( -// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTosspaySetle", payVO), -// model, -// "data" -// ); model.addAttribute("paramVO", payVO); return "sopmal/ordr/OrdrRspnsKiwoomPayR"; diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp index 500054ae..13c37e47 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/OrdrReqstKiwoomPayR.jsp @@ -29,44 +29,8 @@ + + + + + From 2e2bf59021beb046de584962c7022c197c665e73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Wed, 1 Apr 2026 15:14:24 +0900 Subject: [PATCH 12/97] =?UTF-8?q?fix=20:=20=EC=87=BC=ED=95=91=EB=AA=B0=20?= =?UTF-8?q?=EA=B5=AC=EB=8F=85=EC=84=9C=EB=B9=84=EC=8A=A4=20-=20=EA=B5=AC?= =?UTF-8?q?=EB=8F=85=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=EB=B6=80=20=EC=88=A8=EA=B9=80=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20fix=20:=20=EA=B4=80=EB=A6=AC=EC=9E=90=20=EA=B5=AC?= =?UTF-8?q?=EB=8F=85=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=88=98=EC=A0=95=20-?= =?UTF-8?q?=20=EA=B8=B0=EB=B3=B8&=ED=8C=90=EB=A7=A4=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=EA=B0=92=200=20=ED=97=88=EC=9A=A9,=20?= =?UTF-8?q?=EC=9E=AC=EA=B3=A0=EC=A0=95=EC=B1=85=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=EC=8B=9C=20=ED=8C=90=EB=A7=A4=EA=B0=80=EB=8A=A5=20=EC=9E=AC?= =?UTF-8?q?=EA=B3=A0=EC=88=98=EB=9F=89=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gcone/goods/subsvc/vo/BOSubsvcVO.java | 2 ++ .../gcone/goods/subsvc/BOSubsvcMapper.xml | 11 +++--- .../views/mngr/goods/subsvc/SubsvcU.jsp | 35 ++++++++++++++----- .../WEB-INF/views/sopmal/main/SubscribeR.jsp | 20 +++++++++++ .../views/sopmal_m/main/SubscribeR.jsp | 31 ++++++++++++++-- 5 files changed, 83 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/vo/BOSubsvcVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/vo/BOSubsvcVO.java index 3f78b530..7f11389e 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/vo/BOSubsvcVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/subsvc/vo/BOSubsvcVO.java @@ -42,6 +42,8 @@ private static final long serialVersionUID = 1L; private String invntryQy; /** 판매재고수량 */ private String usefulInvntryQy; + /** 판매수량 초기화여부*/ + private String usefulInvntryQyInit; /** 재고정책 */ private String invntryPolicyCd; /** 가용재고제한수량 */ diff --git a/src/main/resources/mybatis/xml/mapper/gcone/goods/subsvc/BOSubsvcMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/goods/subsvc/BOSubsvcMapper.xml index 5e71e859..fa14083c 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/goods/subsvc/BOSubsvcMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/goods/subsvc/BOSubsvcMapper.xml @@ -201,17 +201,20 @@ , CNSMRPRIC = REPLACE(#{cnsmrpric},',','') , INVNTRY_QY = REPLACE(#{invntryQy},',','') , INVNTRY_POLICY_CD = #{invntryPolicyCd} + + , USEFUL_INVNTRY_QY = 0 + , AVLINV_LMTT_QY = #{avlinvLmttQy} , SUBSVC_STTUS_CD = #{subsvcSttusCd} , EXPSR_DV_CD = #{expsrDvCd} - + , EXPSR_BGN_DT = #{expsrBgnDt} , EXPSR_BGN_DT = null - + , EXPSR_END_DT = #{expsrEndDt} @@ -223,9 +226,9 @@ , SUBSVC_DC = #{subsvcDc} , MBL_SUBSVC_DC = #{mblSubsvcDc} , MBL_SUBSVC_DC_PC_SAME_AT = #{mblSubsvcDcPcSameAt} - + , IMG = #{img} - + , UPDUSR = #{updusr} , UPDT_DT = NOW() WHERE SUBSVC_INNB = #{subsvcInnb} diff --git a/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcU.jsp b/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcU.jsp index f6fb8ad4..c14e16aa 100644 --- a/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcU.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/goods/subsvc/SubsvcU.jsp @@ -194,6 +194,10 @@ tgtForm.appendChild(input); } + const fn_remove_input = function (name, tftForm) { + $(tftForm).find('input[name="' + name + '"]').remove(); + } + /* ******************************************************** * 리스트 바로가기 @@ -309,15 +313,16 @@ // 텍스트 입력 내용중 필수 항목 체크 $(':text[required]').each(function () { + const inputVal = $(this).val().trim(); if($(this).hasClass('number')){ - if ($(this).val().trim() == '' || $(this).val().trim() == '0') { + if (inputVal == '' || inputVal == '0' && !$(this).hasClass('allow-zero')) { alert($(this).prop('title')+"은(는) 필수입니다"); $(this).focus(); retVal = false; return false; } }else{ - if ($(this).val().trim() == '') { + if (inputVal == '') { alert($(this).prop('title')+"은(는) 필수입니다"); $(this).focus(); retVal = false; @@ -362,8 +367,12 @@ $('#expsrEndDt').val(''); } + //선택한 재고정책 + const choiceInvntryPolicyCd = $('input[name="invntryPolicyCd"]:checked').val() + const prevInvntryPolicyCd = $('#invntryPolicyCdAsIs').val() + //재고가 있으면 판매인 경우 개수 품절처리 필수 - if($('input[name="invntryPolicyCd"]:checked').val() == '01'){ + if(choiceInvntryPolicyCd == '01'){ if($('#avlinvLmttQy').val() == ''){ alert($('#avlinvLmttQy').prop('title')+"은(는) 노출여부가 노출예약인 경우 필수입니다"); $('#avlinvLmttQy').focus(); @@ -371,6 +380,13 @@ } } + //재고에 따른 판매(재고정책)가 수정되었을 경우 + fn_remove_input('usefulInvntryQyInit', $("#subsvcForm")[0]); + if(choiceInvntryPolicyCd !== prevInvntryPolicyCd){ + alert('재고정책 변경에 따라 판매가능재고수량을 초기화합니다.'); + fn_create_input('hidden', 'usefulInvntryQyInit','Y', $("#subsvcForm")[0]); + } + //이미지 필수 체크 if((($('#delImg').val() != '' || $('#img').val() == '') && imgDropzone.files.length != 1)){ if(imgDropzone.files.length == 0){ @@ -487,6 +503,7 @@ + @@ -519,7 +536,7 @@ 구독기간*
- 개월 + 개월
@@ -541,7 +558,7 @@ 배송횟수*
- 회 + 회
배송주기* @@ -576,13 +593,13 @@ 구독료*
- 円(엔) + 円(엔)
1회 배송비*
- 円(엔) + 円(엔)
@@ -596,7 +613,7 @@ 실판매가*
- 円(엔) + 円(엔)
@@ -631,7 +648,7 @@ 가용재고
- +
diff --git a/src/main/webapp/WEB-INF/views/sopmal/main/SubscribeR.jsp b/src/main/webapp/WEB-INF/views/sopmal/main/SubscribeR.jsp index 8c1120b7..ed4ec2c7 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/main/SubscribeR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/main/SubscribeR.jsp @@ -57,6 +57,7 @@ $('#selpric').text(fn_format_number(data.selpric) + curUnit); $('#dscntRaito').text(data.dscntRaito + '%'); $('#subsvcDc').html(data.subsvcDc); + fn_hide_subsvcDetail(data.subPd, data.dlvyCnt, data.selpric); $("#fixedImg").attr("src", cdnurl + data.img); $('#fixedTitle').text(data.subsvcConcatNm); @@ -83,6 +84,25 @@ }); } + /****************************************************** + * 구독서비스 상세 숨기기 + * ****************************************************/ + const fn_hide_subsvcDetail = function(subPd, dlvyCnt, selpric) { + function isEmpty(val) { + return !val || val === 0; + } + function hideIf(condition, find, base) { + let target = base ? $(base).closest(find) : $(find); + $(target).toggle(!condition); + } + + hideIf(isEmpty(subPd), 'li', '#subPd'); + hideIf(isEmpty(dlvyCnt), 'li', '#dlvyCnt'); + hideIf(isEmpty(subPd) && isEmpty(dlvyCnt), '.box', '#subPd'); + hideIf(isEmpty(selpric), '.box', '#selpric'); + hideIf(isEmpty(selpric), '#fixedButton'); + } + /************************************************************* 구매하기 버튼 **************************************************************/ diff --git a/src/main/webapp/WEB-INF/views/sopmal_m/main/SubscribeR.jsp b/src/main/webapp/WEB-INF/views/sopmal_m/main/SubscribeR.jsp index 47438b18..a9da20b7 100644 --- a/src/main/webapp/WEB-INF/views/sopmal_m/main/SubscribeR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal_m/main/SubscribeR.jsp @@ -51,6 +51,7 @@ $('#subsvcDc').html( data.mblSubsvcDcPcSameAt === "N" ? data.mblSubsvcDc : data.subsvcDc ); + fn_hide_subsvcDetail(data.subPd, data.dlvyCnt, data.selpric); switch (data.subsvcSttusCd) { case '01': @@ -72,6 +73,25 @@ }); } + /****************************************************** + * 구독서비스 상세 숨기기 + * ****************************************************/ + const fn_hide_subsvcDetail = function(subPd, dlvyCnt, selpric) { + function isEmpty(val) { + return !val || val === 0; + } + function hideIf(condition, find, base) { + let target = base ? $(base).closest(find) : $(find); + $(target).toggle(!condition); + } + + hideIf(isEmpty(subPd), 'dl', '#subPd'); + hideIf(isEmpty(dlvyCnt), 'dl', '#dlvyCnt'); + hideIf(isEmpty(subPd) && isEmpty(dlvyCnt), '.productDetailInfo__info'); + hideIf(isEmpty(selpric), '.productDetailInfo__price'); + hideIf(isEmpty(selpric), '#subscribeBtn'); + } + /************************************************************* 구매하기 버튼 **************************************************************/ @@ -105,6 +125,11 @@ padding: 16px; } + .productDetailInfo__info > dl > dt, + .productDetailInfo__info > dl > dd { + font-size: 14px; + } + #subsvcDc { padding: clamp(12px, 3%, 18px); border-radius: 8px; @@ -147,9 +172,6 @@ % -
- 구독 서비스 상품 설명 -
구독기간
@@ -170,6 +192,9 @@
+
+ 구독 서비스 상품 설명 +
From 367ade4bad70aa4d4253c45c2b2cc56213cbd9d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EA=B2=BD=EC=88=99?= Date: Wed, 1 Apr 2026 15:35:38 +0900 Subject: [PATCH 13/97] =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20-=20=ED=82=A4?= =?UTF-8?q?=EC=9B=80=EA=B2=B0=EC=A0=9C=20=EB=A7=A4=EC=B6=9C=EC=A0=84?= =?UTF-8?q?=ED=91=9C=EC=97=90=20=ED=82=A4=EC=9B=80=20=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gcone/ordr/ordr/service/BOOrdrService.java | 4 ++-- .../mngr/ordr/selngpruf/SelngPrufListInqireForm.jsp | 13 +++++++++++-- .../WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp | 13 +++++++++++-- .../views/sopmal/mpage/ordr/SubsvcOrdrDtlR.jsp | 11 ++++++++++- .../WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp | 11 ++++++++++- .../views/sopmal_m/mpage/ordr/SubsvcOrdrDtlR.jsp | 11 ++++++++++- 6 files changed, 54 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java index 3e2f8d58..27ac3e85 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java @@ -5523,8 +5523,8 @@ public class BOOrdrService{ orderPgLogVO.setEscwAt("N"); // 에스크로여부 orderPgLogVO.setVirtlAcntVrifyKy(""); //매출증빙영수증URL - orderPgLogVO.setRsltMssageCn("0000"); - orderPgLogVO.setRsltCd("정상처리-카드거래"); + orderPgLogVO.setRsltMssageCn("정상처리-카드거래"); + orderPgLogVO.setRsltCd("0000"); // 6. FM_ORDER_SETLE 수정 ============================================== BOOrderSetleVO orderSetleVO = new BOOrderSetleVO(); diff --git a/src/main/webapp/WEB-INF/views/mngr/ordr/selngpruf/SelngPrufListInqireForm.jsp b/src/main/webapp/WEB-INF/views/mngr/ordr/selngpruf/SelngPrufListInqireForm.jsp index 706aa30c..671d66fb 100644 --- a/src/main/webapp/WEB-INF/views/mngr/ordr/selngpruf/SelngPrufListInqireForm.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/ordr/selngpruf/SelngPrufListInqireForm.jsp @@ -333,7 +333,7 @@ * order_no : order_idxx 값 * trade_money : amount 값 * cash_no : cash_no 값 - * pgInnb : PG 거래번호 + * pgInnb : PG 거래번호 */ const kcpCashUrl = "http://admin8.kcp.co.kr/assist/bill.BillActionNew.do?cmd=cash_bill&cash_no="+cshRciptDelngNb+"&order_no="+cashOrdrInnb+"&trade_mony="+amt; // 현금영수증 const kcpCardUrl = "https://admin8.kcp.co.kr/assist/bill.BillActionNew.do?cmd=card_bill&tno="+pgInnb+"&order_no="+ordrInnb+"&trade_mony="+amt;// 신용카드 @@ -350,6 +350,13 @@ let paycoUrl = "https://bill.payco.com/seller/receipt/GB_UZRSXP/"+ordrInnb+"/"+pgInnb+"" //페이코(as_is) + /* kiwoom url + * DAOUTRX : 다우거래번호 + * STATUS : 11 = 승인전표 / 12 = 취소전표 / 16 = 부분취소 / A = 자동상태 + */ + const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발 + const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영 + $.ajax({ type: "GET", url: "/mngr/ordr/selngpruf/selectSopmalSetleSetup", @@ -364,7 +371,9 @@ // toss url tossCashUrl = "https://dashboard.tosspayments.com/receipt/mids/" + mid + "/orders/" + cashOrdrInnb + "/cash-receipt?ref=email" // 현금 - if (pgCmpnyNm == 'toss') { + if(pgCmpnyNm == "kiwoom") { + url = kiwoomCardUrl; + } else if (pgCmpnyNm == 'toss') { if (reqstDvCd == '02' || reqstDvCd == "03") { // 현금영수증 if (setleTyCd == '03' || setleTyCd == '04' || setleTyCd == '05') { // 계좌이체, 가상계좌 url = tossAcntUrl; diff --git a/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp b/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp index 0f07f865..ea4f44bf 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp @@ -1015,13 +1015,22 @@ const tossCardUrl = "https://dashboard.tosspayments.com/receipt/redirection?transactionId="+pgInnb+"&ref=PX"; //카드 / 간편결제(01) const tossAcntUrl = "https://dashboard.tosspayments.com/receipt/payment-detail/bank-transfer?transactionId="+pgInnb+"&ref=PX"; //계좌이체(03), 가상계좌(04,05) - if(pgCmpnyNm == "kcp") { + /* kiwoom url + * DAOUTRX : 다우거래번호 + * STATUS : 11 = 승인전표 / 12 = 취소전표 / 16 = 부분취소 / A = 자동상태 + */ + const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발 + const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영 + + if(pgCmpnyNm == "kiwoom") { + if(setleTyCd=='01'){ url = kiwoomCardUrl;} + } else if(pgCmpnyNm == "kcp") { if(setleTyCd=='01'){ url = kcpCardUrl;} if(setleTyCd=='03'){ url = kcpAcntUrl;} if(setleTyCd=='04' || setleTyCd=='05'){ url = kcpVcntUrl;} - }else { //toss, tosspay, gcpay, kakaopay, naverpay 추가 + } else { //toss, tosspay, gcpay, kakaopay, naverpay 추가 if(setleTyCd=='01'){ url = tossCardUrl;} if(setleTyCd=='03' || setleTyCd=='04' || setleTyCd=='05'){ url = tossAcntUrl;} } diff --git a/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/SubsvcOrdrDtlR.jsp b/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/SubsvcOrdrDtlR.jsp index fbbd5db1..8b098342 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/SubsvcOrdrDtlR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/SubsvcOrdrDtlR.jsp @@ -1009,7 +1009,16 @@ const tossCardUrl = "https://dashboard.tosspayments.com/receipt/redirection?transactionId="+pgInnb+"&ref=PX"; //카드 / 간편결제(01) const tossAcntUrl = "https://dashboard.tosspayments.com/receipt/payment-detail/bank-transfer?transactionId="+pgInnb+"&ref=PX"; //계좌이체(03), 가상계좌(04,05) - if(pgCmpnyNm == "kcp") { + /* kiwoom url + * DAOUTRX : 다우거래번호 + * STATUS : 11 = 승인전표 / 12 = 취소전표 / 16 = 부분취소 / A = 자동상태 + */ + const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발 + const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영 + + if(pgCmpnyNm == "kiwoom") { + if(setleTyCd=='01'){ url = kiwoomCardUrl;} + } else if(pgCmpnyNm == "kcp") { if(setleTyCd=='01'){ url = kcpCardUrl;} if(setleTyCd=='03'){ url = kcpAcntUrl;} diff --git a/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp b/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp index b471a55b..5ac4f1fe 100644 --- a/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp @@ -567,7 +567,16 @@ const tossCardUrl = "https://dashboard.tosspayments.com/receipt/redirection?transactionId="+pgInnb+"&ref=PX"; //카드 / 간편결제(01) const tossAcntUrl = "https://dashboard.tosspayments.com/receipt/payment-detail/bank-transfer?transactionId="+pgInnb+"&ref=PX"; //계좌이체(03), 가상계좌(04,05) - if(pgCmpnyNm == "kcp") { + /* kiwoom url + * DAOUTRX : 다우거래번호 + * STATUS : 11 = 승인전표 / 12 = 취소전표 / 16 = 부분취소 / A = 자동상태 + */ + const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발 + const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영 + + if(pgCmpnyNm == "kiwoom") { + if(setleTyCd=='01'){ url = kiwoomCardUrl;} + } else if(pgCmpnyNm == "kcp") { if(setleTyCd=='01'){ url = kcpCardUrl;} if(setleTyCd=='03'){ url = kcpAcntUrl;} diff --git a/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/SubsvcOrdrDtlR.jsp b/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/SubsvcOrdrDtlR.jsp index be48c972..f292dfa6 100644 --- a/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/SubsvcOrdrDtlR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/SubsvcOrdrDtlR.jsp @@ -550,7 +550,16 @@ const tossCardUrl = "https://dashboard.tosspayments.com/receipt/redirection?transactionId="+pgInnb+"&ref=PX"; //카드 / 간편결제(01) const tossAcntUrl = "https://dashboard.tosspayments.com/receipt/payment-detail/bank-transfer?transactionId="+pgInnb+"&ref=PX"; //계좌이체(03), 가상계좌(04,05) - if(pgCmpnyNm == "kcp") { + /* kiwoom url + * DAOUTRX : 다우거래번호 + * STATUS : 11 = 승인전표 / 12 = 취소전표 / 16 = 부분취소 / A = 자동상태 + */ + const kiwoomCardUrl = "https://agenttest.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX="+pgInnb+"&STATUS=11"; //개발 + const kiwoomCardLiveUrl = "https://agent.kiwoompay.co.kr/common/PayInfoPrintDirectCard.jsp?DAOUTRX=CTS26033118224396081&STATUS=11"; //운영 + + if(pgCmpnyNm == "kiwoom") { + if(setleTyCd=='01'){ url = kiwoomCardUrl;} + } else if(pgCmpnyNm == "kcp") { if(setleTyCd=='01'){ url = kcpCardUrl;} if(setleTyCd=='03'){ url = kcpAcntUrl;} From 371f1fa4715a56b5b116b67eca32f11c858c29ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Wed, 1 Apr 2026 16:19:22 +0900 Subject: [PATCH 14/97] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20-=20?= =?UTF-8?q?=ED=99=9C=EC=84=B1=20=ED=99=98=EA=B2=BD(Active=20Profile)?= =?UTF-8?q?=EC=97=90=20=EB=94=B0=EB=A5=B8=20=ED=83=80=EC=9D=B4=ED=8B=80=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/templates/login-MNGR.html | 2 +- src/main/webapp/WEB-INF/views/comm/mngr/Include.jsp | 12 +++++++++--- src/main/webapp/WEB-INF/views/login/login-MNGR.jsp | 10 +++++++++- .../webapp/WEB-INF/views/mngr/analytics/ErpGoods.jsp | 2 +- .../WEB-INF/views/mngr/analytics/ErpGoodsR.jsp | 2 +- .../WEB-INF/views/mngr/analytics/ErpSetGoods.jsp | 2 +- .../WEB-INF/views/mngr/analytics/ErpSetGoodsR.jsp | 2 +- .../WEB-INF/views/mngr/analytics/SalesJournal.jsp | 2 +- .../webapp/WEB-INF/views/mngr/api/OrderApiPage.jsp | 2 +- .../webapp/WEB-INF/views/mngr/bnft/BnftListFormR.jsp | 2 +- .../WEB-INF/views/mngr/bnft/BnftPushListFormR.jsp | 2 +- .../views/mngr/bnft/regist/AtendRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/ConrevRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/CpslLeafRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/CpslmknRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/DiscsharRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/EvntviewRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/GdccRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/HlthsetRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/IntakchlRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/LucklottRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/LvshopRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/MngBannerRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/MngMenuRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/MngPushEvtRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/OxquizRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/PurstmpRegistForm.jsp | 2 +- .../WEB-INF/views/mngr/bnft/regist/PushDtlsForm.jsp | 2 +- .../views/mngr/bnft/regist/PushRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/PushSetupRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/QrcodeMakeForm.jsp | 2 +- .../views/mngr/bnft/regist/QrevntRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/RougameChgRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/RougameRegistForm.jsp | 2 +- .../views/mngr/bnft/regist/StepcntRegistForm.jsp | 2 +- .../views/mngr/bnft/sttus/AtendMbrSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/AtendPdSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/ConrevSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/CpslmknSttusDtlsForm.jsp | 2 +- .../views/mngr/bnft/sttus/CpslmknSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/DiscsharSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/EvntviewSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/HlthsetMonSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/HlthsetSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/IntakchlSttusDtlsForm.jsp | 2 +- .../views/mngr/bnft/sttus/IntakchlSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/LucklottSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/LvshopSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/OxquizSttusDtlsForm.jsp | 2 +- .../views/mngr/bnft/sttus/OxquizSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/PurstmpPdSttusDtlsForm.jsp | 2 +- .../views/mngr/bnft/sttus/PurstmpPdSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/PurstmpStrSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/QrevntSttusDtlsForm.jsp | 2 +- .../views/mngr/bnft/sttus/QrevntSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/RougameSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/StepcntMbrSttusForm.jsp | 2 +- .../views/mngr/bnft/sttus/StepcntPdSttusForm.jsp | 2 +- .../WEB-INF/views/mngr/goods/banner/BannerC.jsp | 2 +- .../WEB-INF/views/mngr/goods/banner/BannerDtlU.jsp | 2 +- .../WEB-INF/views/mngr/goods/banner/BannerListR.jsp | 2 +- .../views/mngr/goods/cmnuse/CmnuseInfoDtlFormR.jsp | 2 +- .../views/mngr/goods/cmnuse/CmnuseInfoFormR.jsp | 2 +- .../views/mngr/goods/cmnuse/CmnuseInfoListR.jsp | 2 +- .../views/mngr/goods/goodsinfo/GoodsInfoDtlFormR.jsp | 2 +- .../views/mngr/goods/goodsinfo/GoodsInfoFormR.jsp | 2 +- .../views/mngr/goods/goodsinfo/GoodsInfoListR.jsp | 2 +- .../WEB-INF/views/mngr/goods/goodsmngr/BndeUpdtU.jsp | 2 +- .../mngr/goods/goodsmngr/CtgryGoodsListRForm.jsp | 2 +- .../WEB-INF/views/mngr/goods/goodsmngr/GoodsC.jsp | 2 +- .../views/mngr/goods/goodsmngr/GoodsCopyC.jsp | 2 +- .../WEB-INF/views/mngr/goods/goodsmngr/GoodsDtlU.jsp | 2 +- .../views/mngr/goods/goodsmngr/GoodsListRForm.jsp | 2 +- .../webapp/WEB-INF/views/mngr/goods/prsnt/PrsntC.jsp | 2 +- .../WEB-INF/views/mngr/goods/prsnt/PrsntDtlU.jsp | 2 +- .../WEB-INF/views/mngr/goods/subsvc/SubsvcC.jsp | 2 +- .../views/mngr/goods/subsvc/SubsvcListForm.jsp | 2 +- .../WEB-INF/views/mngr/goods/subsvc/SubsvcU.jsp | 2 +- .../webapp/WEB-INF/views/mngr/match/MatchMember.jsp | 2 +- .../views/mngr/ordr/subsvc/SubsvcOrdrListForm.jsp | 2 +- .../mngr/ordr/subsvc/SubsvcOrdrMappedListForm.jsp | 2 +- .../views/mngr/ordr/subsvc/SubsvcOrdrMbrListForm.jsp | 2 +- .../webapp/WEB-INF/views/mngr/puri/PuriOrderList.jsp | 2 +- .../WEB-INF/views/mngr/setup/mngr/MngrInfoDtlU.jsp | 2 +- src/main/webapp/WEB-INF/views/sample/UiCcSetE101.jsp | 2 +- 85 files changed, 101 insertions(+), 87 deletions(-) diff --git a/src/main/resources/templates/login-MNGR.html b/src/main/resources/templates/login-MNGR.html index 966af992..fca77b9d 100644 --- a/src/main/resources/templates/login-MNGR.html +++ b/src/main/resources/templates/login-MNGR.html @@ -4,7 +4,7 @@ - 일반 관리자 + <%--일반 관리자--%> diff --git a/src/main/webapp/WEB-INF/views/comm/mngr/Include.jsp b/src/main/webapp/WEB-INF/views/comm/mngr/Include.jsp index fdcfd75a..db695713 100644 --- a/src/main/webapp/WEB-INF/views/comm/mngr/Include.jsp +++ b/src/main/webapp/WEB-INF/views/comm/mngr/Include.jsp @@ -2,7 +2,7 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> - + <% response.setHeader("Cache-Control","no-cache"); response.setHeader("Pragma","no-cache"); response.setDateHeader("Expires",0); @@ -16,14 +16,20 @@ <%-- CK editor 적용 시 width 설정 --%> <%--파비콘, 메타, 타이틀--%> -일반 관리자 + + <c:choose> + <c:when test="${profiles eq 'local'}">(로컬) </c:when> + <c:when test="${profiles eq 'dev'}">(개발) </c:when> + <c:otherwise></c:otherwise> + </c:choose> + 일반 관리자 + <%--mixed Contents 대응--%> - diff --git a/src/main/webapp/WEB-INF/views/login/login-MNGR.jsp b/src/main/webapp/WEB-INF/views/login/login-MNGR.jsp index 37229100..ce86ab5c 100644 --- a/src/main/webapp/WEB-INF/views/login/login-MNGR.jsp +++ b/src/main/webapp/WEB-INF/views/login/login-MNGR.jsp @@ -6,6 +6,7 @@ <%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%> <%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%> + @@ -13,7 +14,14 @@ - 일반 관리자 + + <c:choose> + <c:when test="${profiles eq 'local'}">(로컬) </c:when> + <c:when test="${profiles eq 'dev'}">(개발) </c:when> + <c:otherwise></c:otherwise> + </c:choose> + 일반 관리자 + diff --git a/src/main/webapp/WEB-INF/views/mngr/analytics/ErpGoods.jsp b/src/main/webapp/WEB-INF/views/mngr/analytics/ErpGoods.jsp index 0bf3d46d..ebe04894 100644 --- a/src/main/webapp/WEB-INF/views/mngr/analytics/ErpGoods.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/analytics/ErpGoods.jsp @@ -19,7 +19,7 @@ - 일반 관리자 + <%--일반 관리자--%> <%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%> + +<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%> +<%@include file="/WEB-INF/views/comm/mngr/Header.jsp" %> +
+ <%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%> + <%@include file="/WEB-INF/views/comm/mngr/Left.jsp" %> +
+
+ +
+

안내문구 설정

+
+ +
+
+
+
+
+
+

회원가입 안내 설정

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
회원가입 안내 설정
회원가입 안내 타이틀 +
+ +
+
회원가입 안내문구 +
+ +
+
회원가입 주요혜택 +
+ +
+
회원가입 완료문구 +
+ +
+
구독서비스 안내문구 +
+ +
+
+
+
+
+ +
+
+
+ + + From f3918ed7b16641ae184bccf48b0c35f70c30a9ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Thu, 30 Apr 2026 16:16:58 +0900 Subject: [PATCH 81/97] =?UTF-8?q?=EC=87=BC=ED=95=91=EB=AA=B0=20>=20?= =?UTF-8?q?=EC=97=B0=EB=A0=B9=ED=99=95=EC=9D=B8=20=ED=8C=9D=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/controller/MainController.java | 10 ++++ .../webapp/WEB-INF/views/comm/Include.jsp | 21 ++++++- .../WEB-INF/views/comm/mobile/Include.jsp | 56 +++++++++++++++++++ .../views/sopmal/main/AgeChkPopupR.jsp | 40 +++++++++++++ 4 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 src/main/webapp/WEB-INF/views/sopmal/main/AgeChkPopupR.jsp diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/main/controller/MainController.java b/src/main/java/com/wb/domainserver/domain/sopmal/main/controller/MainController.java index 9df7bf53..aa2022d6 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/main/controller/MainController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/main/controller/MainController.java @@ -1015,4 +1015,14 @@ public class MainController { ); } + /** + * 연령확인 팝업 + * @return + */ + @Policy(AuthPolicy.PUBLIC) + @RequestMapping(value="/sopmal/main/selectAgeChkPopup", produces = MediaType.APPLICATION_JSON_VALUE) + public String selectAgeChkPopup(HttpServletRequest request) { + return Util.getDeviceType(request)+"/main/AgeChkPopupR"; + } + } \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/comm/Include.jsp b/src/main/webapp/WEB-INF/views/comm/Include.jsp index 54fd566a..bde31ad9 100644 --- a/src/main/webapp/WEB-INF/views/comm/Include.jsp +++ b/src/main/webapp/WEB-INF/views/comm/Include.jsp @@ -372,9 +372,8 @@ fn_reflesh_cart_cnt() - /*비밀번호 변경 알림 여부 확인*/ $(document).ready(function () { - + /*비밀번호 변경 알림 여부 확인*/ const url = ''; const originalUrl = window.location.href; let passwordAt = '<%=(String)session.getAttribute("passwordChngDeAt")%>' @@ -383,6 +382,15 @@ location.href = url + '?originalUrl=' + encodeURIComponent(originalUrl); } + /*연령확인 여부 확인*/ + let ageChked = getCookieValue("ageChk"); + if(!ageChked) { + fn_open_modal( + '#ageChkPopupDiv', + '#ageChkPopup', + '/sopmal/main/selectAgeChkPopup' + ); + } }) @@ -398,6 +406,7 @@ }%>
+
diff --git a/src/main/webapp/WEB-INF/views/comm/mobile/Include.jsp b/src/main/webapp/WEB-INF/views/comm/mobile/Include.jsp index 9000dfa2..dd170bff 100644 --- a/src/main/webapp/WEB-INF/views/comm/mobile/Include.jsp +++ b/src/main/webapp/WEB-INF/views/comm/mobile/Include.jsp @@ -90,6 +90,9 @@ <%--theme적용--%> "> +<%--font적용--%> + + <%--Web-App연동 스크립트--%> @@ -361,6 +364,8 @@ loadRecentSearches(); passwordChngDeAt(); + + ageChkAt(); fn_save_mbrdvc_info(${isAuthenticated}); }); @@ -470,6 +475,31 @@ } } + /*연령확인 여부 확인 */ + function ageChkAt() { + let ageChked = getCookieValue("ageChk"); + if(!ageChked) { + openModal('confirm_ageChk_alert'); + } + } + + const fn_ageChk_yes = function() { + closeModal('confirm_ageChk_alert') + document.cookie = "ageChk=true; path=/; max-age=86400"; + } + + const fn_ageChk_no = function() { + window.location.href = "https://m.search.naver.com/search.naver?query=사케일잔"; + } + + //쿠키 값 가져오기 + const getCookieValue = function(name) { + let matches = document.cookie.match( + new RegExp('(?:^|; )' + name + '=([^;]*)') + ); + return matches ? matches[1] : null; + } + // 최근 검색어 저장 function saveSearch(param) { let searches = JSON.parse(localStorage.getItem('recentSearches')) || []; @@ -755,6 +785,32 @@
+<%--연령확인 모달--%> + + <%--cutom 확인 모달--%> diff --git a/src/main/webapp/WEB-INF/views/mngr/ordr/dlivy/OrdrDlivyPopupForm.jsp b/src/main/webapp/WEB-INF/views/mngr/ordr/dlivy/OrdrDlivyPopupForm.jsp index d645b6db..c773e100 100644 --- a/src/main/webapp/WEB-INF/views/mngr/ordr/dlivy/OrdrDlivyPopupForm.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/ordr/dlivy/OrdrDlivyPopupForm.jsp @@ -557,7 +557,7 @@ '' + '
' + '' + - '' + + '' + '
' + '' + '' + @@ -731,7 +731,7 @@ '' + '
' + '' + - '' + + '' + '
' + '' + '' + @@ -844,21 +844,9 @@ /********************************************************************* * 배송그룹 / 방법변경 모달 , 배송 조회 모달 * *******************************************************************/ - const fn_open_dlvy_sweettracker_modal = function (modalDivSltr, modalSlrt, url, dlivyInnb) { - - $.ajax({ - type: 'POST', - url: url, - data: { - dlivyInnb : dlivyInnb - }, - success: function (data) { - $(modalSlrt).remove(); - $(modalDivSltr).html(data); - $(modalSlrt).modal(); - - } - }); + const fn_open_dlvy_popup = function (invcnb) { + let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb; + window.open(url, 'acieView', 'width=605,height=700'); } diff --git a/src/main/webapp/WEB-INF/views/mngr/ordr/ordrmngr/OrdrDtlExprtR.jsp b/src/main/webapp/WEB-INF/views/mngr/ordr/ordrmngr/OrdrDtlExprtR.jsp index 3915474f..e4254230 100644 --- a/src/main/webapp/WEB-INF/views/mngr/ordr/ordrmngr/OrdrDtlExprtR.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/ordr/ordrmngr/OrdrDtlExprtR.jsp @@ -123,7 +123,7 @@ - 조회 + 조회
@@ -176,7 +176,7 @@ - 조회 + 조회
diff --git a/src/main/webapp/WEB-INF/views/mngr/ordr/ordrmngr/OrdrDtlInqireR.jsp b/src/main/webapp/WEB-INF/views/mngr/ordr/ordrmngr/OrdrDtlInqireR.jsp index b0380dd1..8ebb6617 100644 --- a/src/main/webapp/WEB-INF/views/mngr/ordr/ordrmngr/OrdrDtlInqireR.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/ordr/ordrmngr/OrdrDtlInqireR.jsp @@ -942,19 +942,9 @@ } /* 출고내역 주문배송 정보 조회 */ - const fn_open_dlvy_sweettracker_modal = function(dlivyInnb) { - $.ajax({ - type:'post', - url:'', - data:{ - 'dlivyInnb':dlivyInnb - }, - success:function (html) { - $('#modalDiv').html(html); - - $('#delivery-history-pop').remove().modal(); - } - }); + const fn_open_dlvy_popup = function(invcnb) { + let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb; + window.open(url, 'acieView', 'width=605,height=700'); } /* 배송그룹/방법 변경 정보 조회 */ diff --git a/src/main/webapp/WEB-INF/views/mngr/ordr/refnd/RtngudRefndDtlInqireR.jsp b/src/main/webapp/WEB-INF/views/mngr/ordr/refnd/RtngudRefndDtlInqireR.jsp index abdbf463..fccd822a 100644 --- a/src/main/webapp/WEB-INF/views/mngr/ordr/refnd/RtngudRefndDtlInqireR.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/ordr/refnd/RtngudRefndDtlInqireR.jsp @@ -1313,19 +1313,9 @@ } /* 출고내역 주문배송 정보 조회 */ - const fn_open_dlvy_sweettracker_modal = function(dlivyInnb) { - $.ajax({ - type:'post', - url:'', - data:{ - 'dlivyInnb':dlivyInnb - }, - success:function (html) { - $('#modalDiv').html(html); - - $('#delivery-history-pop').remove().modal(); - } - }); + const fn_open_dlvy_popup = function(invcnb) { + let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb; + window.open(url, 'acieView', 'width=605,height=700'); } /* 무효/취소/반품 내역 정보 조회 */ diff --git a/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp b/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp index a75b0bf6..e2455fdd 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/mpage/ordr/OrdrDtlR.jsp @@ -731,17 +731,21 @@ } /* 배송조회 팝업 화면 호출 */ - const fn_call_dlvy_sweettracker_pop = function (ordrInnb) { + const fn_open_dlvy_popup = function (ordrDlvyInnb) { $.ajax({ type:'post', url:'', data:{ - ordrInnb:ordrInnb + ordrDlvyInnb:ordrDlvyInnb }, success:function (data) { - $('#modalDiv').html(data); + // $('#modalDiv').html(data); + // + // $('#delivery-check-pop').remove().modal(); - $('#delivery-check-pop').remove().modal(); + let invcnb = JSON.parse(data.resBody.result).invcnb; + let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb; + window.open(url, 'acieView', 'width=605,height=700'); } }); } @@ -1328,7 +1332,7 @@
- ');" id="inqireDlvy" class="btn-ordr-sttus btn outline sm full">배송조회 + ');" id="inqireDlvy" class="btn-ordr-sttus btn outline sm full">배송조회 ');">반품신청 @@ -1477,7 +1481,7 @@ ');">반품신청 - ');" id="inqireDlvy" class="btn-ordr-sttus btn outline sm full">배송조회 + ');" id="inqireDlvy" class="btn-ordr-sttus btn outline sm full">배송조회 ');">반품신청 diff --git a/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp b/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp index 3d8528bf..cd506f55 100644 --- a/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal_m/mpage/ordr/OrdrDtlR.jsp @@ -425,17 +425,21 @@ /* 배송조회 팝업 화면 호출 */ - const fn_call_dlvy_sweettracker_pop = function (ordrInnb) { + const fn_call_dlvy_pop = function (ordrDlvyInnb) { $.ajax({ type: 'post', url: '/sopmal/mpage/ordr/selectDlvyInqire', data: { - ordrInnb: ordrInnb + ordrDlvyInnb:ordrDlvyInnb }, success: function (data) { - $('#deliveryInfoPop').remove(); - $('#modalDiv').html(data); - openModal2('deliveryInfoPop'); + // $('#modalDiv').html(data); + // + // $('#delivery-check-pop').remove().modal(); + + let invcnb = JSON.parse(data.resBody.result).invcnb; + let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb; + window.open(url, '_blank'); } }); } @@ -794,7 +798,7 @@ ');">반품신청 - 배송조회 + 배송조회 ');">반품신청 @@ -938,7 +942,7 @@ 결제취소 - 배송조회 + 배송조회 ');">반품신청 From f590507308cbb43d5a81e43679ae7a6c50dcaa24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A3=BC=EC=9D=BC?= Date: Thu, 28 May 2026 16:11:46 +0900 Subject: [PATCH 95/97] =?UTF-8?q?fix=20:=20FAQ=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC=20=EB=B2=84=ED=8A=BC=20=ED=8F=B0=ED=8A=B8=20?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=EC=A6=88=20=EC=A1=B0=EC=A0=95=20(15px=20?= =?UTF-8?q?=E2=86=92=2014px)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp b/src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp index 89a0867c..1aeffc5c 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp @@ -18,6 +18,14 @@ + + <%-- 공통 include --%> From 262c9ba03e0a698ae765f1cd60125558cdeedb25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Thu, 28 May 2026 18:26:18 +0900 Subject: [PATCH 96/97] =?UTF-8?q?ACI=20Express=20apikey=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 3 +++ src/main/resources/application-stage.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index c444ac13..bf1de382 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -365,6 +365,9 @@ mngrfo: secret: key: 1df5be2f7e90ae36 +aciexpress: + apikey: DC94F29AFD5399F54AAE7FAA46045B65 + host: img: https://19d28cf7178139ad.kinxzone.com diff --git a/src/main/resources/application-stage.yml b/src/main/resources/application-stage.yml index 328ba1e4..ac77cb92 100644 --- a/src/main/resources/application-stage.yml +++ b/src/main/resources/application-stage.yml @@ -365,6 +365,9 @@ mngrfo: secret: key: 1df5be2f7e90ae36 +aciexpress: + apikey: DC94F29AFD5399F54AAE7FAA46045B65 + host: img: https://19b0bde6dcdc15ad.kinxzone.com/ From de463cbb8fee06eac7d1de8c82bd0bcde56f571f Mon Sep 17 00:00:00 2001 From: claudecode Date: Thu, 28 May 2026 23:09:49 +0900 Subject: [PATCH 97/97] =?UTF-8?q?fix:=20FAQ=20=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=20=ED=99=94=EB=A9=B4=20=EC=95=84=EC=BD=94=EB=94=94=EC=96=B8=20?= =?UTF-8?q?=EC=95=84=EC=BD=94=EB=94=94=EC=96=B8=20Ajax=20=EC=9D=91?= =?UTF-8?q?=EB=8B=B5=20=EC=B2=98=EB=A6=AC=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CscListRForm.jsp 117번줄: data 변수 덮어쓰기 방지 data = JSON.parse(...) → const parsed = JSON.parse(...) - fn_branch_bbsctt_posble 호출 시 parsed 전달로 변경 - 원인: data 변수 재사용으로 data.result.moveAt 접근 불가 --- src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp b/src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp index 1aeffc5c..fa24aa51 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/csc/CscListRForm.jsp @@ -114,8 +114,8 @@ "crudDv": crudDv }, success: function (data) { - data = JSON.parse(data.resBody.result); - fn_branch_bbsctt_posble(data, idx); + const parsed = JSON.parse(data.resBody.result); + fn_branch_bbsctt_posble(parsed, idx); } }); }