EasypayPaymentService.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. package com.oqpo.api.service.loanmng;
  2. import com.kicc.EasyPayClient;
  3. import com.oqpo.api.entity.oper.UserMngEntity;
  4. import com.oqpo.api.exception.GlobalException;
  5. import com.oqpo.api.mapper.loanmng.UnpaidMngMapper;
  6. import com.oqpo.api.mapper.oper.UserMngMapper;
  7. import com.oqpo.api.service.CommonService;
  8. import com.oqpo.api.util.StringUtil;
  9. import com.oqpo.api.web.dto.request.loanmng.EasypayPaymentCreateRequest;
  10. import com.oqpo.api.web.dto.request.loanmng.EasypayPaymentRequest;
  11. import com.oqpo.api.web.dto.response.loanmng.EasypayPaymentCreateResponse;
  12. import com.oqpo.api.web.dto.response.loanmng.EasypayPaymentResponse;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.transaction.annotation.Transactional;
  18. import javax.servlet.http.HttpServletRequest;
  19. @Service
  20. @Slf4j
  21. public class EasypayPaymentService extends CommonService {
  22. @Autowired
  23. private UnpaidMngMapper unpaidMngMapper;
  24. private UserMngMapper userMngMapper;
  25. @Value("${kicc.gateway}")
  26. private String kiccGatewayUrl;
  27. @Value("${kicc.cert_dir}")
  28. private String kiccCertFile;
  29. @Value("${kicc.log_dir}")
  30. private String kiccLogDir;
  31. @Value("${kicc.javascript_url}")
  32. private String kiccJavaScriptUrl;
  33. @Value("${kicc.action.web_url}")
  34. private String kiccActionWebUrl;
  35. @Value("${kicc.action.mobile_url}")
  36. private String kiccActionMobileUrl;
  37. /* 결제 생성 */
  38. @Transactional
  39. public EasypayPaymentCreateResponse createPayment(String userId, EasypayPaymentCreateRequest easypayPaymentCreateRequest) throws Exception {
  40. EasypayPaymentCreateResponse response = new EasypayPaymentCreateResponse();
  41. // 1. 주문번호 생성
  42. response.setPoOrdNo(fnGetDealNo(36, ""));
  43. // TODO 2. 이지페이 결제요청 데이터 생성
  44. // 3. 사용자정보 조회 및 매핑
  45. UserMngEntity userInfo = userMngMapper.selectUserInfo(userId);
  46. response.setOrdNm(userInfo.getUserNm()); // 구매자명
  47. response.setOrdTel(StringUtil.isEmpty(userInfo.getTelNo()) && userInfo.getTelNo().startsWith("010") ? userInfo.getTelNo() : null); // 휴대전화번호
  48. response.setOrdEmail(userInfo.getEmail()); // 이메일
  49. // 4. 이지페이 결제 URL 매핑
  50. response.setKicc_javascript_url(kiccJavaScriptUrl);
  51. response.setKicc_action_web_url(kiccActionWebUrl);
  52. response.setKicc_action_mobile_url(kiccActionMobileUrl);
  53. return response;
  54. }
  55. /* 결제 요청 */
  56. @Transactional
  57. public EasypayPaymentResponse requestPayment(String userId, HttpServletRequest request, EasypayPaymentRequest easypayPaymentRequest) throws Exception {
  58. try {
  59. /* -------------------------------------------------------------------------- */
  60. /* ::: 처리구분 설정 */
  61. /* -------------------------------------------------------------------------- */
  62. final String TRAN_CD_NOR_PAYMENT = "00101000"; // 승인(일반, 에스크로)
  63. final String TRAN_CD_NOR_MGR = "00201000"; // 변경(일반, 에스크로)
  64. @SuppressWarnings("unused") final String TRAN_CD_NOR_MALL = "00201030"; // 셀러(다중정산)
  65. /* -------------------------------------------------------------------------- */
  66. /* ::: 지불정보 설정 */
  67. /* -------------------------------------------------------------------------- */
  68. final String GW_URL = (String) kiccGatewayUrl; // GatewayURL
  69. final String GW_PORT = "80"; // 포트번호(변경불가)
  70. /* -------------------------------------------------------------------------- */
  71. /* ::: 지불 데이터 셋업 (업체에 맞게 수정) */
  72. /* -------------------------------------------------------------------------- */
  73. /* ※ 주의 ※ */
  74. /* cert_file 변수 설정 */
  75. /* - pg_cert.pem 파일이 있는 디렉토리의 절대 경로 설정 */
  76. /* log_dir 변수 설정 */
  77. /* - log 디렉토리 설정 */
  78. /* log_level 변수 설정 */
  79. /* - log 레벨 설정 (1 to 99(높을수록 상세)) */
  80. /* -------------------------------------------------------------------------- */
  81. final String CERT_FILE = (String) kiccCertFile;
  82. final String LOG_DIR = (String) kiccLogDir;
  83. final int LOG_LEVEL = 1;
  84. /* -------------------------------------------------------------------------- */
  85. /* ::: 승인요청 정보 설정 */
  86. /* -------------------------------------------------------------------------- */
  87. // [헤더]
  88. String tr_cd = ""; // [필수]결제창요청구분
  89. String trace_no = ""; // [필수]추적번호
  90. String order_no = ""; // [필수]가맹점주문번호
  91. String mall_id = ""; // [필수]가맹점ID
  92. // [공통]
  93. String encrypt_data = ""; // [필수]암호화전문
  94. String sessionkey = ""; // [필수]세션키
  95. if (!StringUtil.isEmpty(easypayPaymentRequest.getSp_tr_cd())) {
  96. // [헤더]
  97. tr_cd = StringUtil.null2str(easypayPaymentRequest.getSp_tr_cd()); // [필수]결제창요청구분
  98. trace_no = StringUtil.null2str(easypayPaymentRequest.getSp_trace_no()); // [필수]추적번호
  99. order_no = StringUtil.null2str(easypayPaymentRequest.getSp_order_no()); // [필수]가맹점주문번호
  100. mall_id = StringUtil.null2str(easypayPaymentRequest.getSp_mall_id()); // [필수]가맹점ID
  101. // [공통]
  102. encrypt_data = StringUtil.null2str(easypayPaymentRequest.getSp_encrypt_data()); // [필수]암호화전문
  103. sessionkey = StringUtil.null2str(easypayPaymentRequest.getSp_sessionkey()); // [필수]세션키
  104. } else {
  105. // [헤더]
  106. tr_cd = StringUtil.null2str(easypayPaymentRequest.getEP_tr_cd()); // [필수]결제창요청구분
  107. trace_no = StringUtil.null2str(easypayPaymentRequest.getEP_trace_no()); // [필수]추적번호
  108. order_no = StringUtil.null2str(easypayPaymentRequest.getEP_order_no()); // [필수]가맹점주문번호
  109. mall_id = StringUtil.null2str(easypayPaymentRequest.getEP_mall_id()); // [필수]가맹점ID
  110. // [공통]
  111. encrypt_data = StringUtil.null2str(easypayPaymentRequest.getEP_encrypt_data()); // [필수]암호화전문
  112. sessionkey = StringUtil.null2str(easypayPaymentRequest.getEP_sessionkey()); // [필수]세션키
  113. }
  114. /* -------------------------------------------------------------------------- */
  115. /* ::: 변경관리 정보 설정 */
  116. /* -------------------------------------------------------------------------- */
  117. String mgr_txtype = StringUtil.null2str(easypayPaymentRequest.getMgr_txtype()); // [필수]거래구분
  118. String mgr_subtype = StringUtil.null2str(easypayPaymentRequest.getMgr_subtype()); // [선택]변경세부구분
  119. String org_cno = StringUtil.null2str(easypayPaymentRequest.getOrg_cno()); // [필수]원거래고유번호
  120. String mgr_amt = StringUtil.null2str(easypayPaymentRequest.getMgr_amt()); // [선택]금액
  121. String mgr_rem_amt = StringUtil.null2str(easypayPaymentRequest.getMgr_rem_amt()); // [선택]부분취소잔액
  122. String mgr_bank_cd = StringUtil.null2str(easypayPaymentRequest.getMgr_bank_cd()); // [선택]환불계좌은행코드
  123. String mgr_account = StringUtil.null2str(easypayPaymentRequest.getMgr_account()); // [선택]환불계좌번호
  124. String mgr_depositor = StringUtil.null2str(easypayPaymentRequest.getMgr_depositor()); // [선택]환불계좌예금주명
  125. /* -------------------------------------------------------------------------- */
  126. /* ::: 전문 */
  127. /* -------------------------------------------------------------------------- */
  128. // String mgr_data = ""; // 변경정보
  129. // String mall_data = ""; // 요청전문
  130. /* -------------------------------------------------------------------------- */
  131. /* ::: 결제 결과 */
  132. /* -------------------------------------------------------------------------- */
  133. String bDBProc = ""; //가맹점DB처리성공여부
  134. String res_cd = ""; //응답코드
  135. String res_msg = ""; //응답메시지
  136. String r_cno = ""; //PG거래번호
  137. String r_amount = ""; //총 결제금액
  138. String r_order_no = ""; //주문번호
  139. String r_auth_no = ""; //승인번호
  140. String r_tran_date = ""; //승인일시
  141. String r_escrow_yn = ""; //에스크로 사용유무
  142. String r_complex_yn = ""; //복합결제 유무
  143. String r_stat_cd = ""; //상태코드
  144. String r_stat_msg = ""; //상태메시지
  145. String r_pay_type = ""; //결제수단
  146. String r_mall_id = ""; //가맹점 Mall ID
  147. String r_card_no = ""; //카드번호
  148. String r_issuer_cd = ""; //발급사코드
  149. String r_issuer_nm = ""; //발급사명
  150. String r_acquirer_cd = ""; //매입사코드
  151. String r_acquirer_nm = ""; //매입사명
  152. String r_install_period = ""; //할부개월
  153. String r_noint = ""; //무이자여부
  154. String r_part_cancel_yn = ""; //부분취소 가능여부
  155. String r_card_gubun = ""; //신용카드 종류
  156. String r_card_biz_gubun = ""; //신용카드 구분
  157. String r_cpon_flag = ""; //쿠폰사용유무
  158. String r_bank_cd = ""; //은행코드
  159. String r_bank_nm = ""; //은행명
  160. String r_account_no = ""; //계좌번호
  161. String r_deposit_nm = ""; //입금자명
  162. String r_expire_date = ""; //계좌사용만료일
  163. String r_cash_res_cd = ""; //현금영수증 결과코드
  164. String r_cash_res_msg = ""; //현금영수증 결과메세지
  165. String r_cash_auth_no = ""; //현금영수증 승인번호
  166. String r_cash_tran_date = ""; //현금영수증 승인일시
  167. String r_cash_issue_type = ""; //현금영수증발행용도
  168. String r_cash_auth_type = ""; //인증구분
  169. String r_cash_auth_value = ""; //인증번호
  170. String r_auth_id = ""; //PhoneID
  171. String r_billid = ""; //인증번호
  172. String r_mobile_no = ""; //휴대폰번호
  173. String r_mob_ansim_yn = ""; //안심결제 사용유무
  174. String r_ars_no = ""; //전화번호
  175. String r_cp_cd = ""; //포인트사/쿠폰사
  176. String r_cpon_auth_no = ""; //쿠폰승인번호
  177. String r_cpon_tran_date = ""; //쿠폰승인일시
  178. String r_cpon_no = ""; //쿠폰번호
  179. String r_remain_cpon = ""; //쿠폰잔액
  180. String r_used_cpon = ""; //쿠폰 사용금액
  181. String r_rem_amt = ""; //잔액
  182. String r_bk_pay_yn = ""; //장바구니 결제여부
  183. String r_canc_acq_date = ""; //매입취소일시
  184. String r_canc_date = ""; //취소일시
  185. String r_refund_date = ""; //환불예정일시
  186. /* -------------------------------------------------------------------------- */
  187. /* ::: EasyPayClient 인스턴스 생성 [변경불가 !!]. */
  188. /* -------------------------------------------------------------------------- */
  189. EasyPayClient easyPayClient = new EasyPayClient();
  190. easyPayClient.easypay_setenv_init(GW_URL, GW_PORT, CERT_FILE, LOG_DIR, LOG_LEVEL);
  191. easyPayClient.easypay_reqdata_init();
  192. /* -------------------------------------------------------------------------- */
  193. /* ::: 승인요청(플러그인 암호화 전문 설정) */
  194. /* -------------------------------------------------------------------------- */
  195. if (TRAN_CD_NOR_PAYMENT.equals(tr_cd)) {
  196. // 승인요청 전문 설정
  197. easyPayClient.easypay_set_trace_no(trace_no);
  198. easyPayClient.easypay_encdata_set(encrypt_data, sessionkey);
  199. }
  200. /* -------------------------------------------------------------------------- */
  201. /* ::: 변경관리 요청 */
  202. /* -------------------------------------------------------------------------- */
  203. else if (TRAN_CD_NOR_MGR.equals(tr_cd)) {
  204. int easypay_mgr_data_item;
  205. easypay_mgr_data_item = easyPayClient.easypay_item("mgr_data");
  206. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_txtype", mgr_txtype); // [필수]거래구분
  207. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_subtype", mgr_subtype); // [선택]변경세부구분
  208. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "org_cno", org_cno); // [필수]원거래고유번호
  209. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_amt", mgr_amt); // [선택]금액
  210. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_rem_amt", mgr_rem_amt); // [선택]부분취소 잔액
  211. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_bank_cd", mgr_bank_cd); // [선택]환불계좌 은행코드
  212. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_account", mgr_account); // [선택]환불계좌 번호
  213. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_depositor", mgr_depositor); // [선택]환불계좌 예금주명
  214. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "req_ip", request.getRemoteAddr());// [필수]요청자 IP
  215. }
  216. /* -------------------------------------------------------------------------- */
  217. /* ::: 실행 */
  218. /* -------------------------------------------------------------------------- */
  219. if (tr_cd.length() > 0) {
  220. easyPayClient.easypay_run(mall_id, tr_cd, order_no);
  221. res_cd = easyPayClient.res_cd;
  222. res_msg = easyPayClient.res_msg;
  223. } else {
  224. res_cd = "M114";
  225. res_msg = "연동 오류|tr_cd값이 설정되지 않았습니다.";
  226. }
  227. /* -------------------------------------------------------------------------- */
  228. /* ::: 결과 처리 */
  229. /* -------------------------------------------------------------------------- */
  230. r_cno = easyPayClient.easypay_get_res("cno"); //PG거래번호
  231. r_amount = easyPayClient.easypay_get_res("amount"); //총 결제금액
  232. r_order_no = easyPayClient.easypay_get_res("order_no"); //주문번호
  233. r_auth_no = easyPayClient.easypay_get_res("auth_no"); //승인번호
  234. r_tran_date = easyPayClient.easypay_get_res("tran_date"); //승인일시
  235. r_escrow_yn = easyPayClient.easypay_get_res("escrow_yn"); //에스크로 사용유무
  236. r_complex_yn = easyPayClient.easypay_get_res("complex_yn"); //복합결제 유무
  237. r_stat_cd = easyPayClient.easypay_get_res("stat_cd"); //상태코드
  238. r_stat_msg = easyPayClient.easypay_get_res("stat_msg"); //상태메시지
  239. r_pay_type = easyPayClient.easypay_get_res("pay_type"); //결제수단
  240. r_mall_id = easyPayClient.easypay_get_res("mall_id"); //가맹점 Mall ID
  241. r_card_no = easyPayClient.easypay_get_res("card_no"); //카드번호
  242. r_issuer_cd = easyPayClient.easypay_get_res("issuer_cd"); //발급사코드
  243. r_issuer_nm = easyPayClient.easypay_get_res("issuer_nm"); //발급사명
  244. r_acquirer_cd = easyPayClient.easypay_get_res("acquirer_cd"); //매입사코드
  245. r_acquirer_nm = easyPayClient.easypay_get_res("acquirer_nm"); //매입사명
  246. r_install_period = easyPayClient.easypay_get_res("install_period"); //할부개월
  247. r_noint = easyPayClient.easypay_get_res("noint"); //무이자여부
  248. r_part_cancel_yn = easyPayClient.easypay_get_res("part_cancel_yn"); //부분취소 가능여부
  249. r_card_gubun = easyPayClient.easypay_get_res("card_gubun"); //신용카드 종류
  250. r_card_biz_gubun = easyPayClient.easypay_get_res("card_biz_gubun"); //신용카드 구분
  251. r_cpon_flag = easyPayClient.easypay_get_res("cpon_flag"); //쿠폰사용유무
  252. r_bank_cd = easyPayClient.easypay_get_res("bank_cd"); //은행코드
  253. r_bank_nm = easyPayClient.easypay_get_res("bank_nm"); //은행명
  254. r_account_no = easyPayClient.easypay_get_res("account_no"); //계좌번호
  255. r_deposit_nm = easyPayClient.easypay_get_res("deposit_nm"); //입금자명
  256. r_expire_date = easyPayClient.easypay_get_res("expire_date"); //계좌사용만료일
  257. r_cash_res_cd = easyPayClient.easypay_get_res("cash_res_cd"); //현금영수증 결과코드
  258. r_cash_res_msg = easyPayClient.easypay_get_res("cash_res_msg"); //현금영수증 결과메세지
  259. r_cash_auth_no = easyPayClient.easypay_get_res("cash_auth_no"); //현금영수증 승인번호
  260. r_cash_tran_date = easyPayClient.easypay_get_res("cash_tran_date"); //현금영수증 승인일시
  261. r_cash_issue_type = easyPayClient.easypay_get_res("cash_issue_type"); //현금영수증발행용도
  262. r_cash_auth_type = easyPayClient.easypay_get_res("cash_auth_type"); //인증구분
  263. r_cash_auth_value = easyPayClient.easypay_get_res("cash_auth_value"); //인증번호
  264. r_auth_id = easyPayClient.easypay_get_res("auth_id"); //PhoneID
  265. r_billid = easyPayClient.easypay_get_res("billid"); //인증번호
  266. r_mobile_no = easyPayClient.easypay_get_res("mobile_no"); //휴대폰번호
  267. r_mob_ansim_yn = easyPayClient.easypay_get_res("mob_ansim_yn"); //안심결제 사용유무
  268. r_ars_no = easyPayClient.easypay_get_res("ars_no"); //전화번호
  269. r_cp_cd = easyPayClient.easypay_get_res("cp_cd"); //포인트사/쿠폰사
  270. r_cpon_auth_no = easyPayClient.easypay_get_res("cpon_auth_no"); //쿠폰승인번호
  271. r_cpon_tran_date = easyPayClient.easypay_get_res("cpon_tran_date"); //쿠폰승인일시
  272. r_cpon_no = easyPayClient.easypay_get_res("cpon_no"); //쿠폰번호
  273. r_remain_cpon = easyPayClient.easypay_get_res("remain_cpon"); //쿠폰잔액
  274. r_used_cpon = easyPayClient.easypay_get_res("used_cpon"); //쿠폰 사용금액
  275. r_rem_amt = easyPayClient.easypay_get_res("rem_amt"); //잔액
  276. r_bk_pay_yn = easyPayClient.easypay_get_res("bk_pay_yn"); //장바구니 결제여부
  277. r_canc_acq_date = easyPayClient.easypay_get_res("canc_acq_date"); //매입취소일시
  278. r_canc_date = easyPayClient.easypay_get_res("canc_date"); //취소일시
  279. r_refund_date = easyPayClient.easypay_get_res("refund_date"); //환불예정일시
  280. /* -------------------------------------------------------------------------- */
  281. /* ::: 가맹점 DB 처리 */
  282. /* -------------------------------------------------------------------------- */
  283. /* 응답코드(res_cd)가 "0000" 이면 정상승인 입니다. */
  284. /* r_amount가 주문DB의 금액과 다를 시 반드시 취소 요청을 하시기 바랍니다. */
  285. /* DB 처리 실패 시 취소 처리를 해주시기 바랍니다. */
  286. /* -------------------------------------------------------------------------- */
  287. log.info("[REQUEST_PAYMENT] res_cd : " + res_cd);
  288. EasypayPaymentResponse easyResult = new EasypayPaymentResponse();
  289. easyResult.setRes_cd(res_cd);
  290. easyResult.setRes_msg(res_msg);
  291. easyResult.setCno(r_cno);
  292. easyResult.setAmount(r_amount);
  293. easyResult.setOrder_no(r_order_no);
  294. easyResult.setAuth_no(r_auth_no);
  295. easyResult.setTran_date(r_tran_date);
  296. easyResult.setEscrow_yn(r_escrow_yn);
  297. easyResult.setComplex_yn(r_complex_yn);
  298. easyResult.setStat_cd(r_stat_cd);
  299. easyResult.setStat_msg(r_stat_msg);
  300. easyResult.setPay_type(r_pay_type);
  301. easyResult.setMall_id(r_mall_id);
  302. easyResult.setCard_no(r_card_no);
  303. easyResult.setIssuer_cd(r_issuer_cd);
  304. easyResult.setIssuer_nm(r_issuer_nm);
  305. easyResult.setAcquirer_cd(r_acquirer_cd);
  306. easyResult.setAcquirer_nm(r_acquirer_nm);
  307. easyResult.setInstall_period(r_install_period);
  308. easyResult.setNoint(r_noint);
  309. easyResult.setPart_cancel_yn(r_part_cancel_yn);
  310. easyResult.setCard_gubun(r_card_gubun);
  311. easyResult.setCard_biz_gubun(r_card_biz_gubun);
  312. easyResult.setCpon_flag(r_cpon_flag);
  313. easyResult.setBank_cd(r_bank_cd);
  314. easyResult.setBank_nm(r_bank_nm);
  315. easyResult.setAccount_no(r_account_no);
  316. easyResult.setDeposit_nm(r_deposit_nm);
  317. easyResult.setExpire_date(r_expire_date);
  318. easyResult.setCash_res_cd(r_cash_res_cd);
  319. easyResult.setCash_res_msg(r_cash_res_msg);
  320. easyResult.setCash_auth_no(r_cash_auth_no);
  321. easyResult.setCash_tran_date(r_cash_tran_date);
  322. easyResult.setCash_issue_type(r_cash_issue_type);
  323. easyResult.setCash_auth_type(r_cash_auth_type);
  324. easyResult.setCash_auth_value(r_cash_auth_value);
  325. easyResult.setAuth_id(r_auth_id);
  326. easyResult.setBillid(r_billid);
  327. easyResult.setMobile_no(r_mobile_no);
  328. easyResult.setMob_ansim_yn(r_mob_ansim_yn);
  329. easyResult.setArs_no(r_ars_no);
  330. easyResult.setCp_cd(r_cp_cd);
  331. easyResult.setCpon_auth_no(r_cpon_auth_no);
  332. easyResult.setCpon_tran_date(r_cpon_tran_date);
  333. easyResult.setCpon_no(r_cpon_no);
  334. easyResult.setRemain_cpon(r_remain_cpon);
  335. easyResult.setUsed_cpon(r_used_cpon);
  336. easyResult.setRem_amt(r_rem_amt);
  337. easyResult.setBk_pay_yn(r_bk_pay_yn);
  338. easyResult.setCanc_acq_date(r_canc_acq_date);
  339. easyResult.setCanc_date(r_canc_date);
  340. easyResult.setRefund_date(r_refund_date);
  341. if (res_cd.equals("0000")) {
  342. bDBProc = "true"; // DB처리 성공 시 "true", 실패 시 "false"
  343. try {
  344. // TbSaleHeaderModel saleHeader = (TbSaleHeaderModel) SessionUtil.getAttribute(SessionUtil.PAYMENT_CART);
  345. // saveEasypayResult(easyResult);
  346. // TODO 결과를 저장한다.
  347. } catch (Exception e) {
  348. e.printStackTrace();
  349. bDBProc = "false";
  350. }
  351. if (bDBProc.equals("false")) {
  352. // 승인요청이 실패 시 아래 실행
  353. if (TRAN_CD_NOR_PAYMENT.equals(tr_cd)) {
  354. int easypay_mgr_data_item;
  355. easyPayClient.easypay_reqdata_init();
  356. tr_cd = TRAN_CD_NOR_MGR;
  357. easypay_mgr_data_item = easyPayClient.easypay_item("mgr_data");
  358. if (!r_escrow_yn.equals("Y")) {
  359. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_txtype", "40");
  360. } else {
  361. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_txtype", "61");
  362. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_subtype", "ES02");
  363. }
  364. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "org_cno", r_cno);
  365. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "order_no", order_no);
  366. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "req_ip", request.getRemoteAddr());
  367. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "req_id", "MALL_R_TRANS");
  368. easyPayClient.easypay_deli_us(easypay_mgr_data_item, "mgr_msg", "DB 처리 실패로 망취소");
  369. easyPayClient.easypay_run(mall_id, tr_cd, order_no);
  370. res_cd = easyPayClient.res_cd;
  371. res_msg = easyPayClient.res_msg;
  372. r_cno = easyPayClient.easypay_get_res("cno"); // PG거래번호
  373. r_canc_date = easyPayClient.easypay_get_res("canc_date"); // 취소일시
  374. }
  375. }
  376. }
  377. return easyResult;
  378. } catch (GlobalException e) {
  379. e.getStackTrace();
  380. throw new GlobalException(e.getSystemMessageCode());
  381. } catch (Exception e) {
  382. e.getStackTrace();
  383. throw new RuntimeException();
  384. }
  385. }
  386. }