영카트 배송비 질문입니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
영카트 배송비 질문입니다.

QA

영카트 배송비 질문입니다.

본문

몇개의 상품만 "유료배송" 으로 설정 해놨는데

해당 상품들을 장바구니에 담으면 배송비가 각 상품마다 계산되어 합산됩니다.

 

유료배송으로 따로 설정한 상품을 장바구니에 상품을 담으면 배송비를 한개로 처리할수 없을까요?

이 질문에 댓글 쓰기 :

답변 2

"유료배송"으로 설정된 상품을 장바구니에 담았을 때,

배송비가 개별적으로 합산되지 않고 단일 배송비로 처리되도록 구현한다는 것인가요.

 

배송비를 계산하는 단계에서 중복 계산을 방지하고,

특정 조건을 만족하는 상품이 포함된 경우

한 번만 배송비를 추가하도록 코드를 수정하시면 되지 않을까요.

 

★ 개요

shop/cart.php : 장바구니 상품에 is_paid_shipping 필드 추가

lib/shop.lib.php : 배송비 계산 로직 수정

shop.item.php : 상품 데이터에 유료배송 조건 추가

 

★ 코딩 예시  (예시 파일들은 [정식버전]그누보드(영카트) 5.6.4를 기준으로 함)

- shop/cart.php 파일에서 장바구니 데이터를 처리하는 로직을 확인

  또는 관련 함수(shop.lib.php의 get_delivery_cost() 함수)

- 배송비가 단일로 처리되도록 로직을 수정

  *lib/shop.lib.php에 조건을 추가하여 특정 상품이 장바구니에 포함되어 있는지 확인

  *장바구니 데이터를 순회하면서 유료배송 상품이 하나라도 발견되면

    플래그($delivery_included와 같은 변수)를 설정하고 추가 배송비 계산을 건너뜁니다.

- shop.lib.php 파일의 get_delivery_cost() 함수 내 코드를 다음과 같이 수정


function get_delivery_cost($cart_items) {
    $delivery_cost = 0;
    $delivery_included = false; // 중복 계산 방지 플래그
    foreach ($cart_items as $item) {
        if ($item['is_paid_shipping']) {
            if (!$delivery_included) {
                $delivery_cost += $item['delivery_cost'];
                $delivery_included = true; // 배송비 한 번만 추가
            }
        }
    }
    return $delivery_cost;
}

- 상품 데이터에서 is_paid_shipping 필드를 확인하는 로직을 추가

  이는 shop.item.php 파일에서 상품 데이터를 읽어올 때 설정


function set_paid_shipping_flag($item) {
    if ($item['shipping_type'] === 'paid') {
        $item['is_paid_shipping'] = true;
    } else {
        $item['is_paid_shipping'] = false;
    }
    return $item;
}

 

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

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