프로그래밍/Backend
커머스에서의 장바구니 금액 계산법
카카수(kakasoo)
2022. 8. 27. 18:25
반응형
커머스마다 돈 계산하는 방법은 다 다르다.
다만, 모든 사이트에서 공통적으로 사용될 수 있도록 다이어그램을 하나 만들어봤다.
결제 금액 계산하는 법
장바구니 가격 계산
- 상품 가격 계산 ( 옵션과 선택 옵션의 가격과 수량 곱의 합 )
- 옵션 가격 계산
- 상품의 가격과 옵션 수량의 곱
- 선택 옵션 가격 계산
- 상품 가격과 선택 옵션 수량의 곱
- 옵션 가격 계산
- 배송비 책정
- 각 상품 당 배송비 책정
- 상품 정보나 배송지 정보가 누락된 경우 배송비 0원 ( 비정상적인 경우 )
- 도서산간지역인 경우 도서산간지역 배송비를 책정
- 도서지역 배송비보다 상품의 배송비가 큰 경우, 큰 쪽을 우선
- ex. 배송비가 40,000원인 경우 도서지역 배송비인 5,000원보다 크게 된다.
- 도서지역 배송비보다 상품의 배송비가 큰 경우, 큰 쪽을 우선
- 배송비가 무료인 경우 0원.
- 배송비가 유료인 경우, 상품의 배송비로 고정.
- 배송비가 ‘~이상 무료'인 경우, 기준 금액 미만에 상품의 배송비로 고정
- 기준 이상의 금액인 경우 배송비 0원
- 배송비가 ‘~개 이상 무료'인 경우 기준 갯수 미만에 상품의 배송비로 고정
- 기준 이상의 개수인 경우 배송비 0원
- 배송비가 수량 별 부과인 경우 기준 n개마다 상품의 배송비 부과
- 착불인 경우 배송비 0원으로 변경
- 각 상품 당 배송비 책정
- 묶음 배송 고려
- 묶음 배송의 상품 금액이 총합 0원인 경우 배송비도 0원이 되도록 수정
- 비정상적인 경우라 판단하여 0원으로 했는데, 실제로 존재 가능한가?
- 묶음 배송비 상태 판단
- 묶음으로 된 상품 중 배송비가 가장 큰 것을 기준으로 책정
- 묶음으로 된 상품 중 배송비가 가장 낮은 것을 기준으로 책정
- 묶음으로 된 상품들의 총합을 더해, ~원 이상인 경우 무료로 책정
- 묶음이 없는 상품일 경우
- 상품 1개만 담긴 하나의 묶음으로 취급하여 Max, MinCalc 구분 없이 책정
- 묶음 배송의 상품 금액이 총합 0원인 경우 배송비도 0원이 되도록 수정
- 묶음의 상품 가격 총합과 묶음에 책정된 배송비를 합산
주문서 가격 계산
일부 미리 저장된 값을 호출한다.
장바구니와 요청서는, 담긴 시점에서도 가격이 바뀔 수 있어서 미리 저장해두진 않지만,
주문서는 돈을 받은 시점이라 미리 계산해두고 호출만 하면 되기 때문에 처음부터 다시 계산하지는 않는다.
단, 취소 시에는 돈 계산을 처음부터 다시 진행한다.
취소
취소 시에는, 취소된 상품이 없다고 가정하고 처음부터 돈 계산을 다시 해본 다음,
취소 전 주문서에서 상품이 없다 가정된 상태로 계산된 주문서의 가격 차이를 구한다.
이 가격 차이 만큼이 취소로 인해 우리가 돌려줄 돈이 된다.
이 가격 차이가, 상품의 가격보다 적다면,
가격 차이 - 상품의 가격 = 차감비 라는 식이 성립된다.
이 차감비는 배송의 무료 조건이 깨진 경우에 발생한다.
반응형