← 포트폴리오 목록

공동구매 자동결제·일괄결제·상품 리뷰 개선

상품 상세의 리뷰 노출, 장바구니 담기와 공동구매 일괄참여, 자동결제 사전 동의, 마감 후 확정 금액의 자동결제 결과 안내와 실패 재결제, 미결제 상품 모아보기와 복수 주문 일괄결제를 한 흐름으로 설계합니다.

프로젝트 납품 요약

아래 프로젝트 개요와 핵심 기능에서 구현 화면을 확인할 수 있습니다.

서비스 타입Web
업종이커머스
기술 스택
Next.jsReactTypeScriptTailwind CSSNode.jsPostgreSQLPrisma나이스페이웹뷰 앱
주요 기능
  • 공동구매 — 상품 상세와 리뷰
  • 장바구니 — 일괄참여와 자동결제 동의
  • 미결제 모아보기 — 일괄결제
  • 결제 내역 — 결과 안내와 실패 재결제

프로젝트 개요

범위: 개발, 디자인, 기획

상품 상세의 리뷰 노출, 장바구니 담기와 공동구매 일괄참여, 자동결제 사전 동의, 마감 후 확정 금액의 자동결제 결과 안내와 실패 재결제, 미결제 상품 모아보기와 복수 주문 일괄결제를 한 흐름으로 설계합니다. 동작하는 프로토타입으로 화면 흐름과 결제 상태 처리를 먼저 확인하고, 웹과 같은 코드를 쓰는 웹뷰 앱에는 변경분이 그대로 이어지는 구조로 구성합니다.

작업 범위

  • 공동구매 — 상품 상세와 리뷰: 마감이 다가오는 공동구매 상품이 현재 참여 인원과 내려간 가격으로 첫 화면에 놓입니다. 상품을 열면 판매자 정보 페이지에 있던 리뷰가 상품 상세에서 바로 읽힙니다
  • 장바구니 — 일괄참여와 자동결제 동의: 참여할 공동구매 상품을 담고 옵션·수량을 확인한 뒤 한 번에 참여합니다. 참여 시 자동결제 여부를 고르고 약관 동의가 기록됩니다
  • 미결제 모아보기 — 일괄결제: 자동결제를 선택하지 않은 이용자가 금액이 확정된 미결제 상품을 한곳에서 보고, 원하는 상품만 골라 한 번의 결제 절차로 묶어 결제합니다
  • 결제 내역 — 결과 안내와 실패 재결제: 마감 후 자동결제의 성공·실패 결과가 이용자에게 안내되고, 실패한 건은 결제수단을 바꾸거나 다시 결제할 수 있습니다

주요 업무

  • 공동구매 — 상품 상세와 리뷰 화면: 리뷰를 상품 단위로 조회하는 API와 정렬·사진 리뷰 필터를 설계하고, 기존 리뷰는 상품 연결 테이블로 매핑합니다
  • 장바구니 — 일괄참여와 자동결제 동의 화면: 선택한 여러 공동구매를 한 요청으로 참여 처리하고, 공동구매별 마감 일정에 따라 최종 금액이 확정되는 기존 구조를 유지합니다
  • 미결제 모아보기 — 일괄결제 화면: 복수 주문을 하나의 결제 요청으로 묶고, 주문별 성공·실패를 분리해 기록하는 부분 성공 상태 모델을 설계합니다
  • 결제 내역 — 결과 안내와 실패 재결제 화면: 빌링키 기반 자동결제 결과를 상태별로 나누어 보여주고, 실패 사유를 이용자용 문구로 변환해 재결제 흐름으로 연결합니다
공동구매 자동결제·일괄결제·상품 리뷰 개선
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

마감 취소나 최소 인원 미달로 확정 금액이 바뀌는 공동구매 특성상

참여 상태 전이와 금액 확정 시점을 명확히 나누는 설계가 필요합니다

복수 주문을 한 번에 결제할 때 일부만 실패하는 경우를 이용자와 관리자 화면에서 같은 기준으로 보이게 하는 상태 설계가 필요합니다

이용자가 결제 버튼을 연속으로 누르거나 재시도할 때 같은 주문이 두 번 결제되지 않

멱등키와 잠금 설계가 필요합니다

기존 회원·주문 데이터를 유지한 채 테이블을 추가하는 변경이라

되돌릴 수 있는 마이그레이션 순서 설계가 필요합니다

구현 내용

핵심 기능 상세

핵심 기능 1

공동구매 — 상품 상세와 리뷰

마감이 다가오는 공동구매 상품이 현재 참여 인원과 내려간 가격으로 첫 화면에 놓입니다. 상품을 열면 판매자 정보 페이지에 있던 리뷰가 상품 상세에서 바로 읽힙니다.

  • Next.js 상품 상세 라우트에서 리뷰 목록을 서버 컴포넌트로 불러오는 구조 설계
  • 리뷰와 상품을 잇는 연결 테이블과 Prisma 관계 모델 설계
  • 리뷰 없음·불러오는 중·조회 실패 상태를 공통 컴포넌트로 분리

