Просмотр исходного кода

이태영 - 20210422 현금영수증 API 송부 개발

xodud1202 5 лет назад
Родитель
Сommit
74522abc5c

+ 17 - 1
src/main/java/com/style24/front/biz/dao/TsfOrderDao.java

@@ -4,6 +4,7 @@ import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Payment;
 
@@ -127,5 +128,20 @@ public interface TsfOrderDao {
 	 * @since 2021.04.13
 	 */
 	int getCheckFreegiftVal(Order order);
-	
+
+	/**
+	 * 상품권 현금영수증 정보 등록
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021.04.23
+	 */
+	void createGiftcartReceipt(GiftCard param);
+
+	/**
+	 * 상품권 현금영수증 API 연동 결과 등록
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021.04.23
+	 */
+	void createGiftcartReceiptApi(GiftCard param);
 }

+ 0 - 2
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -688,8 +688,6 @@ public class TsfCartService {
 					cart.setAmtTmtbSq(apply.getAmtTmtbSq());
 				}
 			}
-
-			log.info("FINAL AMT CHECK :::: {} / {} / {} / {}", cart.getCartSq(), cart.getApplyQtySectionYn(), cart.getApplyAmtSectionYn(), cart.getTmtbDcAmt());
 		}
 
 		//return result;

+ 34 - 10
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -1,17 +1,39 @@
 package com.style24.front.biz.service;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.Principal;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Enumeration;
 import java.util.List;
-
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.AsyncContext;
+import javax.servlet.DispatcherType;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpUpgradeHandler;
+import javax.servlet.http.Part;
 
