﻿/* KCP 전자 지불(payplus) Script */
var PAYGW_SVR_ADDR = "paygw.kcp.co.kr";
var PAYGW_SVR_PORT = "8080";

var HOME_ADDR = "http://pay.kcp.co.kr/plugin";
var BANK_ADDR = "https://pay.kcp.co.kr/Pay";
var CARD_ADDR = "https://secure.kcp.co.kr/webpay";
var EVNT_ADDR = "http://pay.kcp.co.kr/plugin/event";
var XMPI_ADDR = "https://pay.kcp.co.kr/XMPI";

var BANK_LIST = "[03]기업은행:[04]국민은행:[05]외환은행:[07]수협:[11]농협:[20]우리은행:[23]제일은행:[26]신한은행:[32]부산은행:[34]광주은행:[71]우체국:[81]하나은행";

var KFTC_CONN_INFO = "pg.bankpay.or.kr:8080;";
var KFTC_SECU_BANK = "004:209:218:230:279:";

var PAYPLUS_OBJ = "<OBJECT ID=Payplus CLASSID=CLSID:E3FA6DAA-04BF-4AEF-9612-341B2B7A25FC width=0 height=0 CODEBASE=http://pay.kcp.co.kr/plugin/file/payplus.cab#Version=3,0,37003,0 onerror=OnErr()></OBJECT>";

var NOTI_MESG = "";

function StartSmartUpdate() {
    if (navigator.appName == 'Netscape') {
        alert("Payplus 플러그인은 윈도우즈 98/ME/NT/2000/XP/VISTA 환경에서 작동합니다.");
        return false;
    }
    document.writeln(PAYPLUS_OBJ);

    return true;
}

function MakePayMessage(payform) {
    if (document.Payplus == null || document.Payplus.object == null) {
        OnErr();
        return false;
    }

    if (document.Payplus.InitPlugin() == "ERROR") {
        PluginErrMsg(payform);
        return false;
    }

    SetField(payform);

    if (document.Payplus.MakePayMessage() == "ERROR") {
        PluginErrMsg(payform);
        document.Payplus.FinalPlugin();
        return false;
    }

    GetField(payform);
    document.Payplus.FinalPlugin();

    return true;
}