기존 리뷰를 상품별로 매핑하는 연결 구조를 두어 데이터 이동 없이 상품 상세에서 조회되도록 설계합니다.

공동구매 — 상품 상세와 리뷰
공동구매 — 상품 상세와 리뷰 실제 화면
핵심 기능 2

장바구니 — 일괄참여와 자동결제 동의

참여할 공동구매 상품을 담고 옵션·수량을 확인한 뒤 한 번에 참여합니다. 참여 시 자동결제 여부를 고르고 약관 동의가 기록됩니다.

  • 장바구니 선택 상태를 서버 기준으로 검증하는 일괄참여 API 설계
  • 참여 건별 마감 일정을 보존하는 참여 테이블과 상태 전이 모델 설계
  • 자동결제 동의 문구 버전과 동의 시각을 함께 저장하는 사전 동의 기록 설계

참여 요청 단위의 멱등키를 두어 같은 요청이 다시 들어와도 참여가 중복 생성되지 않도록 설계합니다.

장바구니 — 일괄참여와 자동결제 동의
장바구니 — 일괄참여와 자동결제 동의 실제 화면
핵심 기능 3

미결제 모아보기 — 일괄결제

자동결제를 선택하지 않은 이용자가 금액이 확정된 미결제 상품을 한곳에서 보고, 원하는 상품만 골라 한 번의 결제 절차로 묶어 결제합니다.

  • 금액 확정된 미결제 주문만 조회하는 목록 API와 선택 합계 계산 설계
  • 나이스페이 결제 요청 한 번에 복수 주문을 연결하는 결제 묶음 테이블 설계
  • 주문별 결제 결과를 따로 저장해 일부 실패 시 실패 건만 다시 결제하는 흐름 설계

결제 묶음과 주문 상태를 분리해, 일부 주문만 실패해도 성공 건의 결제 상태가 유지되도록 설계합니다.

미결제 모아보기 — 일괄결제
미결제 모아보기 — 일괄결제 실제 화면
핵심 기능 4

결제 내역 — 결과 안내와 실패 재결제

마감 후 자동결제의 성공·실패 결과가 이용자에게 안내되고, 실패한 건은 결제수단을 바꾸거나 다시 결제할 수 있습니다.

  • 나이스페이 빌링키 등록 결과를 이용자별 결제수단으로 저장하는 구조 설계
  • 결제 결과 코드를 이용자용 안내 문구로 매핑하는 단일 표 설계
  • 재결제 요청에 멱등키를 붙여 같은 주문의 중복결제를 막는 구조 설계

자동결제 실패 건을 재결제 대기 상태로 두고 이용자 화면과 관리 화면이 같은 상태값을 읽도록 설계합니다.

결제 내역 — 결과 안내와 실패 재결제
결제 내역 — 결과 안내와 실패 재결제 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

기존 구조 확인과 결제 상태 모델 설계 · 2026.10

회원·상품·주문 구조를 확인하고 참여·결제 묶음·주문별 결제 상태 모델과 변경 DB 설계

STEP 2

리뷰 연결과 장바구니 일괄참여 구현 · 2026.10

상품별 리뷰 조회·연결 테이블, 장바구니 선택과 일괄참여 API 구현

STEP 3

자동결제 동의와 일괄결제 구현 · 2026.10

사전 동의 기록, 빌링키 등록, 미결제 모아보기와 복수 주문 일괄결제 화면 구현

STEP 4

결제 예외 검수와 앱 반영 확인 · 2026.10

중복결제·부분 실패 시나리오 검수표 작성, 웹뷰 앱 화면 확인과 문서 정리

개발 결과

복수 주문 일괄결제 상태 모델 설계결제 묶음과 주문별 결과를 분리 저장해 부분 성공·부분 실패를 구분하는 상태 전이 모델 설계
멱등키 기반 중복결제 방지 구조 설계참여·결제·재결제 요청마다 멱등키를 저장하고 같은 키의 재요청을 기존 결과로 응답하는 구조 설계
사전 동의 기록 체계 설계동의 문구 버전·동의 시각·대상 참여 건을 함께 저장해 자동결제 동의 이력을 조회하는 구조 설계
기존 리뷰 상품 연결 구조 설계리뷰 원본은 유지하고 상품 연결 테이블만 추가해 상품 상세 조회가 가능하도록 하는 매핑 구조 설계

기술적 주안점

  • 기존 리뷰를 상품별로 매핑하는 연결 구조를 두어 데이터 이동 없이 상품 상세에서 조회되도록 설계합니다
  • 참여 요청 단위의 멱등키를 두어 같은 요청이 다시 들어와도 참여가 중복 생성되지 않도록 설계합니다
  • 결제 묶음과 주문 상태를 분리해, 일부 주문만 실패해도 성공 건의 결제 상태가 유지되도록 설계합니다

유사한 프로젝트를 기획하고 계신가요?

필요한 기능과 일정을 알려주시면 개발 범위를 함께 정리하겠습니다.

프로젝트 문의