EasypayPaymentService.java 27 KB

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