+import org.apache.catalina.connector.Request;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.kcp.J_PP_CLI_N;
@@ -626,7 +648,8 @@ public class TsfOrderService {
 	 */
 	public GiftCard kcpCashReceiptsRequest(GiftCard param) {
 		GiftCard result = new GiftCard();
-		String cust_ip = TsfSession.getInfo().getIpAddr();
+		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
+		String cust_ip = request.getRemoteAddr();
 		String reqTx = "pay";		// 현금영수증 신청
 		String txCd = "07010000";	// 현금영수증 등록 요청
 		String ordPhnno = "";
@@ -635,7 +658,7 @@ public class TsfOrderService {
 		}
 
 		J_PP_CLI_N c_PayPlus = new J_PP_CLI_N();
-		c_PayPlus.mf_init( "", env.getProperty("pg.kcp.gw.url"), env.getProperty("pg.kcp.gw.port"), Integer.parseInt(env.getProperty("pg.kcp.tx.mode")), env.getProperty("pg.kcp.log.dir") );
+		c_PayPlus.mf_init( "", env.getProperty("pg.kcp.gw.url"), env.getProperty("pg.kcp.gw.port"), Integer.parseInt(env.getProperty("pg.kcp.tx.mode")), env.getProperty("pg.kcp.log.dir"));
 		c_PayPlus.mf_init_set();
 
 		int rcpt_data_set   = c_PayPlus.mf_add_set( "rcpt_data" ) ;
@@ -643,15 +666,15 @@ public class TsfOrderService {
 		int corp_data_set   = c_PayPlus.mf_add_set( "corp_data" ) ;
 
 		// 현금영수증 정보
-		c_PayPlus.mf_set_us( rcpt_data_set, "user_type", "PG01") ;
+		c_PayPlus.mf_set_us( rcpt_data_set, "user_type", "PGNW") ;
 		c_PayPlus.mf_set_us( rcpt_data_set, "trad_time", param.getTradeTime()) ;
 		c_PayPlus.mf_set_us( rcpt_data_set, "tr_code"  , "0") ;							// 0 : 소득공제용(개인), 1 : 지출증빙용(기업)
 		c_PayPlus.mf_set_us( rcpt_data_set, "id_info"  , ordPhnno) ;							// 발급 대상이 개인인 경우에는 주민번호, 휴대폰번호,현금영수증 카드를 세팅하며, 기업인 경우에는 대상 사업자 번호를 입력. 자진발급으로 등록 시, “0100001234” 으로 입력.
 		c_PayPlus.mf_set_us( rcpt_data_set, "amt_tot"  , param.getUsGfcdAmt() + "") ;	// 현금영수증 금액 (공급가액 + 부가가치세 + 봉사료)
-		//c_PayPlus.mf_set_us( rcpt_data_set, "amt_sup"  , amt_sup   ) ;		// 공급가액
-		//c_PayPlus.mf_set_us( rcpt_data_set, "amt_svc"  , amt_svc   ) ;		// 봉사료
-		//c_PayPlus.mf_set_us( rcpt_data_set, "amt_tax"  , amt_tax   ) ;		// 부가가치세 (공급가액의 10%)
-		c_PayPlus.mf_set_us( rcpt_data_set, "pay_type" , "PAXX") ;		// 무슨 값인지 알 수 없음.
+		c_PayPlus.mf_set_us( rcpt_data_set, "amt_sup"  , (param.getUsGfcdAmt() - ((int)(param.getUsGfcdAmt() / 11))) + "") ;		// 공급가액
+		c_PayPlus.mf_set_us( rcpt_data_set, "amt_svc"  , "0") ;		// 봉사료
+		c_PayPlus.mf_set_us( rcpt_data_set, "amt_tax"  , ((int)(param.getUsGfcdAmt() / 11)) + "") ;		// 부가가치세 (공급가액의 10%)
+		c_PayPlus.mf_set_us( rcpt_data_set, "pay_type" , "PAXX") ;
 
 		// 주문 정보
 		c_PayPlus.mf_set_us( ordr_data_set, "ordr_idxx", param.getOrdNo() + "") ;		// 주문번호
@@ -659,13 +682,12 @@ public class TsfOrderService {
 		c_PayPlus.mf_set_us( ordr_data_set, "buyr_name", param.getOrdNm());
 		c_PayPlus.mf_set_us( ordr_data_set, "buyr_tel1", ordPhnno);
 		c_PayPlus.mf_set_us( ordr_data_set, "buyr_mail", param.getOrdEmail());
-		// c_PayPlus.mf_set_us( ordr_data_set, "comment"  , comment);		// 비고 (ex - 여유 파라미터)
 
 		// 가맹점 정보
 		c_PayPlus.mf_set_us( corp_data_set, "corp_type", "0");		// 사업장 구분 (직접 판매 : 0, 입점몰 판매 : 1)
 
 		// 실행
-		c_PayPlus.mf_do_tx(env.getProperty("pg.kcp.site.cd"), "", txCd, cust_ip, param.getOrdNo() + "", env.getProperty("pg.kcp.log.dir"), "0");
+		c_PayPlus.mf_do_tx(env.getProperty("pg.kcp.site.cd"), "", txCd, cust_ip, String.valueOf(param.getOrdNo()), env.getProperty("pg.kcp.log.level"), "0");
 
 		// 결과
 		result.setResultCd(c_PayPlus.m_res_cd);
@@ -677,9 +699,11 @@ public class TsfOrderService {
 			result.setAuthNo(c_PayPlus.mf_get_res("receipt_no"));
 
 			// 성공시 TB_GIFTCARD_RECEIPT INSERT
+			orderDao.createGiftcartReceipt(result);
 		}
 
 		// 성공이든 실패이든 로그성 데이터 TB_GIFTCARD_RECEIPT_API INSERT
+		orderDao.createGiftcartReceiptApi(result);
 
 		return result;
 	}

+ 0 - 10
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -154,16 +154,6 @@ public class TsfCartController extends TsfBaseController {
 		model.addAttribute("order", order);
 		model.addAttribute("IMG_PATH", env.getProperty("upload.goods.view"));
 
-		GiftCard temp = new GiftCard();
-		temp.setTradeTime("20210422200347");	// 결제시각 : YYYYMMDDHH24MISS 형식
-		temp.setOrdPhnno("01011111111");		// 현금영수증 대상 휴대폰번호
-		temp.setUsGfcdAmt(10000);				// 현금영수증 신청 금액
-		temp.setOrdNo(211);						// 주문번호
-		temp.setGoodsNm("보라색 원피스");		// 상품명 (“7. 현금영수증 매출전표 연동” 을 통해 고객이 직접 전표를 확인코자 한다면 상품명을 넘겨주지 않았을 경우 구매자 인증 시 인증오류가 발생할 수 있습니다.)
-		temp.setOrdNm("구매자");				// 구매자명
-		temp.setOrdEmail("xxxx@xxxx.com");		// 구매자이메일 (“7. 현금영수증 매출전표 연동” 을 통해 고객이 직접 전표를 확인코자 한다면 메일주소를 넘겨주지 않았을 경우 구매자 인증 시 인증오류가 발생할 수 있습니다.)
-		orderService.kcpCashReceiptsRequest(temp);
-
 		return super.getDeviceViewName("cart/CartListAjaxForm");
 	}
 

+ 40 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -496,5 +496,44 @@
 		    AND    FV.DEL_YN = 'Y'
 		) A
 	</select>
-	
+
+	<!-- 상품권 현금영수증 정보 등록 -->
+	<insert id="createGiftcartReceipt" parameterType="GiftCard">
+		/* TsfOrder.createGiftcartReceipt : 상품권 현금영수증 정보 등록 */
+		INSERT INTO TB_GIFTCARD_RECEIPT (
+		      ORD_NO
+		    , TRADE_NO
+		    , AUTH_NO
+		    , AMT
+		    , REG_DT
+		) VALUES (
+		      #{ordNo}
+		    , #{tradeNo}
+		    , #{authNo}
+		    , #{usGfcdAmt}
+		    , NOW()
+		)
+	</insert>
+
+	<!-- 상품권 현금영수증 정보 등록 API 결과 -->
+	<insert id="createGiftcartReceiptApi" parameterType="GiftCard">
+		/* TsfOrder.createGiftcartReceiptApi : 상품권 현금영수증 정보 등록 */
+		INSERT INTO TB_GIFTCARD_RECEIPT_API (
+			  ORD_NO
+			, TRADE_NO
+			, AUTH_NO
+			, AMT
+			, RESULT_CD
+			, RESULT_MSG
+			, REG_DT
+		) VALUES (
+			  #{ordNo}
+			, #{tradeNo}
+			, #{authNo}
+			, #{usGfcdAmt}
+			, #{resultCd}
+			, #{resultMsg}
+			, NOW()
+		)
+	</insert>
 </mapper>