const handleCardByMobile = () => { // CST_PLATFORM은 test(테스트) 또는 service(서비스)를 넘겨주시면 됩니다. const CST_PLATFORM = 'test';
// timestamp 생성
const timestamp = new Date().getTime().toString();
// 테스트용 merchantKey (실제 운영에서는 절대 프론트엔드에 노출하면 안됨)
const merchantKey = '';
// 해시 데이터 생성을 위한 값들
const mid = (CST_PLATFORM === 'test' ? 't' : '') + 'kvp_abctire13';
const oid = orderSeq;
const amount = watch('orderRealAmount');
// 해시 생성 (md5)
const hashData = CryptoJS.MD5(
mid + oid + amount + timestamp + merchantKey,
).toString();
const formInputs = {
// 결제창 스킨 설정 (red, green, gray 중 선택)
// LGD_CUSTOM_SKIN: 'red',
// 결제처리방식 설정
// - TWOTR: 2 Transaction 방식 (인증/승인 분리)
// - ONETR: 1 Transaction 방식 (인증/승인 통합)
// LGD_CUSTOM_PROCESSTYPE: 'TWOTR',
// 사용가능한 결제수단 설정
// SC0010: 신용카드
// SC0030: 계좌이체
// SC0040: 무통장
// SC0060: 휴대폰
// SC0070: 유선전화(KT)
// SC0090: OK캐쉬백
// SC0111: 문화상품권
// SC0112: 게임문화상품권
// SC0113: 도서문화상품권
// SC0220: 모바일 T머니
// LGD_CUSTOM_USABLEPAY: 'SC0010',
// 최초 결제수단 설정 (위와 동일한 코드 사용)
// LGD_CUSTOM_FIRSTPAY: 'SC0010',
// 결제 위변조 방지를 위한 해시값
// LGD_HASHDATA: hashData,
// 결제 요청 시간 (YYYYMMDDHHMMSS 형식)
LGD_TIMESTAMP: timestamp,
// 상점아이디 (테스트/서비스 구분 필요)
LGD_MID: mid,
// 주문번호 (상점에서 생성한 고유 주문번호)
LGD_OID: oid,
// 결제금액
LGD_AMOUNT: amount,
// 구매자 이름
LGD_BUYER: watch('orderName'),
// 상품정보
LGD_PRODUCTINFO: itemInfo.length > 0 ? itemInfo[0][2] : '',
// 결제완료 후 돌아올 URL (성공 시)
LGD_RETURNURL: window.location.origin + '/cardbynumber',
// 결제결과를 받을 URL (서버 to 서버 통신)
LGD_NOTEURL:
'<http://192.168.1.53:8080>' +
'/api/v1/admin/order/payment/card-by-number',
// 결제창 인코딩 방식
LGD_ENCODING: 'UTF-8',
// RETURNURL 응답 인코딩 방식
LGD_ENCODING_RETURNURL: 'UTF-8',
// NOTEURL 응답 인코딩 방식
LGD_ENCODING_NOTEURL: 'UTF-8',
//RETURNURL 있는경우 SUBMIT으로 전달
LGD_CUSTOM_RESULTTYPE: 'SUBMIT',
//고정값 N
LGD_ACTIVEXYN: 'N',
};
// form 생성
const form = document.createElement('form');
form.setAttribute('method', 'post');
form.setAttribute('id', 'LGD_PAYINFO');
// hidden input 추가
Object.entries(formInputs).forEach(([key, value]) => {
const input = document.createElement('input');
input.type = 'hidden';
input.name = key;
input.value = value;
form.appendChild(input);
});
document.body.appendChild(form);
//새창에서 권한체크를 위해 로컬스토리지에 추가
localStorage.setItem('accessToken', sessionStorage.getItem('accessToken'));
window.open_paymentwindow(form, CST_PLATFORM);
//FIXME: 새창 테스트 추가
// window.open(
// window.location.origin + '/cardbynumber',
// '결제창',
// 'width=845px,height=820px',
// '_blank',
// );
// 사용후 form 제거
document.body.removeChild(form);
};