//Set Merchant Payment Field
function SetField(payform) {
    var vTemp = "";
    var vResrv1 = "";
    var vResrv2 = "";
    var vResrv3 = "";
    var nField = payform.elements.length;
    for (i = 0; i < nField; i++) {
        // 사이트 코드(필수)
        if (payform.elements[i].name == "site_cd")
            document.Payplus.SetFieldValues("site_cd", payform.site_cd.value);
        // 결제수단(필수)
        if (payform.elements[i].name == "pay_method")
            document.Payplus.SetFieldValues("pay_method", payform.pay_method.value);
        // 클라이언트 종류(필수)
        if (payform.elements[i].name == "module_type")
            document.Payplus.SetFieldValues("module_type", payform.module_type.value);
        if (payform.elements[i].name == "auth_flag_check")
            document.Payplus.SetFieldValues("module_type", payform.auth_flag_check.value);

        // 주문번호(필수)        
        if (payform.elements[i].name == "ordr_idxx")
            document.Payplus.SetFieldValues("ordr_idxx", payform.ordr_idxx.value);
        // 상품명(필수)        
        if (payform.elements[i].name == "good_name") {
            vTemp = payform.good_name.value;
            if (vTemp.length > 201) vTemp = vTemp.substr(0, 199);
            vTemp = vTemp.replace("&", "");
            vTemp = vTemp.replace(":", "");
            vTemp = vTemp.replace(";", "");
            vTemp = vTemp.replace("?", "");
            document.Payplus.SetFieldValues("good_name", vTemp);
        }
        // 상품단가(필수)        
        if (payform.elements[i].name == "good_mny")
            document.Payplus.SetFieldValues("good_mny", payform.good_mny.value);
        // 통화코드(필수)
        if (payform.elements[i].name == "currency")
            document.Payplus.SetFieldValues("currency", payform.currency.value);
        // 주문자명(필수)
        if (payform.elements[i].name == "buyr_name")
            document.Payplus.SetFieldValues("buyr_name", payform.buyr_name.value);

        // 주문자 연락처1(선택)   
        if (payform.elements[i].name == "buyr_tel1")
            document.Payplus.SetFieldValues("buyr_tel1", payform.buyr_tel1.value);
        // 주문자 연락처2(선택)
        if (payform.elements[i].name == "buyr_tel2")
            document.Payplus.SetFieldValues("buyr_tel2", payform.buyr_tel2.value);
        // 주문자 메일(선택)
        if (payform.elements[i].name == "buyr_mail")
            document.Payplus.SetFieldValues("buyr_mail", payform.buyr_mail.value);
        // 주문자 주민번호(선택)
        if (payform.elements[i].name == "soc_no")
            document.Payplus.SetFieldValues("soc_no", payform.soc_no.value);

        // 할부옵션(선택)
        if (payform.elements[i].name == "quotaopt")
            document.Payplus.SetFieldValues("quota_opt", payform.quotaopt.value);
        // 할부옵션(선택-고정)
        if (payform.elements[i].name == "fix_inst")
            document.Payplus.SetFieldValues("fix_inst", payform.fix_inst.value);

        // 인증구분(선택)
        if (payform.elements[i].name == "card_cert_type")
            document.Payplus.SetFieldValues("card_cert_type", payform.card_cert_type.value);
        // 직가맹(KEYIN)
        if (payform.elements[i].name == "keyin")
            document.Payplus.SetFieldValues("card_cert_type", payform.keyin.value);

        // 매입구분(자동매입:AUTO)
        if (payform.elements[i].name == "acqu_flag")
            document.Payplus.SetFieldValues("acqu_flag", payform.acqu_flag.value);

        // 현금영수증 
        if (payform.elements[i].name == "disp_tax_yn")
            document.Payplus.SetFieldValues("disp_tax_yn", payform.disp_tax_yn.value);

        // 계좌이체(선택)
        if (payform.elements[i].name == "bank_issu")
            document.Payplus.SetFieldValues("bank_issu", payform.bank_issu.value);

        // 가상계좌 희망은행(선택)
        if (payform.elements[i].name == "wish_vbank_list")
            document.Payplus.SetFieldValues("wish_vbank_list", payform.wish_vbank_list.value);
        // 가상계좌 입금기한(날짜)(선택)
        if (payform.elements[i].name == "vcnt_expire_term")
            document.Payplus.SetFieldValues("vcnt_expr_term", payform.vcnt_expire_term.value);
        // 가상계좌 입금기한(시간)(선택)
        if (payform.elements[i].name == "vcnt_expire_term_time")
            vResrv1 += "vcnt_expire_term_time=" + payform.vcnt_expire_term_time.value + "&";
        // 고정식 가상계좌 타입
        if (payform.elements[i].name == "vcnt_type")
            vResrv1 += "vcnt_type=" + payform.vcnt_type.value + "&";
        // 고정식 가상계좌(계좌정보)
        if (payform.elements[i].name == "vcnt_info")
            vResrv1 += "vcnt_info=" + payform.vcnt_info.value + "&";
        // 가상계좌(가맹점 정보처리)
        if (payform.elements[i].name == "vcnt_return_val")
            vResrv1 += "vcnt_return_val=" + payform.vcnt_return_val.value + "&";
        if (payform.elements[i].name == "vcnt_uniq_key")
            vResrv1 += "vcnt_uniq_key=" + payform.vcnt_uniq_key.value + "&";

        // 포인트(선택)
        if (payform.elements[i].name == "epnt_issu")
            document.Payplus.SetFieldValues("epnt_issu", payform.epnt_issu.value);
        // 상품권(선택)
        if (payform.elements[i].name == "gift_issu")
            document.Payplus.SetFieldValues("gift_issu", payform.gift_issu.value);

        // 가맹점로고(선택)
        if (payform.elements[i].name == "site_logo")
            document.Payplus.SetFieldValues("site_logo_addr", payform.site_logo.value);
        if (payform.elements[i].name == "site_name")
            document.Payplus.SetFieldValues("site_name", payform.site_name.value);
        // 스킨(선택)
        if (payform.elements[i].name == "skin_name")
            document.Payplus.SetFieldValues("skin_name", payform.skin_name.value);

        // 에스크로
        // 에스크로 사용유무
        if (payform.elements[i].name == "pay_mod")
            document.Payplus.SetFieldValues("escw_mode", payform.pay_mod.value);
        // 장바구니 개수
        if (payform.elements[i].name == "bask_cntx")
            document.Payplus.SetFieldValues("escw_bcnt", payform.bask_cntx.value);
        // 장바구니 정보
        if (payform.elements[i].name == "good_info")
            document.Payplus.SetFieldValues("good_info", payform.good_info.value);
        // 에스크로 우편버호
        if (payform.elements[i].name == "buyr_zipx")
            document.Payplus.SetFieldValues("buyr_zipx", payform.buyr_zipx.value);
        // 에스크로 주소1
        if (payform.elements[i].name == "buyr_add1")
            document.Payplus.SetFieldValues("buyr_add1", payform.buyr_add1.value);
        // 에스크로 주소2
        if (payform.elements[i].name == "buyr_add2")
            document.Payplus.SetFieldValues("buyr_add2", payform.buyr_add2.value);
        // 배송소요일
        if (payform.elements[i].name == "deli_term")
            document.Payplus.SetFieldValues("deli_term", payform.deli_term.value);
        // 수취인 이름
        if (payform.elements[i].name == "rcvr_name")
            document.Payplus.SetFieldValues("rcvr_name", payform.rcvr_name.value);
        // 수취인 일반전화번호
        if (payform.elements[i].name == "rcvr_tel1")
            document.Payplus.SetFieldValues("rcvr_tel1", payform.rcvr_tel1.value);
        // 수취인 휴대폰번호
        if (payform.elements[i].name == "rcvr_tel2")
            document.Payplus.SetFieldValues("rcvr_tel2", payform.rcvr_tel2.value);
        // 수취인 메일
        if (payform.elements[i].name == "rcvr_mail")
            document.Payplus.SetFieldValues("rcvr_mail", payform.rcvr_mail.value);
        // 배송지 우편버호
        if (payform.elements[i].name == "rcvr_zipx")
            document.Payplus.SetFieldValues("rcvr_zipx", payform.rcvr_zipx.value);
        // 배송지 주소1
        if (payform.elements[i].name == "rcvr_add1")
            document.Payplus.SetFieldValues("rcvr_add1", payform.rcvr_add1.value);
        // 배송지 주소2
        if (payform.elements[i].name == "rcvr_add2")
            document.Payplus.SetFieldValues("rcvr_add2", payform.rcvr_add2.value);
        // 배송 희망일
        if (payform.elements[i].name == "rcvr_date")
            document.Payplus.SetFieldValues("rcvr_date", payform.rcvr_date.value);
        // 배송 코멘트
        if (payform.elements[i].name == "rqst_msgx")
            document.Payplus.SetFieldValues("rqst_msgx", payform.rqst_msgx.value);

        // 테스트
        if (payform.elements[i].name == "test_flag")
            document.Payplus.SetFieldValues("test_flag", payform.test_flag.value);

        // 일괄결제
        if (payform.elements[i].name == "kcpgroup_id") {
            vResrv2 += "kcpgroup_id=" + payform.kcpgroup_id.value + "&";
            document.Payplus.SetFieldValues("good_name", payform.kcpgroup_id.value);
        }
        // 배치결제 약관
        if (payform.elements[i].name == "batch_agree_url")
            vResrv2 += "batch_agree_url=" + payform.batch_agree_url.value + "&";

        if (payform.elements[i].name == "batch_agree_yn")
            vResrv2 += "batch_agree_yn=" + payform.batch_agree_yn.value + "&";

        // CMS
        if (payform.elements[i].name == "pay_type")
            vResrv2 += "pay_type=" + payform.pay_type.value + "&";
        if (payform.elements[i].name == "bill_day")
            vResrv2 += "bill_day=" + payform.bill_day.value + "&";
        if (payform.elements[i].name == "rebill_noti_info")
            vResrv2 += "rebill_noti_info=" + payform.rebill_noti_info.value + "&";
        if (payform.elements[i].name == "first_pay_ymd")
            vResrv2 += "first_pay_ymd=" + payform.first_pay_ymd.value + "&";
        if (payform.elements[i].name == "site_cust_id")
            vResrv2 += "site_cust_id=" + payform.site_cust_id.value + "&";

        // 사용불가 카드 세팅
        if (payform.elements[i].name == "not_used_card")
            vResrv2 += "not_used_card=" + payform.not_used_card.value + "&";

        // 무이자 설정
        if (payform.elements[i].name == "kcp_noint")
            vResrv1 += "kcp_noint=" + payform.kcp_noint.value + "&";

        // 무이자 설정
        if (payform.elements[i].name == "kcp_noint_quota")
            vResrv1 += "noint_quota=" + payform.kcp_noint_quota.value + "&";

        // 할인카드
        if (payform.elements[i].name == "kcp_join_cd")
            vResrv1 += "kcp_join_cd=" + payform.kcp_join_cd.value + "&";

        // 적립구분
        if (payform.elements[i].name == "pay_code")
            vResrv3 += "pay_code=" + payform.pay_code.value + "&";

        // 지불일자
        if (payform.elements[i].name == "pay_date")
            vResrv3 += "pay_date=" + payform.pay_date.value + "&";

        // OK캐쉬백 적립(복합)
        if (payform.elements[i].name == "save_ocb") {
            if (payform.save_ocb.value == "Y")
                vResrv3 += "save_ocb=" + "Y&";
            else
                vResrv3 += "save_ocb=" + "N&";
        }

        // 포인트 사용(복합)
        if (payform.elements[i].name == "complex_pnt_yn") {
            if (payform.complex_pnt_yn.value == "N")
                vResrv3 += "complex_pnt_yn=" + "N&";
            else
                vResrv3 += "complex_pnt_yn=" + "Y&";
        }
        // 영문
        if (payform.elements[i].name == "eng_flag")
            vResrv3 += "eng_flag=" + payform.eng_flag.value + "&";

        // 비과세
        if (payform.elements[i].name == "tax_flag")
            vResrv3 += "tax_flag=" + payform.tax_flag.value + "&";
        if (payform.elements[i].name == "comm_tax_mny")
            vResrv3 += "comm_tax_mny=" + payform.comm_tax_mny.value + "&";
        if (payform.elements[i].name == "comm_free_mny")
            vResrv3 += "comm_free_mny=" + payform.comm_free_mny.value + "&";
        if (payform.elements[i].name == "comm_vat_mny")
            vResrv3 += "comm_vat_mny=" + payform.comm_vat_mny.value + "&";

        // 인증서 정책
        if (payform.elements[i].name == "kcp_user_policy")
            vResrv3 += "kcp_user_policy=" + payform.kcp_user_policy.value + "&";

    }

    document.Payplus.SetFieldValues("noti_mesg", NOTI_MESG);
    document.Payplus.SetFieldValues("paygw_addr", PAYGW_SVR_ADDR);
    document.Payplus.SetFieldValues("paygw_port", PAYGW_SVR_PORT);
    document.Payplus.SetFieldValues("site_ip", window.location.host);
    document.Payplus.SetFieldValues("home_addr", HOME_ADDR);
    document.Payplus.SetFieldValues("card_addr", CARD_ADDR);
    document.Payplus.SetFieldValues("addr_sub1", XMPI_ADDR);

    document.Payplus.SetFieldValues("bank_addr", BANK_ADDR);
    document.Payplus.SetFieldValues("evnt_addr", EVNT_ADDR);
    document.Payplus.SetFieldValues("bank_list", BANK_LIST);
    /* 카드종류확인 */
    vResrv1 += "check_card_yn=N&"
    /* 계좌이체(금결원) */
    vResrv3 += "kftc_conn_info=" + KFTC_CONN_INFO + "&";
    vResrv3 += "kftc_secu_bank=" + KFTC_SECU_BANK + "&";

    document.Payplus.SetFieldValues("reserved1", vResrv1);
    document.Payplus.SetFieldValues("reserved2", vResrv2);
    document.Payplus.SetFieldValues("reserved3", vResrv3);
}

