테스트 사이트 - 개발 중인 베타 버전입니다

영카트 5.2.0 미만 버전에 네이버페이 코드 적용하기

· 9년 전 · 17126 · 13

영카트 5.2.0 버젼 미만 버젼에서 네이버페이를 적용하는 방법에 대해 설명하겠습니다.

 

네이버 페이가 적용된 영카트 5.2.0 버젼에서 수정된 부분은 영카트 gittub 주소

 

https://github.com/gnuboard/youngcart5/commit/acdff82bd5c1a1987d8e14a081cf901aa22616c3

 

에 매우 잘 나와 있습니다. 위의 url을 확인하여 이전 버젼에서 바뀐 부분들을 수정해 주시면 됩니다.

 

마지막으로 소스를 다 수정하셨다면, 반드시 아래 두 파일을 관리자 권한으로 실행해 주셔야 합니다. 

 

adm/shop_admin/configform.php 
adm/shop_admin/itemform.php

 

아래는 위의 url 에서 추가나 수정된 부분들을 적어놓은 소스입니다.

 

추가된 파일 목록

 

lib/naverpay.lib.php

shop/naverpay/_common.php

shop/naverpay/naverpay_item.php

shop/naverpay/naverpay_order.php

shop/naverpay/naverpay_wish.php

shop/settle_naverpay.inc.php

 

추가된 파일은 최신버젼을 다운받아서 파일 복사 한 후 붙여넣기 합니다.

 

수정된 파일

 

adm/shop_admin/configform.php 

 

127 번째 줄에 아래와 같이 추가합니다.

 

// 네이버페이 필드추가

