|
|
@@ -213,44 +213,45 @@ public class TscKcpService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * KCP 결제 처리 후 로직 진행 중 에러 발생으로 인한 취소처리 (TB_PAYMENT에 insert되는 모든 데이터 필요)
|
|
|
- * @param param
|
|
|
- * @param request
|
|
|
- */
|
|
|
- public void kcpPayRollBack(Payment param) {
|
|
|
- param.setPayStat(TscConstants.PaymentStat.DB_FAIL.value());
|
|
|
- param.setPayGb("E");
|
|
|
- param.setModType("STSC");
|
|
|
- param.setModDesc("가맹점 결과 처리 오류 - 가맹점에서 취소 요청");
|
|
|
- kcpCancel(param);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * KCP 전체 취소 (pgTid, regNo, updNo 필수)
|
|
|
- * @param param
|
|
|
- * @param request
|
|
|
- */
|
|
|
- public void kcpPayCancelAll(Payment param) {
|
|
|
- param.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- param.setPayGb("O");
|
|
|
- param.setModType("STSC");
|
|
|
- param.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
- kcpCancel(param);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * KCP 부분 취소 (pgTid, regNo, updNo, leftAmt:취소 전 잔여금액, partCancelAmt:부분취소금액 필수)
|
|
|
+ * KCP 취소 (pgTid, regNo, updNo)
|
|
|
+ * ** 주문 로직 진행 중 에러로 인한 취소
|
|
|
+ * result.setIpAddress(request.getRemoteAddr());
|
|
|
+ * result.setPayStat(TscConstants.PaymentStat.DB_FAIL.value());
|
|
|
+ * result.setPayGb("E"); // O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
|
|
|
+ * result.setModType("STSC");
|
|
|
+ * result.setModDesc("가맹점 결과 처리 오류 - 가맹점에서 취소 요청");
|
|
|
+ *
|
|
|
+ * ** 전체취소 필요 정보
|
|
|
+ * result.setIpAddress(request.getRemoteAddr());
|
|
|
+ * param.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ * param.setPayGb("O"); // O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
|
|
|
+ * param.setModType("STSC"); // 전체취소
|
|
|
+ * param.setModDesc("가맹점 취소 - 전체 취소");
|
|
|
+ *
|
|
|
+ * ** 부분취소 필요 정보
|
|
|
+ * result.setIpAddress(request.getRemoteAddr());
|
|
|
+ * param.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
+ * param.setPayGb("O"); // O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
|
|
|
+ * param.setModType("STPC");
|
|
|
+ * param.setModDesc("가맹점 취소 - 부분 취소");
|
|
|
+ * param.setLeftAmt(100000); // 취소 전 잔여금액
|
|
|
+ * param.setPartCancelAmt(30000); // 부분취소금액
|
|
|
+ *
|
|
|
+ * ** 무통장입금 입금 후 전체 취소 (전체취소 필요 정보에서 아래 정보 추가)
|
|
|
+ * param.setModType("STHD"); // 전체환불
|
|
|
+ * param.setBankCd("88"); // 계좌은행(공통코드G940). 결제수단이 "20:무통장입금일" 때 사용
|
|
|
+ * param.setAccountNm("테스터"); // 환불계좌 예금주명
|
|
|
+ * param.setAccountNo("110111111111") // 환불계좌번호
|
|
|
+ *
|
|
|
+ * ** 무통장입금 입금 전 부분 취소 (부분취소 필요 정보에서 아래 정보 추가)
|
|
|
+ * param.setModType("STPD"); // 부분환불
|
|
|
+ * param.setBankCd("88"); // 계좌은행(공통코드G940). 결제수단이 "20:무통장입금일" 때 사용
|
|
|
+ * param.setAccountNm("테스터"); // 환불계좌 예금주명
|
|
|
+ * param.setAccountNo("110111111111") // 환불계좌번호
|
|
|
+ *
|
|
|
* @param param
|
|
|
* @param request
|
|
|
*/
|
|
|
- public void kcpPayCancelPart(Payment param) {
|
|
|
- param.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
|
|
|
- param.setPayGb("O");
|
|
|
- param.setModType("STPC");
|
|
|
- param.setModDesc("가맹점 취소 - 부분 취소");
|
|
|
- kcpCancel(param);
|
|
|
- }
|
|
|
-
|
|
|
@Transactional("shopTxnManager")
|
|
|
public void kcpCancel(Payment param) {
|
|
|
// try { request.setCharacterEncoding("euc-kr"); } catch(Exception e) {e.printStackTrace();}
|
|
|
@@ -269,31 +270,48 @@ public class TscKcpService {
|
|
|
|
|
|
if("STPC".equals(param.getModType())) {
|
|
|
c_PayPlus.mf_set_us( mod_data_set_no, "mod_mny", param.getPartCancelAmt() + ""); // 취소요청금액
|
|
|
- c_PayPlus.mf_set_us( mod_data_set_no, "rem_mny", param.getLeftAmt() + ""); // 취소가능잔액
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "rem_mny", param.getLeftAmt() + ""); // 취소가능잔액
|
|
|
+ } else if("STHD".equals(param.getModType())) {
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_sub_type", "MDSC00"); // 변경 유형
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_comp_type", "MDCP01"); // 변경 유형
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_bankcode", "BK" + param.getBankCd()); // 환불 요청 은행 코드
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_account", param.getAccountNo()); // 환불 요청 계좌
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_depositor", param.getAccountNm()); // 환불 요청 계좌주명
|
|
|
+ } else if("STPD".equals(param.getModType())) {
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_sub_type", "MDSC03"); // 변경 유형
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_comp_type", "MDCP01"); // 변경 유형
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_mny", param.getPartCancelAmt() + ""); // 취소요청금액
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "rem_mny", param.getLeftAmt() + ""); // 취소가능잔액
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_bankcode", "BK" + param.getBankCd()); // 환불 요청 은행 코드
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_account", param.getAccountNo()); // 환불 요청 계좌
|
|
|
+ c_PayPlus.mf_set_us( mod_data_set_no, "mod_depositor", param.getAccountNm()); // 환불 요청 계좌주명
|
|
|
+ }
|
|
|
+
|
|
|
+ String custIp = "";
|
|
|
+ if("STHD".equals(param.getModType()) || "STPD".equals(param.getModType())) {
|
|
|
+ custIp = f_get_parm(param.getIpAddress());
|
|
|
}
|
|
|
|
|
|
param.setTranCd("00200000");
|
|
|
- c_PayPlus.mf_do_tx(env.getProperty("pg.kcp.site.cd"), env.getProperty("pg.kcp.site.key"), param.getTranCd(), "", "", env.getProperty("pg.kcp.log.level"), "0");
|
|
|
+ c_PayPlus.mf_do_tx(env.getProperty("pg.kcp.site.cd"), env.getProperty("pg.kcp.site.key"), param.getTranCd(), custIp, "", env.getProperty("pg.kcp.log.level"), "0");
|
|
|
|
|
|
if("0000".equals(c_PayPlus.m_res_cd)) {
|
|
|
try {
|
|
|
- payment.setPgTid(c_PayPlus.mf_get_res("tno"));
|
|
|
-
|
|
|
// 주문 결제 정보 조회
|
|
|
- payment = orderDao.getKcpOrderPaymentInfo(payment);
|
|
|
+ payment = orderDao.getKcpOrderPaymentInfo(param);
|
|
|
|
|
|
payment.setResCd(c_PayPlus.m_res_cd); // 결과 코드
|
|
|
payment.setResMsg(c_PayPlus.m_res_msg); // 결과 메시지
|
|
|
payment.setPgCpnAmt(c_PayPlus.mf_get_res("coupon_mny").isEmpty() ? 0 : Integer.parseInt(c_PayPlus.mf_get_res("coupon_mny")));
|
|
|
|
|
|
if ("STSC".equals(param.getModType())) {
|
|
|
- payment.setPayAmt(-payment.getPayAmt()); // 전체 취소는 결제 금액 전체
|
|
|
+ payment.setPayAmt(-payment.getPayAmt()); // 전체 취소는 결제 금액 전체
|
|
|
} else {
|
|
|
payment.setPayAmt(-(Integer.parseInt(c_PayPlus.mf_get_res("panc_mod_mny")))); // 부분 취소는 취소된 금액
|
|
|
}
|
|
|
|
|
|
if ("E".equals(param.getPayGb())) { // 결제완료 로직 진행 중 에러 발생시
|
|
|
- param.setPgTid(payment.getPgTid());
|
|
|
+ param.setPgTradeNo(c_PayPlus.mf_get_res("tno"));
|
|
|
param.setPayAmt(payment.getPayAmt());
|
|
|
orderDao.insertPayment(param);
|
|
|
} else { // 일반 취소 작업
|
|
|
@@ -301,6 +319,9 @@ public class TscKcpService {
|
|
|
payment.setUpdNo(param.getUpdNo() == null ? 0 : param.getUpdNo());
|
|
|
payment.setPayGb(param.getPayGb());
|
|
|
payment.setPayStat(param.getPayStat());
|
|
|
+ payment.setOrdNo(param.getOrdNo());
|
|
|
+ payment.setPgTradeNo(c_PayPlus.mf_get_res("tno")); // 환불 요청건의 KCP 거래번호
|
|
|
+
|
|
|
orderDao.insertPaymentCancel(payment);
|
|
|
}
|
|
|
} catch (Exception e) {
|