영카트 특정 상품에만 별도의 결제 수단 제한 또는 추가하기 > 영카트5 팁자료실

영카트5 팁자료실

영카트 특정 상품에만 별도의 결제 수단 제한 또는 추가하기 정보

영카트 특정 상품에만 별도의 결제 수단 제한 또는 추가하기

본문

영카트에서 상품을 판매하다 보면 특정 고가 상품이나 특정 서비스 상품에 대해 일반적인 결제 수단(신용카드, 무통장 입금 등) 외에 특정 결제 수단만 허용하거나, 반대로 특정 결제 수단을 제한하고 싶을 때가 있습니다.

영카트의 결제는 shop/orderform.php (주문서 작성 페이지)와 shop/orderformupdate.php (주문 처리 페이지)

제한하거나 추가할 상품의 it_id 확인:

먼저 특정 결제 수단을 적용할 상품의 상품 코드(it_id)를 확인합니다. 관리자 페이지 > 상품 관리 > 상품 목록에서 해당 상품의 "상품코드"를 확인하세요. 예를 들어, 상품 ID가 1234567890이라고 가정합니다.

shop/orderform.php 수정 (주문서 페이지에서 결제 수단 노출 제어):

이 파일은 고객이 주문서를 작성할 때 보이는 결제 수단을 제어합니다.

파일 열기: shop/orderform.php 파일을 텍스트 에디터로 엽니다.

상품 정보 확인: 이 파일 내에서 현재 장바구니에 담긴 상품 정보를 가져오는 부분을 찾습니다. 보통 $s_cart_id를 통해 장바구니 정보를 루프 돌며 가져옵니다.

조건문 추가: 결제 수단을 출력하는 부분(예: <ul id="sod_frm_paysel"> 내부)에서 조건문을 추가하여 특정 상품이 장바구니에 있을 때 특정 결제 수단을 숨기거나 보이게 합니다.

예를 들어, 상품 1234567890이 장바구니에 있으면 무통장 입금(bank)만 허용하고, 다른 결제 수단(card, point, hp, kakaopay, naverpay 등)은 숨기려면 다음과 같이 할 수 있습니다.

<?php
// ... 기존 코드 ...

$is_special_product_in_cart = false;
// 장바구니에 특정 상품이 있는지 확인하는 로직 (예시)
// 실제로는 장바구니 데이터를 루프 돌면서 it_id를 비교해야 함
// (장바구니 로직은 영카트 버전에 따라 다를 수 있으니 기존 코드 참고)
foreach ($cart_data as $cart_item) { // $cart_data는 장바구니 상품 배열이라고 가정
    if ($cart_item['it_id'] === '1234567890') {
        $is_special_product_in_cart = true;
        break;
    }
}

?>

<ul id="sod_frm_paysel">
    <?php if ($is_special_product_in_cart) { ?>
    <li class="fmb_li">
        <input type="radio" name="od_settle_case" value="bank" id="od_settle_bank" <?php echo $checked['od_settle_case']['bank']; ?>>
        <label for="od_settle_bank">무통장입금</label>
    </li>
    <?php } else { ?>
    <li class="fmb_li">
        <input type="radio" name="od_settle_case" value="bank" id="od_settle_bank" <?php echo $checked['od_settle_case']['bank']; ?>>
        <label for="od_settle_bank">무통장입금</label>
    </li>
    <li class="fmb_li">
        <input type="radio" name="od_settle_case" value="card" id="od_settle_card" <?php echo $checked['od_settle_case']['card']; ?>>
        <label for="od_settle_card">신용카드</label>
    </li>
    <?php if ($is_cash_receipt_use) { ?>
    <li class="fmb_li">
        <input type="radio" name="od_settle_case" value="realtime" id="od_settle_realtime" <?php echo $checked['od_settle_case']['realtime']; ?>>
        <label for="od_settle_realtime">실시간계좌이체</label>
    </li>
    <?php } ?>
    <?php if ($is_vbank_use) { ?>
    <li class="fmb_li">
        <input type="radio" name="od_settle_case" value="vbank" id="od_settle_vbank" <?php echo $checked['od_settle_case']['vbank']; ?>>
        <label for="od_settle_vbank">가상계좌</label>
    </li>
    <?php } ?>
    <?php // ... 그 외 결제 수단들 ... ?>
    <?php } ?>
</ul>

shop/orderformupdate.php 수정 (주문 처리 시 결제 수단 유효성 검사):

이 파일은 고객이 주문하기 버튼을 눌렀을 때 실제로 주문이 처리되는 곳입니다. orderform.php에서 결제 수단을 숨겼더라도, 사용자가 개발자 도구를 통해 강제로 다른 결제 수단을 선택하여 요청할 수 있으므로, 서버 측에서 다시 한 번 유효성 검사를 해주는 것이 중요합니다.

파일 열기: shop/orderformupdate.php 파일을 텍스트 에디터로 엽니다.

상품 정보 및 결제 수단 확인: 이 파일 내에서 $_POST['od_settle_case'] 변수로 넘어온 결제 수단과 현재 주문하는 상품 정보를 확인하는 부분을 찾습니다.

조건문 추가

<?php
// ... 기존 코드 ...

// 장바구니에 있는 상품 정보 가져오기 (예시)
// 실제 orderformupdate.php 에서는 이미 장바구니 정보가 처리되어 있을 가능성이 높음
// 여기서는 $_SESSION['ss_cart_id'] 등을 활용하여 다시 장바구니를 조회하거나,
// orderform.php 에서 넘어온 정보를 활용해야 함.
$is_special_product_in_cart = false;
// 실제 장바구니 정보를 확인하는 로직 필요
// 예: select_cart_list($member['mb_id'], get_session('ss_cart_id')) 함수 등으로 다시 가져오기
$sql = " select it_id from {$g5['g5_shop_cart_table']} where od_id = '{$_SESSION['ss_cart_id']}' and it_id = '1234567890' ";
$row = sql_fetch($sql);
if ($row['it_id']) {
    $is_special_product_in_cart = true;
}

// 특정 상품이 장바구니에 있고, 선택된 결제 수단이 'bank'가 아닐 경우 에러
if ($is_special_product_in_cart && $_POST['od_settle_case'] !== 'bank') {
    alert('이 상품은 무통장입금으로만 결제할 수 있습니다.');
}

// ... 나머지 주문 처리 코드 ...
?>

추천
0

댓글 0개

전체 412
영카트5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT