merge master into develop - CscListRForm.jsp FAQ 아코디언 버그 수정
This commit is contained in:
978
build/resources/main/static/pc/js/gcpay.js
Normal file
978
build/resources/main/static/pc/js/gcpay.js
Normal file
@@ -0,0 +1,978 @@
|
||||
const cardCodes = [
|
||||
{cd: '3K', nm: '기업비씨'},
|
||||
{cd: '46', nm: '광주'},
|
||||
{cd: '71', nm: '롯데'},
|
||||
{cd: '30', nm: '산업'},
|
||||
{cd: '31', nm: '비씨'},
|
||||
{cd: '51', nm: '삼성'},
|
||||
{cd: '38', nm: '새마을'},
|
||||
{cd: '41', nm: '신한'},
|
||||
{cd: '62', nm: '신협'},
|
||||
{cd: '36', nm: '씨티'},
|
||||
{cd: '33', nm: '우리BC'},
|
||||
{cd: 'W1', nm: '우리'},
|
||||
{cd: '37', nm: '우체국'},
|
||||
{cd: '39', nm: '저축'},
|
||||
{cd: '35', nm: '전북'},
|
||||
{cd: '42', nm: '제주'},
|
||||
{cd: '15', nm: '카카오뱅크'},
|
||||
{cd: '3A', nm: '케이뱅크'},
|
||||
{cd: '24', nm: '토스뱅크'},
|
||||
{cd: '21', nm: '하나'},
|
||||
{cd: '61', nm: '현대'},
|
||||
{cd: '11', nm: '국민'},
|
||||
{cd: '91', nm: '농협'},
|
||||
{cd: '34', nm: '수협'}
|
||||
];
|
||||
|
||||
const bankCodes = [
|
||||
{cd: '39', nm: '경남'},
|
||||
{cd: '34', nm: '광주'},
|
||||
{cd: '12', nm: '단위농협'},
|
||||
{cd: '32', nm: '부산'},
|
||||
{cd: '45', nm: '새마을'},
|
||||
{cd: '64', nm: '산림'},
|
||||
{cd: '88', nm: '신한'},
|
||||
{cd: '48', nm: '신협'},
|
||||
{cd: '27', nm: '씨티'},
|
||||
{cd: '20', nm: '우리'},
|
||||
{cd: '71', nm: '우체국'},
|
||||
{cd: '50', nm: '저축'},
|
||||
{cd: '37', nm: '전북'},
|
||||
{cd: '35', nm: '제주'},
|
||||
{cd: '90', nm: '카카오'},
|
||||
{cd: '89', nm: '케이'},
|
||||
{cd: '92', nm: '토스'},
|
||||
{cd: '81', nm: '하나'},
|
||||
{cd: '54', nm: '-'},
|
||||
{cd: '03', nm: '기업'},
|
||||
{cd: '06', nm: '국민'},
|
||||
{cd: '31', nm: '대구'},
|
||||
{cd: '02', nm: '산업'},
|
||||
{cd: '11', nm: '농협'},
|
||||
{cd: '23', nm: 'SC제일'},
|
||||
{cd: '07', nm: '수협'}
|
||||
];
|
||||
|
||||
let card_mileage_rate = '0';
|
||||
let account_mileage_rate = '0';
|
||||
|
||||
let customerKey = ''; // 고객을 식별할 수 있는 키
|
||||
|
||||
let cardCnt; // 등록된 카드 수
|
||||
let accCnt; // 등록된 계좌 수
|
||||
let gcpayAuthYn = false;
|
||||
let oldGcpayAuthYn = false;
|
||||
|
||||
let gcTokenYn = false;
|
||||
|
||||
|
||||
// 브랜드 페이 초기화
|
||||
/*
|
||||
let brandpay = BrandPay(gcPayClientKey, customerKey, {
|
||||
redirectUrl: 'http://loc.allfree.kr:18310/sopmal/ordr/selectGcpayToken', //window.location.origin + '/sopmal/ordr/selectGcpayToken',
|
||||
// UI 커스터마이징 옵션 설정 (optional)
|
||||
ui: {
|
||||
highlightColor: '#26C2E3',
|
||||
buttonStyle: 'full',
|
||||
labels: {
|
||||
oneTouchPay: '지씨페이',
|
||||
},
|
||||
},
|
||||
});
|
||||
*/
|
||||
$(document).ready(function() {
|
||||
// 카드 추가 버튼 클릭
|
||||
$(document).on('click', '#gcpay_card_add', function() {
|
||||
brandpay.addPaymentMethod('카드')
|
||||
.then(function (methods) {
|
||||
gcpayAuthYn = true;
|
||||
set_gcpay_method(methods, false);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.code === 'USER_CANCEL') { // 사용자가 결제창을 닫은 경우 에러 처리
|
||||
if ('sopmal_m' === $('#deviceType').val()) {
|
||||
fn_call_alert_modal('GC PAY 카드 간편결제가 취소되었습니다.');
|
||||
} else {
|
||||
alert('GC PAY 카드 간편결제가 취소되었습니다.');
|
||||
}
|
||||
|
||||
//as_is는 alert 대신 get_gcpay_methods(); 옴
|
||||
} else {
|
||||
console.log(error);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// 계좌 추가 버튼 클릭
|
||||
$(document).on('click', '#gcpay_account_add', function() {
|
||||
brandpay
|
||||
.addPaymentMethod('계좌')
|
||||
.then(function (methods) {
|
||||
gcpayAuthYn = true;
|
||||
set_gcpay_method(methods, false);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.code === 'USER_CANCEL') {
|
||||
if ('sopmal_m' === $('#deviceType').val()) {
|
||||
fn_call_alert_modal('GC PAY 계좌 간편결제가 취소되었습니다.');
|
||||
} else {
|
||||
alert('GC PAY 계좌 간편결제가 취소되었습니다.');
|
||||
}
|
||||
|
||||
//as_is는 alert 대신 get_gcpay_methods(); 옴
|
||||
} else {
|
||||
console.log(error);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// 이전/다음 버튼 클릭
|
||||
$(document).on('click', '.slick-arrow', function() {
|
||||
const div = $(this).closest('.slideW');
|
||||
const classs = $(div).attr('class');
|
||||
|
||||
const isCard = classs.includes('card');
|
||||
|
||||
if (isCard) {
|
||||
const wrap = $(this).closest('.pgContent').find('.selectWrap');
|
||||
|
||||
$(wrap).find('.card-installment-plan option:first').prop('selected', true);
|
||||
$(wrap).find('.use-card-point').prop('checked', false);
|
||||
}
|
||||
|
||||
const isBank = classs.includes('bank');
|
||||
|
||||
if (isBank) {
|
||||
const wrap = $(this).closest('.pgContent').find('.selectWrap');
|
||||
|
||||
$(wrap).find('#gc-pay-bank-cash-receipt').prop('checked', true);
|
||||
$(wrap).find('#gc-pay-bank-cash-receipt').trigger('click');
|
||||
}
|
||||
});
|
||||
|
||||
// 설정 버튼 클릭
|
||||
$('#gcpay_set').bind('click', function () {
|
||||
if (!customerKey) {
|
||||
if ('sopmal_m' === $('#deviceType').val()) {
|
||||
fn_call_alert_modal('회원가입 후 사용하실 수 있습니다.');
|
||||
} else {
|
||||
alert('회원가입 후 사용하실 수 있습니다.');
|
||||
}
|
||||
} else {
|
||||
brandpay.openSettings().catch(function (error) {
|
||||
if (error.code === 'USER_CANCEL') {
|
||||
// 사용자가 결제창을 닫은 경우 에러 처리
|
||||
console.log(error.code);
|
||||
|
||||
get_gcpay_methods(gcTokenYn);
|
||||
} else {
|
||||
console.log('openSettings error');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/*
|
||||
redirectUrl 은 토스 개발자센터 사이트에 같은 값이 등록되어 있어야 함.
|
||||
토스쪽에서 액션이 발생할때마다 redirectUrl을 호출하는데 토큰을 발생시켜서 인증하는 기능임.
|
||||
selectGcpayToken 에서 발급받은 토큰을 session에 넣음.
|
||||
결제방식이나 인증을 해야할때 session에 셋팅된 토큰값을 사용함.
|
||||
get_gcpay_methods()의 brandpay.getPaymentMethods() 시에 토큰발급됨 (처음 호출되는 sdk)
|
||||
*/
|
||||
|
||||
// 브랜드 페이 초기화
|
||||
function initBrandPay(mbrInnb, tokenYn) {
|
||||
customerKey = mbrInnb;
|
||||
gcTokenYn = tokenYn;
|
||||
|
||||
brandpay = BrandPay(gcPayClientKey, customerKey, {
|
||||
redirectUrl: window.location.origin + '/sopmal/ordr/selectGcpayToken',
|
||||
|
||||
ui: {
|
||||
highlightColor: '#26C2E3',
|
||||
buttonStyle: 'full',
|
||||
labels: {
|
||||
oneTouchPay: '지씨페이',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
get_gcpay_methods(true);
|
||||
}
|
||||
|
||||
// 슬라이딩 초기화
|
||||
function set_slick(isInit) {
|
||||
if (!isInit) {
|
||||
$('.cardSlideW').slick('slickRemove', null, null, true);
|
||||
$('.slideDep').slick('slickRemove', null, null, true);
|
||||
$('.bankSlideW').slick('slickRemove', null, null, true);
|
||||
}
|
||||
|
||||
$('.bankSlideW').not('.slick-initialized').slick({
|
||||
initialSlide: 0, //처음보여줄 슬라이드 번호
|
||||
slidesToShow: 1, //한 화면에 보여줄 아이템수
|
||||
slidesToScroll: 1, // 한번에 슬라이드 시킬 아이템 개수
|
||||
dots: false,
|
||||
arrows: true,
|
||||
autoplay: false,
|
||||
infinite: false,
|
||||
centerMode: true,
|
||||
variableWidth: true,
|
||||
focusOnSelect: true,
|
||||
speed: 300
|
||||
});
|
||||
|
||||
$('.cardSlideW').not('.slick-initialized').slick({
|
||||
initialSlide: 0, // 처음보여줄 슬라이드 번호
|
||||
slidesToShow: 1, // 한 화면에 보여줄 아이템수
|
||||
slidesToScroll: 1, // 한번에 슬라이드 시킬 아이템 개수
|
||||
dots: false,
|
||||
arrows: true,
|
||||
autoplay: false,
|
||||
infinite: false,
|
||||
centerMode: true,
|
||||
variableWidth: true,
|
||||
focusOnSelect: true,
|
||||
speed: 300,
|
||||
asNavFor: '.slideDep'
|
||||
});
|
||||
|
||||
$('.slideDep').not('.slick-initialized').slick({
|
||||
initialSlide: 0, // 처음보여줄 슬라이드 번호
|
||||
slidesToShow: 1,
|
||||
slidesToScroll: 1,
|
||||
dots: false,
|
||||
arrows: false,
|
||||
autoplay: false,
|
||||
infinite: false,
|
||||
centerMode: true,
|
||||
focusOnSelect: true,
|
||||
fade: true,
|
||||
speed: 300,
|
||||
adaptiveHeight: true,
|
||||
draggable: false,
|
||||
asNavFor: '.cardSlideW'
|
||||
});
|
||||
}
|
||||
|
||||
// 결제정보 조회 (인증포함)
|
||||
function get_payment_method(first_check) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
contentType: 'application/json',
|
||||
dataType: 'json',
|
||||
url: '/sopmal/ordr/selectGcpayMethod',
|
||||
success: function (data) {
|
||||
if (data.resBody != null) {
|
||||
const result = JSON.parse(data.resBody.result);
|
||||
|
||||
if (result.response.code) { // 에러 코드 있을 경우 처리
|
||||
console.log(result.response.message);
|
||||
display_default_methods(); // 등록 정보 가져오기 못할 경우 기본 Display
|
||||
} else {
|
||||
|
||||
gcpayAuthYn = result.response.isIdentified; // 본인 확인 완료 여부 (브랜드페이 가입여부)
|
||||
|
||||
if (first_check == true)
|
||||
oldGcpayAuthYn = gcpayAuthYn; // 페이지 로딩 후 처음 호출시 초기 값 설정
|
||||
|
||||
if (gcpayAuthYn) { // 본인 확인 했을 경우 결제 수단 Display 호출
|
||||
set_gcpay_method(result.response);
|
||||
return;
|
||||
} else {
|
||||
console.log('NO AUTH');
|
||||
display_default_methods(); // 등록 정보 가져오기 못할 경우 기본 Display
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (data) {
|
||||
console.log(data);
|
||||
display_default_methods(); // 등록 정보 가져오기 못할 경우 기본 Display
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 무이자할부, 포인트 등 프로모션 정보 조회
|
||||
function get_promotion_data() {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
contentType: 'application/json',
|
||||
dataType: 'json',
|
||||
url: '/sopmal/ordr/selectGcpayCardPromtns',
|
||||
success: function (data) {
|
||||
if (data.resBody != null) {
|
||||
const result = JSON.parse(data.resBody.result);
|
||||
get_promotion_html(result.response);
|
||||
}
|
||||
},
|
||||
error: function (data) {
|
||||
console.log(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 무이자할부, 포인트 등 프로모션 정보 세팅
|
||||
function get_promotion_html(data){
|
||||
if (fn_is_empty(data)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const div = $('#gcpay-cardInfo-pop');
|
||||
const tbody = $(div).find('tbody');
|
||||
const cards = data.interestFreeCards;
|
||||
|
||||
let freecard_html= '';
|
||||
|
||||
for (let i = 0; i < cards.length; i++) {
|
||||
const card = cards[i];
|
||||
|
||||
freecard_html += '<tr>';
|
||||
freecard_html += ' <td>' + get_card_cmpny_nm(card.companyCode) + '</td>';
|
||||
freecard_html += ' <td><span class="comma">' + card.minimumPaymentAmount.toLocaleString() + '원</span></td>';
|
||||
freecard_html += ' <td>' + card.installmentFreeMonths + '</td>';
|
||||
freecard_html += '</tr>';
|
||||
}
|
||||
|
||||
$(tbody).empty().append(freecard_html);
|
||||
}
|
||||
|
||||
// 간편결제 카드, 계좌 추가 버튼 Dislay
|
||||
function gcpay_add_info() {
|
||||
let card_html;
|
||||
let card_msg = '간편결제 카드를 등록하시고 간편한 결제를 경험해 보세요.</span></p>';
|
||||
|
||||
if (card_mileage_rate > 0) {
|
||||
card_msg = '간편결제 카드를 등록하시고 결제하면<br/> <span class="po">결제금액의 ' + card_mileage_rate + '% <br>마일리지 추가 적립 혜택을 드려요.</span></p>';
|
||||
$('#card_rate').text('GC PAY 카드 간편 결제로 결제시 통합 마일리지 ' + card_mileage_rate + '% 추가 적립');
|
||||
}
|
||||
|
||||
let acc_msg = '간편결제 계좌 등록하시고 간편한 결제를 경험해 보세요.</span></p>';
|
||||
|
||||
if (account_mileage_rate > 0) {
|
||||
acc_msg = '간편결제 계좌 등록하고 결제하면<br/> <span class="po">결제금액의 ' + account_mileage_rate + '% <br>마일리지 추가 적립 혜택을 드려요.</span></p>';
|
||||
$('#account_rate').text('GC PAY 계좌 간편 결제로 결제시 통합 마일리지 ' + account_mileage_rate + '% 추가 적립');
|
||||
}
|
||||
|
||||
let card_div_nm = 'id="gcpay_card_add"';
|
||||
let acc_div_nm = 'id="gcpay_account_add"';
|
||||
let add_slide = '#';
|
||||
|
||||
if (!customerKey) {
|
||||
const member_button = ' <a href="/sopmal/mbr/selectJoinGuidance">회원가입하러 가기</a>';
|
||||
card_msg = '회원가입 후 ' + card_msg + member_button;
|
||||
acc_msg = '회원가입 후 ' + acc_msg + member_button;
|
||||
card_div_nm = '';
|
||||
acc_div_nm = '';
|
||||
|
||||
if ('sopmal_m' === $('#deviceType').val()) {
|
||||
add_slide = 'javascript:fn_call_alert_modal(\'회원가입 후 사용하실 수 있습니다\');'
|
||||
} else {
|
||||
add_slide = 'javascript:alert(\'회원가입 후 사용하실 수 있습니다\');'
|
||||
}
|
||||
}
|
||||
|
||||
if (cardCnt === 0 || !cardCnt) {
|
||||
card_html = '<div><div class="boxW ca_point">' + '<div class="contW"><p class="txt">' + card_msg + '</div></div></div>';
|
||||
|
||||
$('.cardSlideW').slick('slickAdd', card_html);
|
||||
$('.slideDep').slick('slickAdd', '<div class="no_content"></div>');
|
||||
}
|
||||
|
||||
card_html = '<div><div class="boxW ca_new"' + card_div_nm + '"><a href="' + add_slide + '"><i class="ico"><svg viewBox="0 0 512 512" xml:space="preserve">' +
|
||||
'<path d="M256,0C114.833,0,0,114.833,0,256s114.833,256,256,256s256-114.853,256-256S397.167,0,256,0z M256,472.341' +
|
||||
'c-119.275,0-216.341-97.046-216.341-216.341S136.725,39.659,256,39.659S472.341,136.705,472.341,256S375.295,472.341,256,472.341z"/>' +
|
||||
'<path d="M355.148,234.386H275.83v-79.318c0-10.946-8.864-19.83-19.83-19.83s-19.83,8.884-19.83,19.83v79.318h-79.318' +
|
||||
'c-10.966,0-19.83,8.884-19.83,19.83s8.864,19.83,19.83,19.83h79.318v79.318c0,10.946,8.864,19.83,19.83,19.83' +
|
||||
's19.83-8.884,19.83-19.83v-79.318h79.318c10.966,0,19.83-8.884,19.83-19.83S366.114,234.386,355.148,234.386z"/>' +
|
||||
'</svg></i><span class="txt">새로운 카드 등록하기</span></a></div></div>';
|
||||
|
||||
$('.cardSlideW').slick('slickAdd', card_html);
|
||||
|
||||
$('.slideDep').slick('slickAdd', '<div class="no_content"></div>');
|
||||
|
||||
if (accCnt === 0 || !accCnt) {
|
||||
$('.bankSlideW').slick('slickAdd', '<div><div class="boxW ca_point"><div class="contW"><p class="txt">' + acc_msg + '</div></div></div>');
|
||||
}
|
||||
|
||||
const account_html = '<div><div class="boxW ca_new"' + acc_div_nm + '><a href="' + add_slide + '"><i class="ico">' +
|
||||
'<svg viewBox="0 0 512 512" xml:space="preserve">' +
|
||||
'<path d="M256,0C114.833,0,0,114.833,0,256s114.833,256,256,256s256-114.853,256-256S397.167,0,256,0z M256,472.341' +
|
||||
'c-119.275,0-216.341-97.046-216.341-216.341S136.725,39.659,256,39.659S472.341,136.705,472.341,256S375.295,472.341,256,472.341z"/>' +
|
||||
'<path d="M355.148,234.386H275.83v-79.318c0-10.946-8.864-19.83-19.83-19.83s-19.83,8.884-19.83,19.83v79.318h-79.318' +
|
||||
'c-10.966,0-19.83,8.884-19.83,19.83s8.864,19.83,19.83,19.83h79.318v79.318c0,10.946,8.864,19.83,19.83,19.83' +
|
||||
's19.83-8.884,19.83-19.83v-79.318h79.318c10.966,0,19.83-8.884,19.83-19.83S366.114,234.386,355.148,234.386z"/>' +
|
||||
'</svg></i><span class="txt">새로운 계좌 등록하기</span></a></div></div>';
|
||||
|
||||
$('.bankSlideW').slick('slickAdd', account_html);
|
||||
}
|
||||
|
||||
// 등록된 카드 정보 가져오기
|
||||
function get_gcpay_methods(first_check){
|
||||
if (fn_is_empty(customerKey)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!gcTokenYn && first_check){
|
||||
brandpay
|
||||
.getPaymentMethods()
|
||||
.then(function (methods) {
|
||||
set_gcpay_method(methods);
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log('get_gcpay_methods error : ',error);
|
||||
|
||||
display_default_methods(); // 등록 정보 가져오기 못할 경우 기본 Display
|
||||
});
|
||||
}else{
|
||||
get_payment_method(first_check);
|
||||
}
|
||||
}
|
||||
|
||||
// 등록된 카드 정보로 Display
|
||||
function set_gcpay_method(methods){
|
||||
|
||||
//다시 정보 세팅될 경우 기존 할부개월수 niceSelect 정보 삭제
|
||||
if($('#cardMonth').children().length > 0){
|
||||
$('#cardMonth').children().remove();
|
||||
}
|
||||
|
||||
set_slick(false); // slick 슬라이딩 init
|
||||
|
||||
const oldCardCnt = cardCnt;
|
||||
const oldAccCnt = accCnt;
|
||||
cardCnt = 0;
|
||||
accCnt = 0;
|
||||
|
||||
const cards = methods['cards']; // 등록된 카드 정보
|
||||
cards.forEach(function(card, index) {
|
||||
var promIdx = 0;
|
||||
const dsplyCardNumber = card.cardNumber.substring(0, 4) + ' ' + card.cardNumber.substring(4, 8) + ' ' + card.cardNumber.substring(8, 12) + ' ' + card.cardNumber.substring(12, 16); // 노출 하기 위한 카드 번호
|
||||
const cardCss = get_card_css(get_card_cmpny_nm(card.acquirerCode));
|
||||
|
||||
let isPromotion = false; // 무이자 할부 사용 여부
|
||||
let isPoint = false; // 포인트 사용 여부
|
||||
|
||||
let cardHtml = '';
|
||||
let optionHtml = ''; // 포인트 사용 및 무이자 할부 html 초기화
|
||||
|
||||
const date = new Date();
|
||||
const today = date.getFullYear() + '-' + ((date.getMonth() + 1) < 9 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1)) + '-' + ((date.getDate()) < 9 ? '0' + (date.getDate()) : (date.getDate()));
|
||||
|
||||
const rlSetleAmt = $('#rlSetleAmt').val();
|
||||
|
||||
if ('ENABLED' === card.status) {
|
||||
const promotions = card['promotions']; // 프로모션
|
||||
|
||||
if (!fn_is_empty(promotions)) {
|
||||
promotions.forEach(function (promotion) {
|
||||
const type = promotion.type;
|
||||
|
||||
if ('CARD_POINT' === type) { // 카드 포인트 할인
|
||||
const cardPoint = promotion['cardPoint'];
|
||||
|
||||
if (!fn_is_empty(cardPoint)) {
|
||||
// if (cardPoint.issuerCode === card.issuerCode) { //해당 카드의 프로모션만 제공하여 비교X 2025.09.09 토스답변
|
||||
if (cardPoint.dueDate >= today) {
|
||||
optionHtml += '<li>';
|
||||
optionHtml += ' <label class="b-checkbox checkbox">';
|
||||
optionHtml += ' <input type="checkbox" id="use-card-poin' + index + '" class="use-card-point">';
|
||||
optionHtml += ' <span class="check"></span>';
|
||||
optionHtml += ' <span class="control-label">' + card.cardName + '카드 포인트 사용</span>';
|
||||
optionHtml += ' </label>';
|
||||
optionHtml += '</li>';
|
||||
|
||||
isPoint = true;
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
if ('CARD_INTEREST_FREE' === type && promIdx == 0) { // 카드 포인트 할인
|
||||
promIdx++;
|
||||
const interestFreeCards = promotion['cardInterestFree'];
|
||||
|
||||
if (!fn_is_empty(interestFreeCards)) {
|
||||
// if (interestFreeCards.issuerCode === card.issuerCode) { //해당 카드의 프로모션만 제공하여 비교X 2025.09.09 토스답변
|
||||
if (diff_date(interestFreeCards.dueDate, today) <= 0) {
|
||||
if (card.ownerType === '개인' && card.cardType === '신용') {
|
||||
optionHtml += get_free_month_html(index, interestFreeCards.installmentFreeMonths, interestFreeCards.minimumPaymentAmount, rlSetleAmt, card.cardType);
|
||||
} else {
|
||||
if (card.ownerType === '법인') {
|
||||
optionHtml += get_free_month_html(index, interestFreeCards.installmentFreeMonths, 1, 2, card.cardType);
|
||||
} else {
|
||||
optionHtml += get_free_month_html(index, interestFreeCards.installmentFreeMonths, 2, 1, card.cardType);
|
||||
}
|
||||
}
|
||||
isPromotion = true;
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (isPromotion === false) { // 프로모션 없을 경우
|
||||
optionHtml += get_free_month_html(index, null, 2, 1, card.cardType);
|
||||
}
|
||||
|
||||
cardHtml += '<div class="gcpay_cards">';
|
||||
cardHtml += ' <div class="boxW ca_code_' + cardCss + '">';
|
||||
cardHtml += ' <span class="card_logo"></span>';
|
||||
cardHtml += ' <div class="detaW">';
|
||||
cardHtml += ' <span class="txt">' + card.cardName + '</span>';
|
||||
cardHtml += ' <strong class="number">' + dsplyCardNumber + '</strong>';
|
||||
cardHtml += ' </div>';
|
||||
cardHtml += ' <input type="hidden" id="gcRegisteredAt' + index + '" value="' + card.registeredAt + '">';
|
||||
cardHtml += ' <input type="hidden" id="gcCardId' + index + '" value="' + card.id + '">';
|
||||
cardHtml += ' <input type="hidden" id="gcCardCompay' + index + '" value="' + card.issuerCode + '">';
|
||||
cardHtml += ' <input type="hidden" id="gcCardNum' + index + '" value="' + card.cardNumber + '">';
|
||||
cardHtml += ' <input type="hidden" id="gcCardAlias' + index + '" value="' + card.alias + '">';
|
||||
cardHtml += ' <input type="hidden" id="gcCompanyCode' + index + '" value="' + card.issuerCode + '">';
|
||||
cardHtml += ' <input type="hidden" id="gcStatus' + index + '" value="' + card.status + '">';
|
||||
cardHtml += ' <input type="hidden" id="gcCardType' + index + '" value="' + card.cardType + '">';
|
||||
cardHtml += ' <input type="hidden" id="gcCardOwnerType' + index + '" value="' + card.ownerType + '">';
|
||||
cardHtml += ' </div>';
|
||||
cardHtml += '</div>';
|
||||
} else { // 사용불가 카드
|
||||
cardHtml += '<div>';
|
||||
cardHtml += ' <div class="boxW ca_code_' + cardCss + ' none">';
|
||||
cardHtml += ' <div class="noneTxt">사용 불가능한 카드입니다.</div>';
|
||||
cardHtml += ' <span class="card_logo"></span>';
|
||||
cardHtml += ' <div class="detaW">';
|
||||
cardHtml += ' <span class="txt">' + card.cardName + '</span>';
|
||||
cardHtml += ' <strong class="number">' + dsplyCardNumber + '</strong>';
|
||||
cardHtml += ' <input type="hidden" id="gcCardId' + index + '" value="none">';
|
||||
cardHtml += ' </div>';
|
||||
cardHtml += ' </div>';
|
||||
cardHtml += '</div>';
|
||||
}
|
||||
|
||||
if (!isPoint) { // 포인트 사용 정보 없을 경우
|
||||
optionHtml = '<li></li>' + optionHtml;
|
||||
}
|
||||
|
||||
optionHtml = '<div><ul style="display: flex; justify-content: space-between;">' + optionHtml + '</ul></div>';
|
||||
|
||||
$('.cardSlideW').slick('slickAdd', cardHtml); // 카드 슬라인딩 추가
|
||||
// $('.slideDep').slick('slickAdd', optionHtml); // 카드 행사 ( 포인트 사용, 무이자 할부 ) 슬라이딩 추가
|
||||
$("#cardMonth").append(optionHtml);
|
||||
// $('[name="instl-month"]').each(function () {
|
||||
// $(this).niceSelect();
|
||||
// })
|
||||
|
||||
$('[name="instl-month"]').each(function (idx) {
|
||||
|
||||
if(idx === 0){
|
||||
$(this).niceSelect();
|
||||
}
|
||||
else{
|
||||
$(this).css('display', 'none');
|
||||
}
|
||||
|
||||
})
|
||||
cardCnt++; // 카드 등록 수 추가
|
||||
});
|
||||
|
||||
const accounts = methods['accounts']; // 등록된 계좌 정보
|
||||
|
||||
if (!fn_is_empty(accounts)) {
|
||||
accounts.forEach(function(account, index) {
|
||||
let accountHtml = '';
|
||||
|
||||
const bankCss = get_bank_css(get_bank_nm(account.bankCode)); // css 계좌 코드 가져오기
|
||||
|
||||
if ('ENABLED' === account.status) {
|
||||
accountHtml += '<div class="gcpay_accounts">';
|
||||
accountHtml += ' <div class="boxW ba_code_' + bankCss + '">';
|
||||
accountHtml += ' <span class="card_logo"></span>';
|
||||
accountHtml += ' <div class="detaW">';
|
||||
accountHtml += ' <span class="txt">' + account.accountName + '</span>';
|
||||
accountHtml += ' <strong class="number">' + account.accountNumber + '</strong>';
|
||||
accountHtml += ' </div>';
|
||||
accountHtml += ' </div>';
|
||||
accountHtml += ' <input type="hidden" id="gcRegisteredAt' + index + '" value="' + account.registeredAt + '">';
|
||||
accountHtml += ' <input type="hidden" id="gcAccId' + index + '" value="' + account.id + '">';
|
||||
accountHtml += ' <input type="hidden" id="gcAcoNm' + index + '" value="' + account.accountName + '">';
|
||||
accountHtml += ' <input type="hidden" id="gcAccNum' + index + '" value="' + account.accountNumber + '">';
|
||||
accountHtml += ' <input type="hidden" id="gcAccAlias' + index + '" value="' + account.alias + '">';
|
||||
accountHtml += ' <input type="hidden" id="gcBank' + index + '" value="' + account.bank + '">';
|
||||
accountHtml += ' <input type="hidden" id="gcBankCode' + index + '" value="' + account.bankCode + '">';
|
||||
accountHtml += ' <input type="hidden" id="gcStatus' + index + '" value="' + account.status + '"></div>';
|
||||
accountHtml += '</div>';
|
||||
} else {
|
||||
accountHtml += '<div class="gcpay_accounts">';
|
||||
accountHtml += ' <div class="boxW ba_code_' + bankCss + ' none">';
|
||||
accountHtml += ' <div class="noneTxt">사용 불가능한 계좌입니다.</div>';
|
||||
accountHtml += ' <span class="card_logo"></span>';
|
||||
accountHtml += ' <div class="detaW">';
|
||||
accountHtml += ' <span class="txt">' + account.accountName + '</span>';
|
||||
accountHtml += ' <strong class="number">' + account.accountNumber + '</strong>';
|
||||
accountHtml += ' <input type="hidden" id="gcAccId' + index + '" value="none"></div></div>';
|
||||
accountHtml += ' </div>';
|
||||
accountHtml += '</div>';
|
||||
|
||||
$('.selectWrap').hide();
|
||||
}
|
||||
|
||||
$('.bankSlideW').slick("slickAdd", accountHtml); // 계좌 슬라이딩 추가
|
||||
|
||||
accCnt++; // 계좌 등록 수 추가
|
||||
});
|
||||
}
|
||||
|
||||
//TODO : 최초등록일을 가져와서 쿠폰을 발급해야 함
|
||||
// ( 기존 결제 수단 갯수와 받아온 결제 수단 갯수가 다를 경우 & 처음 로딩이 아닐 경우(==>변수값없이 선언만 되어서 undefined값으로 처음인지 확인) )
|
||||
// or ( 기존 본인 확인 완료 여부 == false && 현재 가져온 본인 확인 완료 여부 == true )
|
||||
if((( oldCardCnt !== cardCnt || oldAccCnt !== accCnt ) && oldCardCnt!==undefined && oldAccCnt!==undefined )
|
||||
|| ( gcpayAuthYn !== oldGcpayAuthYn && oldGcpayAuthYn ===false )) {
|
||||
// 갱신 결과 쿠폰이 발급되었으면 안내
|
||||
console.log('coupon 발급');
|
||||
|
||||
//토스 response에서 카드수 추가
|
||||
methods.oldCard = oldCardCnt;
|
||||
methods.newCard = cardCnt;
|
||||
methods.oldAcnt = oldAccCnt;
|
||||
methods.newAcnt = accCnt;
|
||||
methods.mbrInnb = customerKey;
|
||||
|
||||
let data = {
|
||||
oldCard: oldCardCnt,
|
||||
newCard: cardCnt,
|
||||
oldAcnt: oldAccCnt,
|
||||
newAcnt: accCnt,
|
||||
mbrInnb: customerKey
|
||||
};
|
||||
|
||||
set_gcpay_info(data); // 간편 결제 정보 Hub저장
|
||||
}
|
||||
|
||||
gcpay_add_info(); // 결제 수단 추가 버튼 노출
|
||||
|
||||
oldGcpayAuthYn = gcpayAuthYn;
|
||||
}
|
||||
|
||||
// 무이자 할부 개월수 가져오기
|
||||
function get_free_month_html(index, installmentFreeMonths, p_amount, t_price, cardType) {
|
||||
let option_html = '';
|
||||
let option_list = '';
|
||||
let month_disabled = '';
|
||||
|
||||
if (cardType === '신용') {
|
||||
if (Number(p_amount) <= Number(t_price)) {
|
||||
if (installmentFreeMonths) {
|
||||
for (let i = 2; i <= 12; i++) {
|
||||
if (installmentFreeMonths.indexOf(parseInt(i)) !== -1) {
|
||||
option_list += '<option value="' + i + '">' + i + '개월 무이자</option>';
|
||||
} else {
|
||||
option_list += '<option value="' + i + '">' + i + '개월</option>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (option_list === '') {
|
||||
for (let i = 2; i <= 12; i++) {
|
||||
option_list += '<option value="' + i + '">' + i + '개월</option>';
|
||||
}
|
||||
}
|
||||
|
||||
if (option_list !== '') {
|
||||
month_disabled = '';
|
||||
}
|
||||
} else {
|
||||
month_disabled = 'disabled';
|
||||
}
|
||||
} else {
|
||||
month_disabled = 'disabled';
|
||||
}
|
||||
|
||||
option_html += '<li>';
|
||||
option_html += ' <div class="select-box">';
|
||||
option_html += ' <select name="instl-month" id="instl-month-' + index + '" ' + month_disabled + ' class="card-installment-plan">';
|
||||
option_html += ' <option value="0">일시불  </option>';
|
||||
option_html += option_list;
|
||||
option_html += ' </select>';
|
||||
option_html += ' </div>';
|
||||
option_html += '</li>';
|
||||
|
||||
return option_html;
|
||||
}
|
||||
|
||||
|
||||
// TODO : 간편 결제 정보 Hub 저장 (코드진행중)
|
||||
function set_gcpay_info(data){
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
contentType: 'application/json',
|
||||
data : JSON.stringify(data),
|
||||
dataType: 'json',
|
||||
url: '/sopmal/ordr/selectGcpayInfo',
|
||||
success: function (data) {
|
||||
let resBody = data.resBody;
|
||||
let parseJsonResbody = JSON.parse(resBody.result);
|
||||
|
||||
if (!fn_is_empty(resBody)) {
|
||||
if (parseJsonResbody.firstCk === 'Y' && parseJsonResbody.couponAt === 'Y' ) {
|
||||
var tmp = confirm('GC PAY 이벤트 쿠폰 발행되었습니다.\n쿠폰 적용하여 결제하시려면 현재 페이지를 새로고침 하셔야 합니다.\n새로고침 하시겠습니까?');
|
||||
if ( tmp ) {
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, error: function (data) {
|
||||
console.log('error');
|
||||
console.log("에러 메세지 : ", data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 결제 수단 기본 레이아웃 ( 안내 슬라이딩 , 등록 슬라이딩 ) Display
|
||||
function display_default_methods() {
|
||||
set_slick(false);
|
||||
|
||||
gcpay_add_info();
|
||||
}
|
||||
|
||||
/* 카드사 코드명 조회 */
|
||||
function get_card_cmpny_nm(cd) {
|
||||
return cardCodes.filter(() => true).find(o => o.cd === cd).nm;
|
||||
}
|
||||
|
||||
/* 은행 코드명 조회 */
|
||||
function get_bank_nm(cd) {
|
||||
return bankCodes.filter(() => true).find(o => o.cd === cd).nm;
|
||||
}
|
||||
|
||||
/* 날자 비교 */
|
||||
function diff_date(strDate1, strDate2) {
|
||||
const dateArray1 = strDate1.split('-');
|
||||
const dateArray2 = strDate2.split('-');
|
||||
|
||||
const dateObj1 = new Date(dateArray1[0], Number(dateArray1[1]) - 1, dateArray1[2]);
|
||||
const dateObj2 = new Date(dateArray2[0], Number(dateArray2[1]) - 1, dateArray2[2]);
|
||||
|
||||
return (dateObj2.getTime() - dateObj1.getTime()) / 1000 / 60 / 60 / 24;
|
||||
}
|
||||
|
||||
// 카드 CSS 코드
|
||||
function get_card_css(company) {
|
||||
var cardCode = '';
|
||||
switch (company) {
|
||||
case '농협':
|
||||
cardCode = '001';
|
||||
break;
|
||||
case '우리':
|
||||
cardCode = '002';
|
||||
break;
|
||||
case '신한':
|
||||
cardCode = '003';
|
||||
break;
|
||||
case '국민':
|
||||
cardCode = '004';
|
||||
break;
|
||||
case '하나':
|
||||
cardCode = '005';
|
||||
break;
|
||||
case '씨티':
|
||||
cardCode = '006';
|
||||
break;
|
||||
case '삼성':
|
||||
cardCode = '025';
|
||||
break;
|
||||
case '현대':
|
||||
cardCode = '026';
|
||||
break;
|
||||
case '롯데':
|
||||
cardCode = '027';
|
||||
break;
|
||||
case 'VISA':
|
||||
cardCode = '028';
|
||||
break;
|
||||
case '마스터':
|
||||
cardCode = '029';
|
||||
break;
|
||||
case '비씨':
|
||||
cardCode = '030';
|
||||
break;
|
||||
case 'BC':
|
||||
cardCode = '030';
|
||||
break;
|
||||
case '현대백화점':
|
||||
cardCode = '031';
|
||||
break;
|
||||
case '갤러리아':
|
||||
cardCode = '032';
|
||||
break;
|
||||
case '기업':
|
||||
cardCode = '007';
|
||||
break;
|
||||
case '산업':
|
||||
cardCode = '008';
|
||||
break;
|
||||
case 'SC제일':
|
||||
cardCode = '009';
|
||||
break;
|
||||
case '대구':
|
||||
cardCode = '010';
|
||||
break;
|
||||
case '부산':
|
||||
cardCode = '011';
|
||||
break;
|
||||
case '전북':
|
||||
cardCode = '012';
|
||||
break;
|
||||
case '경남':
|
||||
cardCode = '013';
|
||||
break;
|
||||
case '제주':
|
||||
cardCode = '014';
|
||||
break;
|
||||
case '광주':
|
||||
cardCode = '015';
|
||||
break;
|
||||
case '새마을':
|
||||
cardCode = '016';
|
||||
break;
|
||||
case '수협':
|
||||
cardCode = '017';
|
||||
break;
|
||||
case '신협':
|
||||
cardCode = '018';
|
||||
break;
|
||||
case '우체국':
|
||||
cardCode = '019';
|
||||
break;
|
||||
case '케이':
|
||||
cardCode = '020';
|
||||
break;
|
||||
case '카카오':
|
||||
cardCode = '021';
|
||||
break;
|
||||
case '저축':
|
||||
cardCode = '022';
|
||||
break;
|
||||
case '산림':
|
||||
cardCode = '023';
|
||||
break;
|
||||
case '토스':
|
||||
cardCode = '024';
|
||||
break;
|
||||
}
|
||||
|
||||
return cardCode;
|
||||
}
|
||||
|
||||
// 계좌 CSS
|
||||
function get_bank_css(bank) {
|
||||
var bankCode = '';
|
||||
|
||||
switch (bank) {
|
||||
case '농협':
|
||||
bankCode = '001';
|
||||
break;
|
||||
case '우리':
|
||||
bankCode = '002';
|
||||
break;
|
||||
case '신한':
|
||||
bankCode = '003';
|
||||
break;
|
||||
case '국민':
|
||||
bankCode = '004';
|
||||
break;
|
||||
case '하나':
|
||||
bankCode = '005';
|
||||
break;
|
||||
case '씨티':
|
||||
bankCode = '006';
|
||||
break;
|
||||
case '기업':
|
||||
bankCode = '007';
|
||||
break;
|
||||
case '산업':
|
||||
bankCode = '008';
|
||||
break;
|
||||
case 'SC제일':
|
||||
bankCode = '009';
|
||||
break;
|
||||
case '대구':
|
||||
bankCode = '010';
|
||||
break;
|
||||
case '부산':
|
||||
bankCode = '011';
|
||||
break;
|
||||
case '전북':
|
||||
bankCode = '012';
|
||||
break;
|
||||
case '경남':
|
||||
bankCode = '013';
|
||||
break;
|
||||
case '제주':
|
||||
bankCode = '014';
|
||||
break;
|
||||
case '광주':
|
||||
bankCode = '015';
|
||||
break;
|
||||
case '새마을':
|
||||
bankCode = '016';
|
||||
break;
|
||||
case '수협':
|
||||
bankCode = '017';
|
||||
break;
|
||||
case '신협':
|
||||
bankCode = '018';
|
||||
break;
|
||||
case '우체국':
|
||||
bankCode = '019';
|
||||
break;
|
||||
case '케이':
|
||||
bankCode = '020';
|
||||
break;
|
||||
case '카카오':
|
||||
bankCode = '021';
|
||||
break;
|
||||
case '저축':
|
||||
bankCode = '022';
|
||||
break;
|
||||
case '산림':
|
||||
bankCode = '023';
|
||||
break;
|
||||
case '토스':
|
||||
bankCode = '024';
|
||||
break;
|
||||
}
|
||||
|
||||
return bankCode;
|
||||
}
|
||||
|
||||
/*GCPAY 슬라이드 클릭 이벤트시 카드 인덱스에 따라 할부선택박스 show/hide*/
|
||||
$(document).on('click', '.pgContent', function () {
|
||||
|
||||
const cardidx = $(this).find('.cardSlideW .slick-current').attr('data-slick-index');
|
||||
gcPayCardMonthChange(cardidx);
|
||||
|
||||
})
|
||||
|
||||
$(document).ready(function () {
|
||||
/*GCPAY 슬라이드 swipe 이벤트시 카드 인덱스에 따라 할부선택박스 show/hide*/
|
||||
$(document).on('swipe','.pgContent' ,function(event, slick, direction){
|
||||
|
||||
const cardidx = $(this).find('.cardSlideW .slick-current').attr('data-slick-index');
|
||||
gcPayCardMonthChange(cardidx);
|
||||
|
||||
});
|
||||
|
||||
|
||||
})
|
||||
|
||||
/*카드 선택 변경에 따른 할부개월수 셀렉트박스 변경 함수*/
|
||||
function gcPayCardMonthChange(idx) {
|
||||
//할부개월수 niceSelect 전체 삭제
|
||||
$('#cardMonth').children().find('div.nice-select').remove();
|
||||
//카드 인덱스와 같은 할부개월수 niceSelect 생성
|
||||
$('#cardMonth').children().eq(idx).find('select').niceSelect();
|
||||
}
|
||||
Reference in New Issue
Block a user