if(!isset($default['de_naverpay_mid'])) {

    sql_query(" ALTER TABLE `{$g5['g5_shop_default_table']}`

                    ADD `de_naverpay_mid` varchar(255) NOT NULL DEFAULT '' AFTER `de_kakaopay_cancelpwd`,

                    ADD `de_naverpay_cert_key` varchar(255) NOT NULL DEFAULT '' AFTER `de_naverpay_mid`,

                    ADD `de_naverpay_button_key` varchar(255) NOT NULL DEFAULT '' AFTER `de_naverpay_cert_key`,

                    ADD `de_naverpay_test` tinyint(4) NOT NULL DEFAULT '0' AFTER `de_naverpay_button_key`,

                    ADD `de_naverpay_mb_id` varchar(255) NOT NULL DEFAULT '' AFTER `de_naverpay_test`,

                    ADD `de_naverpay_sendcost` varchar(255) NOT NULL DEFAULT '' AFTER `de_naverpay_mb_id`", true);

}

 

763번째 줄에 아래와 같이 추가합니다.

 

        <tr>
            <th scope="row">
                <label for="de_naverpay_mid">네이버페이 가맹점 아이디</label>
                <a href="http://sir.kr/main/service/naverpay.php" target="_blank" class="scf_pgreg">네이버페이 서비스신청하기</a>
            </th>
            <td>
                <?php echo help("네이버페이 가맹점 아이디를 입력합니다."); ?>
                <input type="text" name="de_naverpay_mid" value="<?php echo $default['de_naverpay_mid']; ?>" id="de_naverpay_mid" class="frm_input" size="20" maxlength="50">
             </td>
        </tr>
        <tr>
            <th scope="row">
                <label for="de_naverpay_cert_key">네이버페이 가맹점 인증키</label>
            </th>
            <td>
                <?php echo help("네이버페이 가맹점 인증키를 입력합니다."); ?>
                <input type="text" name="de_naverpay_cert_key" value="<?php echo $default['de_naverpay_cert_key']; ?>" id="de_naverpay_cert_key" class="frm_input" size="50" maxlength="100">
             </td>
        </tr>
        <tr>
            <th scope="row">
                <label for="de_naverpay_button_key">네이버페이 버튼 인증키</label>
            </th>
            <td>
                <?php echo help("네이버페이 버튼 인증키를 입력합니다."); ?>
                <input type="text" name="de_naverpay_button_key" value="<?php echo $default['de_naverpay_button_key']; ?>" id="de_naverpay_button_key" class="frm_input" size="50" maxlength="100">
             </td>
        </tr>
        <tr>
            <th scope="row"><label for="de_naverpay_test">네이버페이 결제테스트</label></th>
            <td>
                <?php echo help("네이버페이 결제테스트 여부를 설정합니다. 검수 과정 중에는 <strong>예</strong>로 설정해야 하며 최종 승인 후 <strong>아니오</strong>로 설정합니다."); ?>
                <select id="de_naverpay_test" name="de_naverpay_test">
                    <option value="1" <?php echo get_selected($default['de_naverpay_test'], 1); ?>>예</option>
                    <option value="0" <?php echo get_selected($default['de_naverpay_test'], 0); ?>>아니오</option>
                </select>
            </td>
        </tr>
        <tr>
            <th scope="row">
                <label for="de_naverpay_mb_id">네이버페이 결제테스트 아이디</label>
            </th>
            <td>
                <?php echo help("네이버페이 결제테스트를 위한 테스트 회원 아이디를 입력합니다. 네이버페이 검수 과정에서 필요합니다."); ?>
                <input type="text" name="de_naverpay_mb_id" value="<?php echo $default['de_naverpay_mb_id']; ?>" id="de_naverpay_mb_id" class="frm_input" size="20" maxlength="20">
             </td>
        </tr>
        <tr>
            <th scope="row">네이버페이 상품정보 XML URL</th>
            <td>
                <?php echo help("네이버페이에 상품정보를 XML 데이터로 제공하는 페이지입니다. 검수과정에서 아래의 URL 정보를 제공해야 합니다."); ?>
                <?php echo G5_SHOP_URL; ?>/naverpay/naverpay_item.php
             </td>
        </tr>
        <tr>
            <th scope="row">
                <label for="de_naverpay_sendcost">네이버페이 추가배송비 안내</label>
            </th>
            <td>
                <?php echo help("네이버페이를 통한 결제 때 구매자에게 보여질 추가배송비 내용을 입력합니다.<br>예) 제주도 3,000원 추가, 제주도 외 도서·산간 지역 5,000원 추가"); ?>
                <input type="text" name="de_naverpay_sendcost" value="<?php echo $default['de_naverpay_sendcost']; ?>" id="de_naverpay_sendcost" class="frm_input" size="70">
             </td>
        </tr>

 

 adm/shop_admin/configformupdate.php 파일의 191번째줄에 아래와 같이 추가합니다.

 

                de_naverpay_mid               = '{$_POST['de_naverpay_mid']}',
                de_naverpay_cert_key          = '{$_POST['de_naverpay_cert_key']}',
                de_naverpay_button_key        = '{$_POST['de_naverpay_button_key']}',
                de_naverpay_test              = '{$_POST['de_naverpay_test']}',
                de_naverpay_mb_id             = '{$_POST['de_naverpay_mb_id']}',
                de_naverpay_sendcost          = '{$_POST['de_naverpay_sendcost']}',

 

 

 adm/shop_admin/itemform.php 파일의 112번째 줄의 아래와 같이 추가합니다.

 

// 지식쇼핑 PID 필드추가
// 상품메모 필드 추가
if(!sql_query(" select ec_mall_pid from {$g5['g5_shop_item_table']} limit 1 ", false)) {
    sql_query(" ALTER TABLE `{$g5['g5_shop_item_table']}`
                    ADD `ec_mall_pid` varchar(255) NOT NULL AFTER `it_shop_memo` ", true);
}

 

adm/shop_admin/itemform.php 파일의 445번째 줄의 아래와 같이 추가합니다. 

 

        <tr>
            <th scope="row"><label for="ec_mall_pid">네이버쇼핑 상품ID</label></th>
            <td colspan="2">
                <?php echo help("네이버쇼핑에 입점한 경우 네이버쇼핑 상품ID를 입력하시면 네이버페이와 연동됩니다."); ?>
                <input type="text" name="ec_mall_pid" value="<?php echo get_text($it['ec_mall_pid']); ?>" id="ec_mall_pid" class="frm_input" size="20">
            </td>
        </tr>

 

adm/shop_admin/itemformupdate.php 파일의 319 번째줄을 아래와 같이 추가합니다.

 

ec_mall_pid         = '$ec_mall_pid',

 

css/default_shop.css 파일의 582 번째줄을 아래와 같이 추가합니다.

 

/*네이버페이*/
.itemform-naverpay{margin-top:15px}
.cart-naverpay{margin-top:15px}

 

css/mobile_shop.css 파일의 730 번째줄을 아래와 같이 추가합니다.

 

/*네이버페이*/
.naverpay-item{padding-top:15px;clear:both}
#sod_bsk_act .naverpay-cart{margin-top:15px;clear:both;position:static}

 

install/gnuboard5shop.sql 파일의 334번째 줄

 

  `de_naverpay_mid` varchar(255) NOT NULL DEFAULT '',
  `de_naverpay_cert_key` varchar(255) NOT NULL DEFAULT '',
  `de_naverpay_button_key` varchar(255) NOT NULL DEFAULT '',
  `de_naverpay_test` tinyint(4) NOT NULL DEFAULT '0',
  `de_naverpay_mb_id` varchar(255) NOT NULL DEFAULT '',
  `de_naverpay_sendcost` varchar(255) NOT NULL DEFAULT '',

install/gnuboard5shop.sql 파일의 453번째 줄을 아래와 같이 추가합니다.

`ec_mall_pid` varchar(255) NOT NULL DEFAULT '',

mobile/shop/cart.php 파일의 179번째 줄을 아래와 같이 추가합니다.

        <?php if ($naverpay_button_js) { ?>
        <div class="naverpay-cart"><?php echo $naverpay_request_js.$naverpay_button_js; ?></div>
        <?php } ?>

 

mobile/shop/cart.php 파일의 179번째 줄을 아래와 같이 추가합니다.

function fsubmit_check(f) {
    if($("input[name^=ct_chk]:checked").size() < 1) {
        alert("구매하실 상품을 하나이상 선택해 주십시오.");
        return false;
    }

    return true;
}

 

mobile/shop/item.php 파일의 190번째 줄을 아래와 같이 추가합니다.

 

include_once(G5_SHOP_PATH.'/settle_naverpay.inc.php');

 

mobile/skin/shop/basic/item.form.skin.php 파일의 438번째줄을 아래와 같이 추가합니다.


            <?php if ($naverpay_button_js) { ?>
            <div class="naverpay-item"><?php echo $naverpay_request_js.$naverpay_button_js; ?></div>
            <?php } ?>

mobile/skin/shop/basic/item.form.skin.php 파일의 284번째줄 

 

function fsubmit_check(f)
{
    // 판매가격이 0 보다 작다면
    if (document.getElementById("it_price").value < 0) {
        alert("전화로 문의해 주시면 감사하겠습니다.");
        return false;
    }

    if($(".sit_opt_list").size() < 1) {
        alert("상품의 선택옵션을 선택해 주십시오.");
        return false;
    }

    var val, io_type, result = true;
    var sum_qty = 0;
    var min_qty = parseInt(<?php echo $it['it_buy_min_qty']; ?>);
    var max_qty = parseInt(<?php echo $it['it_buy_max_qty']; ?>);
    var $el_type = $("input[name^=io_type]");

    $("input[name^=ct_qty]").each(function(index) {
        val = $(this).val();

        if(val.length < 1) {
            alert("수량을 입력해 주십시오.");
            result = false;
            return false;
        }

        if(val.replace(/[0-9]/g, "").length > 0) {
            alert("수량은 숫자로 입력해 주십시오.");
            result = false;
            return false;
        }

        if(parseInt(val.replace(/[^0-9]/g, "")) < 1) {
            alert("수량은 1이상 입력해 주십시오.");
            result = false;
            return false;
        }

        io_type = $el_type.eq(index).val();
        if(io_type == "0")
            sum_qty += parseInt(val);
    });

    if(!result) {
        return false;
    }

    if(min_qty > 0 && sum_qty < min_qty) {
        alert("선택옵션 개수 총합 "+number_format(String(min_qty))+"개 이상 주문해 주십시오.");
        return false;
    }

    if(max_qty > 0 && sum_qty > max_qty) {
        alert("선택옵션 개수 총합 "+number_format(String(max_qty))+"개 이하로 주문해 주십시오.");
        return false;
    }

    return true;
}

 

 shop/cart.php 파일의 3번째 줄

 

include_once(G5_SHOP_PATH.'/settle_naverpay.inc.php');

 

shop/cart.php 파일의 204번째 줄에 아래와 같이 추가 

 

<?php if ($naverpay_button_js) { ?>
        <div class="cart-naverpay"><?php echo $naverpay_request_js.$naverpay_button_js; ?></div>
        <?php } ?>

 

shop/cart.php 파일의 256번째 줄에 아래와 같이 추가합니다.

 

function fsubmit_check(f) {
    if($("input[name^=ct_chk]:checked").size() < 1) {
        alert("구매하실 상품을 하나이상 선택해 주십시오.");
        return false;
    }

    return true;
}

 

 shop/item.php 파일의 237번째 줄에 아래와 같이 추가합니다.

 

include_once(G5_SHOP_PATH.'/settle_naverpay.inc.php');

 

 skin/shop/basic/item.form.skin.php 파일의 300번째 줄에 아래와 같이 추가

 

            <?php if ($naverpay_button_js) { ?>
            <div class="itemform-naverpay"><?php echo $naverpay_request_js.$naverpay_button_js; ?></div>
            <?php } ?>

 

  skin/shop/basic/item.form.skin.php 파일의 382번째 줄에 아래와 같이 추가

 

function fsubmit_check(f)
{
    // 판매가격이 0 보다 작다면
    if (document.getElementById("it_price").value < 0) {
        alert("전화로 문의해 주시면 감사하겠습니다.");
        return false;
    }

    if($(".sit_opt_list").size() < 1) {
        alert("상품의 선택옵션을 선택해 주십시오.");
        return false;
    }

    var val, io_type, result = true;
    var sum_qty = 0;
    var min_qty = parseInt(<?php echo $it['it_buy_min_qty']; ?>);
    var max_qty = parseInt(<?php echo $it['it_buy_max_qty']; ?>);
    var $el_type = $("input[name^=io_type]");

    $("input[name^=ct_qty]").each(function(index) {
        val = $(this).val();

        if(val.length < 1) {
            alert("수량을 입력해 주십시오.");
            result = false;
            return false;
        }

        if(val.replace(/[0-9]/g, "").length > 0) {
            alert("수량은 숫자로 입력해 주십시오.");
            result = false;
            return false;
        }

        if(parseInt(val.replace(/[^0-9]/g, "")) < 1) {
            alert("수량은 1이상 입력해 주십시오.");
            result = false;
            return false;
        }

        io_type = $el_type.eq(index).val();
        if(io_type == "0")
            sum_qty += parseInt(val);
    });

    if(!result) {
        return false;
    }

    if(min_qty > 0 && sum_qty < min_qty) {
        alert("선택옵션 개수 총합 "+number_format(String(min_qty))+"개 이상 주문해 주십시오.");
        return false;
    }

    if(max_qty > 0 && sum_qty > max_qty) {
        alert("선택옵션 개수 총합 "+number_format(String(max_qty))+"개 이하로 주문해 주십시오.");
        return false;
    }

    return true;
}

 

theme/basic/css/default_shop.css 파일의 582번째 줄에 아래와 같이 추가 

 

/*네이버페이*/
.itemform-naverpay{margin-top:15px}
.cart-naverpay{margin-top:15px}

 

theme/basic/css/mobile_shop.css 파일의 728번째 줄에 아래와 같이 추가합니다. 

 

/*네이버페이*/
.naverpay-item{padding-top:15px;clear:both}
#sod_bsk_act .naverpay-cart{margin-top:15px;clear:both;position:static}

 

theme/basic/mobile/skin/shop/basic/item.form.skin.php 파일의 284번째 줄에 아래와 같이 추가합니다. 

 

<?php if ($naverpay_button_js) { ?>
            <div class="naverpay-item"><?php echo $naverpay_request_js.$naverpay_button_js; ?></div>
            <?php } ?>

 

theme/basic/mobile/skin/shop/basic/item.form.skin.php 파일의 438번째 줄에 아래와 같이 추가합니다. 

 

function fsubmit_check(f)
{
    // 판매가격이 0 보다 작다면
    if (document.getElementById("it_price").value < 0) {
        alert("전화로 문의해 주시면 감사하겠습니다.");
        return false;
    }

    if($(".sit_opt_list").size() < 1) {
        alert("상품의 선택옵션을 선택해 주십시오.");
        return false;
    }

    var val, io_type, result = true;
    var sum_qty = 0;
    var min_qty = parseInt(<?php echo $it['it_buy_min_qty']; ?>);
    var max_qty = parseInt(<?php echo $it['it_buy_max_qty']; ?>);
    var $el_type = $("input[name^=io_type]");

    $("input[name^=ct_qty]").each(function(index) {
        val = $(this).val();

        if(val.length < 1) {
            alert("수량을 입력해 주십시오.");
            result = false;
            return false;
        }

        if(val.replace(/[0-9]/g, "").length > 0) {
            alert("수량은 숫자로 입력해 주십시오.");
            result = false;
            return false;
        }

        if(parseInt(val.replace(/[^0-9]/g, "")) < 1) {
            alert("수량은 1이상 입력해 주십시오.");
            result = false;
            return false;
        }

        io_type = $el_type.eq(index).val();
        if(io_type == "0")
            sum_qty += parseInt(val);
    });

    if(!result) {
        return false;
    }

    if(min_qty > 0 && sum_qty < min_qty) {
        alert("선택옵션 개수 총합 "+number_format(String(min_qty))+"개 이상 주문해 주십시오.");
        return false;
    }

    if(max_qty > 0 && sum_qty > max_qty) {
        alert("선택옵션 개수 총합 "+number_format(String(max_qty))+"개 이하로 주문해 주십시오.");
        return false;
    }

    return true;
}

 

theme/basic/skin/shop/basic/item.form.skin.php 파일의 300번째 줄에 아래와 같이 추가합니다.

 

<?php if ($naverpay_button_js) { ?>
            <div class="itemform-naverpay"><?php echo $naverpay_request_js.$naverpay_button_js; ?></div>
            <?php } ?>

 

theme/basic/skin/shop/basic/item.form.skin.php 파일의 382번째 줄에 아래와 같이 추가합니다. 

 

function fsubmit_check(f)
{
    // 판매가격이 0 보다 작다면
    if (document.getElementById("it_price").value < 0) {
        alert("전화로 문의해 주시면 감사하겠습니다.");
        return false;
    }

    if($(".sit_opt_list").size() < 1) {
        alert("상품의 선택옵션을 선택해 주십시오.");
        return false;
    }

    var val, io_type, result = true;
    var sum_qty = 0;
    var min_qty = parseInt(<?php echo $it['it_buy_min_qty']; ?>);
    var max_qty = parseInt(<?php echo $it['it_buy_max_qty']; ?>);
    var $el_type = $("input[name^=io_type]");

    $("input[name^=ct_qty]").each(function(index) {
        val = $(this).val();

        if(val.length < 1) {
            alert("수량을 입력해 주십시오.");
            result = false;
            return false;
        }

        if(val.replace(/[0-9]/g, "").length > 0) {
            alert("수량은 숫자로 입력해 주십시오.");
            result = false;
            return false;
        }

        if(parseInt(val.replace(/[^0-9]/g, "")) < 1) {
            alert("수량은 1이상 입력해 주십시오.");
            result = false;
            return false;
        }

        io_type = $el_type.eq(index).val();
        if(io_type == "0")
            sum_qty += parseInt(val);
    });

    if(!result) {
        return false;
    }

    if(min_qty > 0 && sum_qty < min_qty) {
        alert("선택옵션 개수 총합 "+number_format(String(min_qty))+"개 이상 주문해 주십시오.");
        return false;
    }

    if(max_qty > 0 && sum_qty > max_qty) {
        alert("선택옵션 개수 총합 "+number_format(String(max_qty))+"개 이하로 주문해 주십시오.");
        return false;
    }

    return true;
}

 

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 13개

7년 전
옵션이 있을경우
FAIL:[OTHER_ERR] Required String parameter 'SHOP_ID' is not present
에러 맞는지요?
네 그런 에러 였을거예요 아무튼 해결 했습니다.
7년 전
구버전 5.0 으로 하면서
옵션을 선택했을때
FAIL:[OTHER_ERR] Required String parameter 'SHOP_ID' is not present 경고창 문제

구버전에 신버전에 맞쳐 사용된 함수나 상수들이 안들어있음

1. mysql_num_rows 에서 sql_num_rows 바뀐부분 이슈
2. shop.config.php 은 구버전에 없음, 이 안에 정의된 상수들을 구버전에 적용해야함

게시글 목록

번호 제목
2065
2049
2036
2026
2016
2005
1992
1983
1972
1953
1943
1924
1913
1904
1879
1868
1855
1836
1828
1809