주문
주문
요구사항
요구사항 더 캐묻기
- 쿠폰은 여러 개가 사용 가능한건지?
- 쿠폰 사용 시, 최소 주문 금액이 있는지?
- 쿠폰이 상품 두 개 다 사용이 가능할 때, 어떤 상품에 적용 가능하게 할 것 인지?
- 유저가 선택 가능하게 할 것인지?
- 포인트는 최소 주문 금액이 있는지?
- 배송이 따로 일 경우 배송비는 어떻게 하는지?
- 배송 주소는 어디서 입력 받는지?
- 재고 수량이 부족한 경우 결제 클릭 시, 예외가 발생해야 하는지?
- 결제 예외가 발생할 시, 어떻게 처리할 지?
구현 시, 고려사항
- 결제 전, 주문을 만들면 쓰레기 데이터가 될 수 있음
- 결제 시, 주문을 만들면 결제 로직 중 오류가 발생하면 주문이 휘발 될 수 있음
흐름도
- 상품이나, 장바구니에서 주문이 가능
주문 흐름을 하나로 만들어 보기
- 상품 주문 시, 장바구니에 담아서 주문을 만드는 식으로 장바구니를 통해서만 주문 되도록 흐름을 만들 수 있음
- 반대로, 여러 상품을 주문하는 식으로 만들어 장바구니에 담은 상품을 상품 여러 개로 주문 되도록 흐름을 만들 수 있음
- 주문이 상품을 의존하느냐, 장바구니를 의존하느냐의 차이
OrderId가 있는데 OrderKey를 별도로 만드는 이유
- 경쟁사에서 주문 개수를 유추할 수 있음
OrderId로 할 시, 해커가 순회하며 주문 요청을 보낼 수도 있음 (유저 정보를 체크하니 상관은 없을 듯)- 등등
API
상품 주문
1
POST /v1/orders
| Parameter | 설명 |
|---|---|
| productId | 상품 고유 아이디 |
| quantity | 수량 |
상품id로 상품 조회주문 엔티티생성 및 저장주문 항목 엔티티생성 및 저장주문 키반환
장바구니에서 주문
1
POST /v1/cart-orders
| Parameter | 설명 |
|---|---|
| cartItemIds | 장바구니 아이템 고유 아이디 리스트 |
장바구니 항목조회- 파라미터로 전달받은
장바구니 항목만 필터링 해서주문생성 상품 주문 서비스호출
결제 전 주문 화면
1
GET /v1/orders/{orderKey}/checkout
| Path Parameter | 설명 |
|---|---|
| orderKey | 주문 키 |
주문 키및CREATE 상태에 해당하는 주문 조회- 사용 가능한
쿠폰조회 포인트잔액 조회
주문 목록 조회
1
GET /v1/orders
결제 완료된주문목록 조회
주문 상세 조회
1
GET /v1/orders/{orderKey}
| Path Parameter | 설명 |
|---|---|
| orderKey | 주문 키 |
주문 키에 해당하는주문조회주문에 해당하는주문 항목조회
개념도
- 주문은 상품을 의존
- 장바구니로 주문 시, 상품을 여러 개 주문하는 식으로 구현하였기에 장바구니가 상품에 의존
- 상품이 장바구니에 비해 상급 개념이라 상품을 메인으로 놓고 처리한 것
참고
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.