function GetField(payform) {
    var nField = payform.elements.length;

    for (i = 0; i < nField; i++) {
        // 공통
        if (payform.elements[i].name == "res_cd")
            payform.res_cd.value = document.Payplus.GetFieldValues("res_cd");

        if (payform.elements[i].name == "res_msg")
            payform.res_msg.value = document.Payplus.GetFieldValues("res_msg");

        if (payform.elements[i].name == "tno")
            payform.tno.value = document.Payplus.GetFieldValues("tno");

        if (payform.elements[i].name == "app_time")
            payform.app_time.value = document.Payplus.GetFieldValues("app_time");

        if (payform.elements[i].name == "app_no")
            payform.app_no.value = document.Payplus.GetFieldValues("app_no");

        // 신용카드
        if (payform.elements[i].name == "card_cd")
            payform.card_cd.value = document.Payplus.GetFieldValues("card_cd");

        if (payform.elements[i].name == "card_name")
            payform.card_name.value = document.Payplus.GetFieldValues("card_name");

        if (payform.elements[i].name == "noinf")
            payform.noinf.value = document.Payplus.GetFieldValues("noinf");

        if (payform.elements[i].name == "quota")
            payform.quota.value = document.Payplus.GetFieldValues("quota");

        if (payform.elements[i].name == "isp_card_cd")
            payform.isp_card_cd.value = document.Payplus.GetFieldValues("isp_card_cd");

        // 계좌이체
        if (payform.elements[i].name == "bank_name")
            payform.bank_name.value = document.Payplus.GetFieldValues("bank_name");

        if (payform.elements[i].name == "bank_code")
            payform.bank_code.value = document.Payplus.GetFieldValues("bank_code");

        if (payform.elements[i].name == "bank_issu")
            payform.bank_issu.value = document.Payplus.GetFieldValues("bank_issu");

        // 가상계좌
        if (payform.elements[i].name == "bankcode")
            payform.bankcode.value = document.Payplus.GetFieldValues("bankcode");

        if (payform.elements[i].name == "bankname")
            payform.bankname.value = document.Payplus.GetFieldValues("bankname");

        if (payform.elements[i].name == "depositor")
            payform.depositor.value = document.Payplus.GetFieldValues("depositor");

        if (payform.elements[i].name == "account")
            payform.account.value = document.Payplus.GetFieldValues("account");

        // 현금영수증
        if (payform.elements[i].name == "cash_yn")
            payform.cash_yn.value = document.Payplus.GetFieldValues("cash_yn");

        if (payform.elements[i].name == "cash_tr_code")
            payform.cash_tr_code.value = document.Payplus.GetFieldValues("cash_tr_code");

        if (payform.elements[i].name == "cash_id_info")
            payform.cash_id_info.value = document.Payplus.GetFieldValues("cash_id_info");

        if (payform.elements[i].name == "cash_tsdtime")
            payform.cash_tsdtime.value = document.Payplus.GetFieldValues("cash_tsdtime");

        if (payform.elements[i].name == "cash_authno")
            payform.cash_authno.value = document.Payplus.GetFieldValues("cash_authno");

        if (payform.elements[i].name == "ret_pay_method")
            payform.ret_pay_method.value = document.Payplus.GetFieldValues("ret_pay_method");

        if (payform.elements[i].name == "use_pay_method")
            payform.use_pay_method.value = document.Payplus.GetFieldValues("use_pay_method");

        if (payform.elements[i].name == "escw_yn")
            payform.escw_yn.value = document.Payplus.GetFieldValues("escw_yn");

        if (payform.elements[i].name == "epnt_issu")
            payform.epnt_issu.value = document.Payplus.GetFieldValues("epnt_issu");

        if (payform.elements[i].name == "gift_issu")
            payform.gift_issu.value = document.Payplus.GetFieldValues("gift_issu");

        // 암호화 정보
        if (payform.elements[i].name == "tran_cd")
            payform.tran_cd.value = document.Payplus.GetFieldValues("tran_cd");

        if (payform.elements[i].name == "trace_no")
            payform.trace_no.value = document.Payplus.GetFieldValues("trace_no");

        if (payform.elements[i].name == "enc_info")
            payform.enc_info.value = document.Payplus.GetFieldValues("enc_info");

        if (payform.elements[i].name == "enc_data")
            payform.enc_data.value = document.Payplus.GetFieldValues("enc_data");

        if (payform.elements[i].name == "buyr_name")
            payform.buyr_name.value = document.Payplus.GetFieldValues("buyr_name");

        if (payform.elements[i].name == "buyr_mail")
            payform.buyr_mail.value = document.Payplus.GetFieldValues("buyr_mail");

        if (payform.elements[i].name == "buyr_tel1")
            payform.buyr_tel1.value = document.Payplus.GetFieldValues("buyr_tel1");

        if (payform.elements[i].name == "buyr_tel2")
            payform.buyr_tel2.value = document.Payplus.GetFieldValues("buyr_tel2");

        if (payform.elements[i].name == "reserved1")
            payform.reserved1.value = document.Payplus.GetFieldValues("reserved1");

        if (payform.elements[i].name == "reserved2")
            payform.reserved2.value = document.Payplus.GetFieldValues("reserved2");
    }

    return true;
}

