TsfPgController.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package com.style24.front.biz.web;
  2. import java.io.PrintWriter;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.core.env.Environment;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.util.StringUtils;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.ResponseBody;
  12. import org.springframework.web.servlet.ModelAndView;
  13. import com.style24.core.biz.service.TscOrderService;
  14. import com.style24.front.biz.service.TsfOrderService;
  15. import com.style24.front.support.controller.TsfBaseController;
  16. import com.style24.front.support.security.session.TsfSession;
  17. import com.style24.persistence.domain.Order;
  18. import com.style24.persistence.domain.Payment;
  19. import kr.co.kcp.net.connection.ConnectionKCP;
  20. import kr.co.kcp.net.connection.dto.ParamData;
  21. import kr.co.kcp.net.connection.util.HttpJsonXml;
  22. import kr.co.kcp.net.connection.util.OpenHash;
  23. import lombok.extern.slf4j.Slf4j;
  24. @Controller
  25. @RequestMapping("/pg")
  26. @Slf4j
  27. public class TsfPgController extends TsfBaseController {
  28. @Autowired
  29. private TscOrderService coreOrderService;
  30. @Autowired
  31. private TsfOrderService orderService;
  32. @Autowired
  33. private Environment env;
  34. /**
  35. * 무통장입금 입금통보
  36. *
  37. * @param
  38. * @return
  39. * @author xodud1202
  40. * @since 2021. 03. 05
  41. */
  42. @RequestMapping(value = "/kcp/vBankEnd")
  43. public ModelAndView vBankEnd(Payment param, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception{
  44. try { request.setCharacterEncoding("euc-kr"); } catch(Exception e) { }
  45. PrintWriter out = response.getWriter();
  46. String result = "0000";
  47. try {
  48. String opCd = request.getParameter("op_cd"); // 13이 오면 입금이 잘못된 경우로 취소 노티가 온다고함. 13이 아닌 경우에만 진행해야할듯함.
  49. String txCd = request.getParameter("tx_cd"); // 무통장 입금 통보는 TX00(PC), TX08(MOB). 아닐경우 처리 X
  50. if("13".equals(opCd) || !("TX00".equals(txCd) || "TX08".equals(txCd))) {
  51. return null;
  52. }
  53. // TODO 2021.03.15 jsh77b 무통장입금 결제완료 처리
  54. Order order = new Order();
  55. order.setOrdNo(Integer.parseInt(request.getParameter("order_no")));
  56. order.setPgTid(request.getParameter("tno"));
  57. order.setCashAuthNo(request.getParameter("cash_a_no"));
  58. order.setCashTradeNo(request.getParameter("cash_no"));
  59. order.setCustNo(0);
  60. order.setUpdNo(0);
  61. coreOrderService.updateOrderInfoVBank(order);
  62. } catch(Exception e) {
  63. result = "9999"; // 실패. return 하지 말것.
  64. }
  65. // 결과 데이터 세팅 ("0000"은 성공, 그 외에는 실패. 실패시에 입금 결과 재통보)
  66. out.print("<html><body><form><input type='hidden' name='result' value='" + result + "'></form></body></html>");
  67. return null;
  68. }
  69. /**
  70. * KCP 모바일 appoval 페이지
  71. *
  72. * @param
  73. * @return
  74. * @author xodud1202
  75. * @since 2021. 03. 05
  76. */
  77. @RequestMapping(value = "/kcp/approval")
  78. public ModelAndView kcpApproval(Payment param, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception{
  79. try { request.setCharacterEncoding("euc-kr"); } catch(Exception e) { }
  80. response.setContentType("text/html;charset=euc-kr");
  81. response.setHeader("Cache-Control","no-store");
  82. response.setHeader("Pragma","no-cache");
  83. response.setDateHeader("Expires",0);
  84. PrintWriter out = response.getWriter();
  85. ConnectionKCP suc = new ConnectionKCP(); // KCP 인증 정보를 저장하기 위한 Object ( 통신의 기본이 되는 객체 ) - 필수
  86. OpenHash oh = new OpenHash(); // KCP 와 통신시 데이터 위변조를 확인 하기 위한 Hash Object ( 업체와 KCP 간의 통신시 데이터 위변조를 확인 하기 위해 필요. 미설정시 통신 구간만 라이브러리에서 자체적으로 hash 처리 )
  87. HttpJsonXml hjx = new HttpJsonXml(); // 응답값 get value 형식으로 가져올수 있는 Object ( Java 또는 JSP 내에서 데이터를 파싱할때 필요 - XML 또는 JSON )
  88. ParamData pd = new ParamData(); // 파라메타 값을 세팅할수 있는 bean Object ( String, HashMap 등으로 대체 가능 )
  89. pd.setGood_mny(request.getParameter("good_mny"));
  90. pd.setGood_name(request.getParameter("good_name"));
  91. pd.setOrdr_idxx(request.getParameter("ordr_idxx"));
  92. pd.setPay_method(request.getParameter("pay_method"));
  93. pd.setRet_URL(request.getParameter("Ret_URL"));
  94. pd.setSite_cd(request.getParameter("site_cd"));
  95. pd.setEscw_used(request.getParameter("escw_used") == null ? "" : request.getParameter("escw_used"));
  96. String responseType = request.getParameter("response_type");
  97. if("JSON".equals(responseType) || "XML".equals(responseType)) {
  98. pd.setResponse_type(responseType);
  99. }
  100. out.println( suc.kcpPaymentSmartPhone(request, Boolean.parseBoolean(env.getProperty("pg.kcp.server")), pd, env.getProperty("pg.kcp.log.dir"))); // 이클립스 상에서 메서드를 클릭 후 F2를 누르면 상세 내용이 나옵니다.
  101. return null;
  102. }
  103. /**
  104. * 결제 PG 요청 완료
  105. *
  106. * @param
  107. * @return
  108. * @author xodud1202
  109. * @since 2021. 03. 05
  110. */
  111. @ResponseBody
  112. @RequestMapping(value = "/pay/result/response")
  113. public ModelAndView payResultResponse(Payment param, HttpServletRequest request, HttpServletResponse response) {
  114. ModelAndView mav = new ModelAndView();
  115. Order order = new Order();
  116. // 1. 로그인체크 후 custNo 설정
  117. if (TsfSession.isLogin()) {
  118. param.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  119. order.setCustNo(TsfSession.getInfo().getCustNo());
  120. } else {
  121. param.setCustNo(0);
  122. order.setCustNo(0);
  123. }
  124. param.setUpdNo(param.getCustNo());
  125. param.setFrontGb(TsfSession.getFrontGb());
  126. // 2. 결재정보등록(TB_PAYMENT)
  127. param = orderService.orderPgPayResult(param, request, response);
  128. order.setOrdNo(param.getOrdNo());
  129. order.setSellGb("10");
  130. order.setPgGb(param.getPgGb());
  131. order.setPayMeans(param.getPayMeans());
  132. // TODO 3. 주문정보 업데이트
  133. coreOrderService.updateOrderInfo(order);
  134. mav.addObject("payment", param);
  135. mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
  136. return mav;
  137. }
  138. }