공동구매 자동결제·일괄결제·상품 리뷰 개선
상품 상세의 리뷰 노출, 장바구니 담기와 공동구매 일괄참여, 자동결제 사전 동의, 마감 후 확정 금액의 자동결제 결과 안내와 실패 재결제, 미결제 상품 모아보기와 복수 주문 일괄결제를 한 흐름으로 설계합니다.
프로젝트 개요
상품 상세의 리뷰 노출, 장바구니 담기와 공동구매 일괄참여, 자동결제 사전 동의, 마감 후 확정 금액의 자동결제 결과 안내와 실패 재결제, 미결제 상품 모아보기와 복수 주문 일괄결제를 한 흐름으로 설계합니다. 동작하는 프로토타입으로 화면 흐름과 결제 상태 처리를 먼저 확인하고, 웹과 같은 코드를 쓰는 웹뷰 앱에는 변경분이 그대로 이어지는 구조로 구성합니다.
작업 범위
- 공동구매 — 상품 상세와 리뷰: 마감이 다가오는 공동구매 상품이 현재 참여 인원과 내려간 가격으로 첫 화면에 놓입니다. 상품을 열면 판매자 정보 페이지에 있던 리뷰가 상품 상세에서 바로 읽힙니다
- 장바구니 — 일괄참여와 자동결제 동의: 참여할 공동구매 상품을 담고 옵션·수량을 확인한 뒤 한 번에 참여합니다. 참여 시 자동결제 여부를 고르고 약관 동의가 기록됩니다
- 미결제 모아보기 — 일괄결제: 자동결제를 선택하지 않은 이용자가 금액이 확정된 미결제 상품을 한곳에서 보고, 원하는 상품만 골라 한 번의 결제 절차로 묶어 결제합니다
- 결제 내역 — 결과 안내와 실패 재결제: 마감 후 자동결제의 성공·실패 결과가 이용자에게 안내되고, 실패한 건은 결제수단을 바꾸거나 다시 결제할 수 있습니다
주요 업무
- 공동구매 — 상품 상세와 리뷰 화면: 리뷰를 상품 단위로 조회하는 API와 정렬·사진 리뷰 필터를 설계하고, 기존 리뷰는 상품 연결 테이블로 매핑합니다
- 장바구니 — 일괄참여와 자동결제 동의 화면: 선택한 여러 공동구매를 한 요청으로 참여 처리하고, 공동구매별 마감 일정에 따라 최종 금액이 확정되는 기존 구조를 유지합니다
- 미결제 모아보기 — 일괄결제 화면: 복수 주문을 하나의 결제 요청으로 묶고, 주문별 성공·실패를 분리해 기록하는 부분 성공 상태 모델을 설계합니다
- 결제 내역 — 결과 안내와 실패 재결제 화면: 빌링키 기반 자동결제 결과를 상태별로 나누어 보여주고, 실패 사유를 이용자용 문구로 변환해 재결제 흐름으로 연결합니다




프로젝트 핵심 과제
마감 취소나 최소 인원 미달로 확정 금액이 바뀌는 공동구매 특성상
참여 상태 전이와 금액 확정 시점을 명확히 나누는 설계가 필요합니다
복수 주문을 한 번에 결제할 때 일부만 실패하는 경우를 이용자와 관리자 화면에서 같은 기준으로 보이게 하는 상태 설계가 필요합니다
이용자가 결제 버튼을 연속으로 누르거나 재시도할 때 같은 주문이 두 번 결제되지 않
멱등키와 잠금 설계가 필요합니다
기존 회원·주문 데이터를 유지한 채 테이블을 추가하는 변경이라
되돌릴 수 있는 마이그레이션 순서 설계가 필요합니다
핵심 기능 상세
공동구매 — 상품 상세와 리뷰
마감이 다가오는 공동구매 상품이 현재 참여 인원과 내려간 가격으로 첫 화면에 놓입니다. 상품을 열면 판매자 정보 페이지에 있던 리뷰가 상품 상세에서 바로 읽힙니다.
- Next.js 상품 상세 라우트에서 리뷰 목록을 서버 컴포넌트로 불러오는 구조 설계
- 리뷰와 상품을 잇는 연결 테이블과 Prisma 관계 모델 설계
- 리뷰 없음·불러오는 중·조회 실패 상태를 공통 컴포넌트로 분리
기존 리뷰를 상품별로 매핑하는 연결 구조를 두어 데이터 이동 없이 상품 상세에서 조회되도록 설계합니다.


