반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 쉬운 문제
- typescript
- 프로그래머스 레벨 2
- ip
- 프로그래머스
- javascript
- HTTP
- Algorithm
- 타입 챌린지
- 수학
- type challenge
- 알고리즘
- 문자열
- BFS
- 자바스크립트
- 타입스크립트
- 백준
- socket
- Node.js
- TCP
- 레벨 1
- Crawling
- 그래프
- 가천대
- 크롤링
- Nestjs
- dp
- HTTP 완벽 가이드
- 소켓
- dfs
Archives
- Today
- Total
kakasoo
커머스에서의 장바구니 금액 계산법 본문
반응형
커머스마다 돈 계산하는 방법은 다 다르다.
다만, 모든 사이트에서 공통적으로 사용될 수 있도록 다이어그램을 하나 만들어봤다.
결제 금액 계산하는 법
장바구니 가격 계산
- 상품 가격 계산 ( 옵션과 선택 옵션의 가격과 수량 곱의 합 )
- 옵션 가격 계산
- 상품의 가격과 옵션 수량의 곱
- 선택 옵션 가격 계산
- 상품 가격과 선택 옵션 수량의 곱
- 옵션 가격 계산
- 배송비 책정
- 각 상품 당 배송비 책정
- 상품 정보나 배송지 정보가 누락된 경우 배송비 0원 ( 비정상적인 경우 )
- 도서산간지역인 경우 도서산간지역 배송비를 책정
- 도서지역 배송비보다 상품의 배송비가 큰 경우, 큰 쪽을 우선
- ex. 배송비가 40,000원인 경우 도서지역 배송비인 5,000원보다 크게 된다.
- 도서지역 배송비보다 상품의 배송비가 큰 경우, 큰 쪽을 우선
- 배송비가 무료인 경우 0원.
- 배송비가 유료인 경우, 상품의 배송비로 고정.
- 배송비가 ‘~이상 무료'인 경우, 기준 금액 미만에 상품의 배송비로 고정
- 기준 이상의 금액인 경우 배송비 0원
- 배송비가 ‘~개 이상 무료'인 경우 기준 갯수 미만에 상품의 배송비로 고정
- 기준 이상의 개수인 경우 배송비 0원
- 배송비가 수량 별 부과인 경우 기준 n개마다 상품의 배송비 부과
- 착불인 경우 배송비 0원으로 변경
- 각 상품 당 배송비 책정
- 묶음 배송 고려
- 묶음 배송의 상품 금액이 총합 0원인 경우 배송비도 0원이 되도록 수정
- 비정상적인 경우라 판단하여 0원으로 했는데, 실제로 존재 가능한가?
- 묶음 배송비 상태 판단
- 묶음으로 된 상품 중 배송비가 가장 큰 것을 기준으로 책정
- 묶음으로 된 상품 중 배송비가 가장 낮은 것을 기준으로 책정
- 묶음으로 된 상품들의 총합을 더해, ~원 이상인 경우 무료로 책정
- 묶음이 없는 상품일 경우
- 상품 1개만 담긴 하나의 묶음으로 취급하여 Max, MinCalc 구분 없이 책정
- 묶음 배송의 상품 금액이 총합 0원인 경우 배송비도 0원이 되도록 수정
- 묶음의 상품 가격 총합과 묶음에 책정된 배송비를 합산
주문서 가격 계산
일부 미리 저장된 값을 호출한다.
장바구니와 요청서는, 담긴 시점에서도 가격이 바뀔 수 있어서 미리 저장해두진 않지만,
주문서는 돈을 받은 시점이라 미리 계산해두고 호출만 하면 되기 때문에 처음부터 다시 계산하지는 않는다.
단, 취소 시에는 돈 계산을 처음부터 다시 진행한다.
취소
취소 시에는, 취소된 상품이 없다고 가정하고 처음부터 돈 계산을 다시 해본 다음,
취소 전 주문서에서 상품이 없다 가정된 상태로 계산된 주문서의 가격 차이를 구한다.
이 가격 차이 만큼이 취소로 인해 우리가 돌려줄 돈이 된다.
이 가격 차이가, 상품의 가격보다 적다면,
가격 차이 - 상품의 가격 = 차감비 라는 식이 성립된다.
이 차감비는 배송의 무료 조건이 깨진 경우에 발생한다.
반응형
'프로그래밍 > Backend' 카테고리의 다른 글
HATEOAS을 이용한 유저 권한(Authorization) 설계 (0) | 2022.10.02 |
---|---|
부하 대응 접근 방식 (0) | 2022.09.12 |
Node.js에서 동시성 다루기와 예제 (0) | 2022.08.24 |
성능 기술과 백분위 ( percentile ) (0) | 2022.07.02 |
백엔드 개발자가 블록체인을 배워야 할까? (0) | 2022.06.26 |