163 lines
7.1 KiB
Plaintext
163 lines
7.1 KiB
Plaintext
<%@ 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 : OrdrReqstTossPayR.jsp
|
|
Description : 토스 결제
|
|
Modification Information
|
|
|
|
수정일 수정자 수정내용
|
|
------- -------- ---------------------------
|
|
2024-04-11 김혜인 최초 생성
|
|
--%>
|
|
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<script>
|
|
let setleData = ['common', '카드', '계좌이체', '가상계좌'];
|
|
|
|
$(document).ready(function() {
|
|
let paymentType = '';
|
|
const orderForm = $('#order_info');
|
|
const setleTyCd = orderForm.find('.setleTyCd').val();
|
|
const sopmalCd = orderForm.find('.sopmalCd').val();
|
|
const mbrInnb = orderForm.find('.mbrInnb').val();
|
|
const mbrId = orderForm.find('.mbrId').val();
|
|
const pgCmpnyNm = orderForm.find('.pgCmpnyNm').val();
|
|
const ordrrNm = orderForm.find('.ordrrNm').val();
|
|
|
|
let param = '?sopmalCd=' + sopmalCd;
|
|
param += '&mbrInnb=' + mbrInnb;
|
|
param += '&mbrId=' + mbrId;
|
|
param += '&pgCmpnyNm=' + pgCmpnyNm;
|
|
param += '&setleTyCd=' + setleTyCd;
|
|
param += '&ordrrNm=' + ordrrNm;
|
|
|
|
const encodedParam = encodeURIComponent(param);
|
|
|
|
const successUrl = window.location.origin + '<c:url value="/sopmal/ordr/insertTossSetle"/>' + encodedParam;
|
|
const failUrl = window.location.origin + '<c:url value="/sopmal/ordr/selectOrdrFailr"/>' + encodedParam;
|
|
//const callbackUrl = window.location.origin + '<c:url value=""/>';
|
|
|
|
//가상계좌 입금기한 설정
|
|
let dueDate = orderForm.find('.dueDate').val();
|
|
let date = new Date();
|
|
date.setDate(date.getDate() + (dueDate - 1));
|
|
let fDueDate = date.toISOString().split('T')[0]+ "T23:59:59+09:00"; // 날짜(YYYY-MM-DD) ISO 8601 형식
|
|
|
|
setleData['common'] = {
|
|
'amount': '',
|
|
'orderId': '',
|
|
'orderName': '',
|
|
'customerName': '',
|
|
'customerEmail': null,
|
|
'customerMobilePhone': null,
|
|
'successUrl':successUrl,
|
|
'failUrl':failUrl,
|
|
'windowTarget': 'iframe',
|
|
'taxFreeAmount': null,
|
|
'cultureExpense': false
|
|
};
|
|
|
|
if ('01' === setleTyCd) { // 신용카드
|
|
paymentType = '카드';
|
|
|
|
setleData[paymentType] = {
|
|
'cardCompany':null,
|
|
'cardInstallmentPlan':null,
|
|
'maxCardInstallmentPlan':null,
|
|
'freeInstallmentPlans':null,
|
|
'useCardPoint':false,
|
|
'useAppCardOnly':false,
|
|
'useInternationalCardOnly':false,
|
|
'flowMode':'DEFAULT',
|
|
'easyPay':null,
|
|
'discountCode':null,
|
|
'appScheme':null
|
|
};
|
|
} else if ('03' === setleTyCd) { // 실시간 계좌이체
|
|
paymentType = '계좌이체';
|
|
|
|
setleData[paymentType] = {
|
|
'cashReceipt':{
|
|
'type':'소득공제'
|
|
},
|
|
'useEscrow':false
|
|
};
|
|
} else if ('04' === setleTyCd) { // 가상계좌
|
|
paymentType = '가상계좌';
|
|
|
|
setleData[paymentType] = {
|
|
'dueDate':fDueDate,
|
|
'cashReceipt':{
|
|
'type':'미발행'
|
|
},
|
|
'useEscrow':false,
|
|
'currency':'KRW'//,'callbackUrl':callbackUrl
|
|
};
|
|
} else if ('05' === setleTyCd) { // 가상계좌(에스크로)
|
|
paymentType = '가상계좌';
|
|
|
|
setleData[paymentType] = {
|
|
'dueDate':fDueDate,
|
|
'cashReceipt':{
|
|
'type':'미발행'
|
|
},
|
|
'useEscrow':true,
|
|
'currency':'KRW'//,'callbackUrl':callbackUrl
|
|
};
|
|
} else if ('10' === setleTyCd) { // 페이코
|
|
paymentType = '카드';
|
|
|
|
setleData[paymentType] = {
|
|
flowMode: "DIRECT",
|
|
easyPay: "페이코",
|
|
};
|
|
}
|
|
|
|
pay(paymentType, initPaymentsData('common', paymentType), pgCmpnyNm);
|
|
});
|
|
|
|
/* ============= [공통] + [결제수단] JSON DATA 합치기 ================= */
|
|
function initPaymentsData(general, paymentType){
|
|
const orderForm = $('#order_info');
|
|
const setleAmt = orderForm.find('.setleAmt').val();
|
|
const ordrInnb = orderForm.find('.ordrInnb').val();
|
|
const goodsNm = orderForm.find('.goodsNm').val();
|
|
const ordrrNm = orderForm.find('.ordrrNm').val();
|
|
|
|
setleData[general].amount = setleAmt;
|
|
setleData[general].orderId = ordrInnb;
|
|
setleData[general].orderName = goodsNm;
|
|
setleData[general].customerName = ordrrNm;
|
|
|
|
return Object.assign(setleData[general], setleData[paymentType]);
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<form name="order_info" id="order_info">
|
|
<input type="hidden" name="sopmalCd" class="sopmalCd" value="${data.setle.sopmalCd}"/>
|
|
<input type="hidden" name="ordrInnb" class="ordrInnb" value="${data.setle.ordrInnb}"/>
|
|
<input type="hidden" name="pgCmpnyNm" class="pgCmpnyNm" value="${data.setle.pgCmpnyNm}"/>
|
|
<input type="hidden" name="setleTyCd" class="setleTyCd" value="${data.setle.setleTyCd}"/>
|
|
|
|
<input type="hidden" name="goodsNm" class="goodsNm" value="${data.setle.goodsNm}"/> <!-- 상품명 -->
|
|
<input type="hidden" name="setleAmt" class="setleAmt" value="${data.setle.setleAmt}"/> <!-- 결제 금액 -->
|
|
<input type="hidden" name="ordrrNm" class="ordrrNm" value="${data.ordr.ordrrNm}"/> <!-- 주문자 이름 -->
|
|
<input type="hidden" name="ordrrEmail" class="ordrrEmail" value="${data.ordr.ordrrEmail}"/> <!-- 주문자 이메일 -->
|
|
<input type="hidden" name="ordrrMbtlnb" class="ordrrMbtlnb" value="${data.ordr.ordrrMbtlnb}"/> <!-- 주문자 휴대폰번호 -->
|
|
<input type="hidden" name="mbrId" class="mbrId" value="${data.ordr.mbrId}"/> <!-- 쇼핑몰회원ID -->
|
|
<input type="hidden" name="mbrInnb" class="mbrInnb" value="${data.ordr.mbrInnb}" />
|
|
<input type="hidden" name="sesionId" id="sesionId" class="sesionId" value="${data.ordr.sesionId}" />
|
|
<input type="hidden" name="dueDate" class="dueDate" value="${data.setle.dueDt}" /> <!-- 가상계좌 입금기한 -->
|
|
</form>
|
|
</body>
|
|
</html> |