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

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

QA

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

답변 2

본문

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

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

 

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

이 질문에 댓글 쓰기 :

답변 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;
}

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로