초기소스

This commit is contained in:
jazz
2025-10-29 17:08:05 +09:00
parent e531aa9540
commit 439a379a02
7551 changed files with 1234427 additions and 3 deletions

View File

@@ -0,0 +1,222 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : OrdrPay.jsp
Description : 결제
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024-04-11 김혜인 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<header>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<%-- 공통 include --%>
<script>
$(document).ready(function() {
const ordr_idxx = $('input[name="ordr_idxx"]').val();
const good_mny = $('input[name="good_mny"]').val();
const good_name = $('input[name="good_name"]').val();
const pay_method = $('input[name="pay_method"]').val();
const escw_used = $('input[name="escw_used"]').val();
const retUrl = window.location.origin + '<c:url value="/sopmal/ordr/insertKcpMobileSetle"/>'
//retUrl = retUrl.replace(/www\./g, '');
//거래등록을 위한 param
const param = {
//'site_cd': 'T0007',
'site_cd': '${data.setle.siteCdMid}',
'ordr_idxx': ordr_idxx,
'good_mny': good_mny,
'good_name': good_name,
'pay_method': pay_method,
'Ret_URL': retUrl,
'escw_used': escw_used,
'user_agent': '',
'sopmalCd': '${data.ordr.sopmalCd}'
}
$.ajax({
type: 'post',
contentType: 'application/json',
url: '<c:url value="/sopmal/ordr/selectKcpTradeReg"/>',
data: JSON.stringify(param),
dataType: 'json',
async: false,
success: function (data) {
if (data.resBody != null) {
const result = JSON.parse(data.resBody.result);
if (!fn_is_empty(result)) {
const response = JSON.parse(result.response);
if (!fn_is_empty(response)) {
if ('0000' === response.Code) {
const form = $('#order_info');
$(form).find('input[name="approval_key"]').val(response.approvalKey);
$(form).find('input[name="traceNo"]').val(response.traceNo);
$(form).find('input[name="PayUrl"]').val(response.PayUrl);
$(form).find('input[name="Ret_URL"]').val(retUrl);
create_goodInfo();
create_virtdate();
call_pay_form();
} else {
alert(response.Message);
}
}
}
}
},
error: function (data) {
fn_call_alert_modal('<spring:message code="error.internal-server"/>');
}
});
});
function create_goodInfo() {
if(document.order_info.pay_mod.value=='Y') {
var chr31 = String.fromCharCode(31); // ASCII 코드값 31
var good_info = "seq=1" + chr31 + "ordr_numb=0001" + chr31 + "good_name=${data.setle.goodsNm}" + chr31 + "good_cntx=2" + chr31 + "good_amtx=${data.setle.setleAmt}";
document.order_info.good_info.value = good_info;
}
}
function create_virtdate(){
//가상계좌 입금기한 설정
const orderForm = $('#order_info');
let dueDate = orderForm.find('.dueDate').val();
let date = new Date();
date.setDate(date.getDate() + (dueDate - 1)); // 오늘 기준 +2일
let yyyy = date.getFullYear();
let yy = String(date.getFullYear()).slice(2); // 연도의 마지막 2자리
let mm = String(date.getMonth() + 1).padStart(2, '0'); // 월 (0부터 시작하므로 +1 필요)
let dd = String(date.getDate()).padStart(2, '0'); // 일
let fDueDate = yyyy+mm+dd;
orderForm.find('.ipgmDate').val(fDueDate);
}
</script>
</header>
<body>
<form name="order_info" id="order_info" method="post">
<!-- 공통정보 -->
<input type="hidden" name="req_tx" value="pay" />
<input type="hidden" name="site_cd" value="${data.setle.siteCdMid}" /> <!-- NHN KCP 발급 사이트코드 -->
<input type="hidden" name="site_name" value="${data.ordr.sopmalNm}" /> <!-- 상점이름(영문으로 작성권장) -->
<input type="hidden" name="currency" value="410"/> <!-- 화폐단위 원화 - WON : 410 -->
<!-- 결제 수단 -->
<c:if test="${'01' == data.setle.setleTyCd}">
<input type="hidden" name="pay_method" value="CARD" /> <!-- 신용카드 -->
<input type="hidden" name="ActionResult" value="card" /> <!-- 신용카드 -->
</c:if>
<c:if test="${'03' == data.setle.setleTyCd}">
<input type="hidden" name="pay_method" value="BANK" /> <!-- 계좌이체 -->
<input type="hidden" name="ActionResult" value="acnt" /> <!-- 계좌이체 -->
</c:if>
<c:if test="${'04' == data.setle.setleTyCd || '05' == data.setle.setleTyCd}"> <!-- 가상계좌 || 가상계좌(에스크로) -->
<input type="hidden" name="pay_method" value="VCNT" /> <!-- 가상계좌 -->
<input type="hidden" name="ActionResult" value="vcnt" /> <!-- 가상계좌 -->
</c:if>
<c:if test="${'10' != data.setle.setleTyCd}">
<input type="hidden" name="payco_direct" value="" />
</c:if>
<c:if test="${'10' == data.setle.setleTyCd}">
<input type="hidden" name="payco_direct" value="Y" />
<input type="hidden" name="pay_method" value="CARD" /> <!-- 신용카드 -->
<input type="hidden" name="ActionResult" value="card" /> <!-- 신용카드 -->
</c:if>
<!-- 인증시 필요한 파라미터(변경불가)-->
<input type="hidden" name="van_code" value=""/>
<!-- 신용카드 설정 -->
<input type="hidden" name="quotaopt" value="12"/> <!-- 최대 할부개월수 -->
<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
<input type="hidden" name="Ret_URL" value="" />
<!-- 가맹점에서 APP으로 연동 시, 타 APP에서 가맹점 APP을 다시 호출하기 위한 값 ( 가맹점 APP 연동 시 필수 ) -->
<input type="hidden" name="AppUrl" value="" />
<!-- 화면 크기조정 -->
<input type="hidden" name="tablet_size" value="1.0 " />
<!-- 거래등록 응답값 -->
<input type="hidden" name="approval_key" value=""/>
<input type="hidden" name="traceNo" value="" />
<input type="hidden" name="PayUrl" value="" />
<!-- 인증창 호출 시 한글깨질 경우 encoding 처리 추가 (**인코딩 네임은 대문자) -->
<input type="hidden" name="encoding_trans" value="UTF-8" />
<!-- 주문정보 -->
<input type="hidden" name="ordr_idxx" value="${data.ordr.ordrInnb}"/> <!-- 상점 관리 주문번호 -->
<input type="hidden" name="good_name" value="${data.setle.goodsNm}"/> <!-- 상품명 -->
<input type="hidden" name="good_mny" value="${data.setle.setleAmt}"/> <!-- 결제 금액 -->
<input type="hidden" name="buyr_name" value="${data.ordr.ordrrNm}"/> <!-- 주문자 이름 -->
<input type="hidden" name="buyr_tel2" value="${data.ordr.ordrrMbtlnb}"/> <!-- 주문자 휴대폰번호 -->
<input type="hidden" name="buyr_mail" value="${data.ordr.ordrrEmail}"/> <!-- 주문자 이메일 -->
<input type="hidden" name="dueDate" class="dueDate" value="${data.setle.dueDt}"/>
<input type="hidden" name="ipgm_date" class="ipgmDate" value=""/>
<!-- ========== 에스크로 정보 Start =============================== -->
<!-- 에스크로 사용 여부 : 반드시 Y 로 설정 -->
<input type="hidden" name="escw_used" value="Y"/>
<c:choose>
<c:when test="${'05' == data.setle.setleTyCd}">
<!-- <input type="hidden" name="pay_method" value="001000000000" /> 가상계죄(에스크로) 이지만 KCP 결제코드는 가상계좌 -->
<input type="hidden" name="rcvr_name" value="${data.shipping.recpntNm}" /> <!-- 수취인명 -->
<input type="hidden" name="rcvr_tel1" value="${data.shipping.recpntTelnb}" /> <!-- 수취인 연락처1 -->
<input type="hidden" name="rcvr_tel2" value="${data.shipping.recpntMbtlnb}" /> <!-- 수취인 휴대폰번호 -->
<input type="hidden" name="rcvr_mail" value="" /> <!-- 수취인 E-mail -->
<input type="hidden" name="rcvr_zipx" value="${data.shipping.dlvylcZip}" /> <!-- 수취인 우편번호 -->
<c:if test="${'01' == data.shipping.dlvylcAdresDvCd}">
<input type="hidden" name="rcvr_add1" value="${data.shipping.dlvylcRnmAdres}" /> <!-- 수취인 주소 -->
</c:if>
<c:if test="${'02' == data.shipping.dlvylcAdresDvCd}">
<input type="hidden" name="rcvr_add1" value="${data.shipping.dlvylcLnbAdres}" /> <!-- 수취인 주소 -->
</c:if>
<input type="hidden" name="rcvr_add2" value="${data.shipping.dlvylcAdresDtl}" /> <!-- 수취인 상세주소 -->
<input type="hidden" name="pay_mod" value="Y"/> <!-- 에스크로 결제처리 모드 : 에스크로: Y, 일반: N -->
<input type="hidden" name="deli_term" value="03"/> <!-- 배송 소요일 : 예상 배송 소요일을 입력 (두자리수로 입력) -->
<input type="hidden" name="bask_cntx" value="1"/> <!-- 장바구니 상품 종류수 -->
<input type="hidden" name="good_info" value=""/> <!-- 장바구니 상품 상세 정보 -->
</c:when>
<c:otherwise>
<input type="hidden" name="pay_mod" value="N"/> <!-- 에스크로 결제처리 모드 : 에스크로: Y, 일반: N -->
</c:otherwise>
</c:choose>
<!-- ========== 에스크로 필수정보 End =============================== -->
<!-- 추가 파라미터 ( 가맹점에서 별도의 값전달시 param_opt 를 사용하여 값 전달 ) -->
<input type="hidden" name="param_opt_1" id="sopmal_cd" value="${data.ordr.sopmalCd}"/>
<input type="hidden" name="param_opt_2" id="sesion_id" value="${data.ordr.sesionId += '|' += data.ordr.mbrInnb += '|' += data.ordr.mbrId}" />
<input type="hidden" name="param_opt_3" id="pg_cmpny_nm" value="${data.setle.pgCmpnyNm += '|' += data.setle.setleTyCd}" />
</form>
</body>
</html>