장바구니 — 일괄참여와 자동결제 동의
참여할 공동구매 상품을 담고 옵션·수량을 확인한 뒤 한 번에 참여합니다. 참여 시 자동결제 여부를 고르고 약관 동의가 기록됩니다.
- 장바구니 선택 상태를 서버 기준으로 검증하는 일괄참여 API 설계
- 참여 건별 마감 일정을 보존하는 참여 테이블과 상태 전이 모델 설계
- 자동결제 동의 문구 버전과 동의 시각을 함께 저장하는 사전 동의 기록 설계
참여 요청 단위의 멱등키를 두어 같은 요청이 다시 들어와도 참여가 중복 생성되지 않도록 설계합니다.


미결제 모아보기 — 일괄결제
자동결제를 선택하지 않은 이용자가 금액이 확정된 미결제 상품을 한곳에서 보고, 원하는 상품만 골라 한 번의 결제 절차로 묶어 결제합니다.
- 금액 확정된 미결제 주문만 조회하는 목록 API와 선택 합계 계산 설계
- 나이스페이 결제 요청 한 번에 복수 주문을 연결하는 결제 묶음 테이블 설계
- 주문별 결제 결과를 따로 저장해 일부 실패 시 실패 건만 다시 결제하는 흐름 설계
결제 묶음과 주문 상태를 분리해, 일부 주문만 실패해도 성공 건의 결제 상태가 유지되도록 설계합니다.


결제 내역 — 결과 안내와 실패 재결제
마감 후 자동결제의 성공·실패 결과가 이용자에게 안내되고, 실패한 건은 결제수단을 바꾸거나 다시 결제할 수 있습니다.
- 나이스페이 빌링키 등록 결과를 이용자별 결제수단으로 저장하는 구조 설계
- 결제 결과 코드를 이용자용 안내 문구로 매핑하는 단일 표 설계
- 재결제 요청에 멱등키를 붙여 같은 주문의 중복결제를 막는 구조 설계
자동결제 실패 건을 재결제 대기 상태로 두고 이용자 화면과 관리 화면이 같은 상태값을 읽도록 설계합니다.


프로젝트 진행 단계
기존 구조 확인과 결제 상태 모델 설계 · 2026.10
회원·상품·주문 구조를 확인하고 참여·결제 묶음·주문별 결제 상태 모델과 변경 DB 설계
리뷰 연결과 장바구니 일괄참여 구현 · 2026.10
상품별 리뷰 조회·연결 테이블, 장바구니 선택과 일괄참여 API 구현
자동결제 동의와 일괄결제 구현 · 2026.10
사전 동의 기록, 빌링키 등록, 미결제 모아보기와 복수 주문 일괄결제 화면 구현
결제 예외 검수와 앱 반영 확인 · 2026.10
중복결제·부분 실패 시나리오 검수표 작성, 웹뷰 앱 화면 확인과 문서 정리
개발 결과
기술적 주안점
- 기존 리뷰를 상품별로 매핑하는 연결 구조를 두어 데이터 이동 없이 상품 상세에서 조회되도록 설계합니다
- 참여 요청 단위의 멱등키를 두어 같은 요청이 다시 들어와도 참여가 중복 생성되지 않도록 설계합니다
- 결제 묶음과 주문 상태를 분리해, 일부 주문만 실패해도 성공 건의 결제 상태가 유지되도록 설계합니다