function R2Mall_PostData(addr, val) {
    if (document.Payplus == null || document.Payplus.object == null) {
        OnErr();
        return false;
    }

    if (document.Payplus.Return2Mall(addr, val) == "ERROR")
        return false;
    else
        return true;
}

function PluginErrMsg(payform) {
    payform.res_cd.value = document.Payplus.GetLastErrCode();
    payform.res_msg.value = document.Payplus.GetLastErrMesg();
    alert("[" + payform.res_cd.value + "]" + payform.res_msg.value);
}

function ShowInfo() {
    var winopts = "width=600,height=580,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes";
    var popWindow = window.open('http://www.kcp.co.kr/popup/20041118_popup01.html', 'popup_0903', winopts);
}

function OnErr() {
    if (window.navigator.userAgent.indexOf("Windows NT 6.0") > -1) {
        alert("Payplus 플러그인이 제대로 설치되지 않았습니다.\n\nWindows Vista를 설치한 경우라면 알림 표시줄을 이용하여 플러그인을 설치해 주십시오");
    }
    else {
        if (window.navigator.appMinorVersion.indexOf("SP2") != -1)
            alert("Payplus 플러그인이 제대로 설치되지 않았습니다.\n\nWindows XP 서비스팩2를 설치한 경우라면 알림 표시줄을 이용하여 플러그인을 설치해 주십시오");
        else
            alert("Payplus 플러그인이 제대로 설치되지 않았습니다.\n\n브라우저에서 [새로고침]버튼을 클릭하신 후 [보안경고]창이 나타나면 [예]버튼을 클릭하세요.");
    }
}
