영카트 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>
</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;
}