운영

개발팀 전달 기획서: 화면 상태, 체크포인트, 핸드오프 템플릿 한 번에

개발팀이 다시 묻는 이유, 기획서에 다 남아요.

핵심 요약

  • 결제 화면은 한 장이 아니라 최소 6가지 상태예요. 주문서, 진행 중, 완료, 실패, 대기, 취소를 개별 화면으로 분리해야 개발자가 되묻지 않아요.
  • 기획서에서 자주 빠지는 7가지는 실패·로딩·결제수단 순서·약관·뒤로가기·모바일 키보드·완료 후 상태 처리예요. 이 7개를 먼저 채워야 와이어프레임이 구현 가능한 문서로 바뀌어요.
  • 핸드오프 문서의 목적은 구현 방식을 대신 정하는 게 아니라 기준을 분명히 넘기는 거예요. 결제수단, 화면 방식(iframe/popup/redirect), 상태 정의, 취소·환불 정책, 정산 구조를 체크 가능한 형태로 정리해요.
  • 긴 설명보다 빠진 항목이 없는 한 장짜리 기준표​​가 나아요. 이 문서 하단의 템플릿을 복붙해 채우면 돼요.

2화면은 한 장이 아니다: 최소 6가지 상태로 분리해요

결제 기획서 와이어프레임 1장으로는 개발을 시작할 수 없어요. 결제는 사용자 이탈, 외부 모듈 호출, 네트워크 오류 등 변수가 많기 때문이에요. '1 페이지 = 1 상태'로 분리해 최소 6장을 만들어요.

  1. 주문서 (Order Sheet): 상품 정보, 배송지 입력, 포인트/쿠폰 적용, 최종 결제 금액 합계가 표시되는 화면.
  2. 결제수단 선택​: 카드, 계좌이체, 가상계좌, 간편결제 등 사용자가 결제 방식을 고르는 영역. 주문서 하단에 포함되기도 해요.
  3. 결제 진행 중 (Processing): 결제 버튼을 누른 후 인증 창이 뜨기 전이나 결과 처리 중인 상태. 스피너/로딩 UI 필수.
  4. 결제 완료 (Success): 결제 승인이 완료되어 주문 번호와 감사 안내를 전하는 화면.
  5. 결제 실패 (Failure): 한도 초과, 잔액 부족, 사용자 취소로 결제가 중단된 경우 사유를 안내.
  6. 결제 대기 (Pending): 가상계좌처럼 '입금'이라는 추가 액션이 필요한 경우 입금 계좌와 기한을 안내.

각 화면을 독립적으로 정의하지 않으면 "실패하면 주문서로 가나요, 장바구니로 가나요?" 같은 질문을 수십 번 받아요.

화면 ID별 기획서 샘플

복붙해서 서비스 성격에 맞게 수정해요.

[PAY-01] 주문서 및 결제수단 선택

  • 진입: 장바구니 '구매하기' 또는 상품 상세 '바로 구매' 클릭
  • Section 1 배송 정보: 수령인, 연락처, 주소(우편번호 찾기), 요청사항
  • Section 2 주문 상품: 상품명, 옵션, 수량, 금액
  • Section 3 할인: 쿠폰, 포인트(전액 사용 버튼)
  • Section 4 결제수단: 카드(Default) / 간편결제 / 가상계좌
  • Section 5 합계: 상품 + 배송비 − 할인 = 결제금액
  • Section 6 약관: [필수] 결제 이용약관 외 2건, 전체동의 포함
  • 액션: [000원 결제하기] → [PAY-02] 전환

[PAY-02] 결제 진행 중 (Loading)

  • 중앙: 로딩 스피너 + "결제를 진행 중예요. 잠시만 기다려 주세요."
  • 서브: "브라우저를 닫거나 뒤로 가기를 누르지 마세요."
  • 배경 Dim 처리로 추가 클릭 방지

[PAY-03] 결제 완료 (Success)

  • 체크 아이콘 + "결제가 완료됐어요!"
  • 정보: 주문번호, 결제금액, 결제수단(예: 비씨카드 / 1234), 배송지 요약
  • 액션: [주문 내역 보기] / [쇼핑 계속하기]

3결제 화면에서 자주 빠뜨리는 7가지 체크포인트

화면 상태를 분리해도 아래 7개가 비면 개발자는 반드시 되물어요. 한 번에 채워두는 게 나아요.

1) 실패 처리

PG사가 실패 메시지를 내려주면 그대로 또는 거의 그대로 보여주면 돼요​. 기획에서 먼저 정할 건 에러코드표가 아니라 "메시지를 어디에 보여줄지"와 "실패 후 어디로 보낼지".

  • 기본 실패 문구: PG 응답 메시지 사용
  • 사용자 취소: 실패와 구분해서 주문서 복귀
  • 서버 검증 지연: 결제 결과 확인 중으로 표기 (실패 아님)
  • 반복되는 특수 케이스만 PG 오류코드 기반 예외 처리

2) 로딩 상태

로딩은 친절한 안내가 아니라 중복 요청을 막는 필수 장치​​예요. 최소 3개: 결제창 호출 중 / 결제 완료 후 서버 확인 중 / 지연.

  • 버튼 클릭 즉시 상태 변경(결제하기결제창 준비 중)
  • 로딩 중 버튼 비활성화
  • 스피너만 두지 말고 현재 상태를 한 줄로 설명
  • 오래 걸리면 주문 상태 확인 같은 다음 행동 제공

3) 결제수단 순서

가장 많이 쓰는 수단이 먼저 보여야 해요.

  • 모바일: 간편결제/카드 우선
  • 데스크톱: 카드 우선
  • 반복 구매: 최근 사용 수단 재노출
  • 가상계좌: 보조 선택지로 배치

4) 약관 동의

길게 늘어놓는 것보다 필수/선택 구분​​이 중요해요.

  • 필수와 선택을 분리해요
  • 전체 동의는 보조 수단
  • 전문은 펼침/링크
  • 결제 버튼 바로 위에서 필수 동의 여부 확인

5) 뒤로가기와 복귀

  • 주문서 입력값은 기본 유지
  • 결제창 진입 전 단계로 복귀
  • 완료 후엔 뒤로가기보다 주문 상태 확인 우선
  • 검증 중에는 새로고침/뒤로가기에 대한 안내 필요

6) 모바일 키보드와 하단 CTA

전환율과 직결돼요.

  • 하단 CTA는 고정 영역
  • 키보드 노출 시 CTA 처리 방식 지정(같이 밀릴지 / 위로 고정 / 입력 완료 후 재노출)
  • 필수 입력 필드와 CTA가 동시에 안 보이는 상태 방지

7) 완료 후 상태 처리

결제창이 닫혀도 서버 확인은 남아 있을 수 있어요.

  • 완료 직후 바로 성공으로 단정하지 않아요
  • 서버 확인 전에는 결제 결과 확인 중
  • 완료 후 주문번호/주문내역 이동 경로 제공
  • 가상계좌 입금 대기 상태는 분리

4결제수단 목록은 "열어둘 수단"이 아니라 "검증할 수단"으로 봐요

카드, 간편결제, 가상계좌를 나열하는 것으로 끝내면 안 돼요. 수단별로 완료와 그 이후 취소까지 실제로 확인​​해야 해요.

결제수단 기본 확인 추가로 꼭 볼 것
카드 결제 완료 응답, 성공/실패 복귀 완료 후 취소
계좌이체 결제 완료 응답, 성공/실패 복귀 완료 후 취소
가상계좌 발급 상태, 입금 완료 반영 입금 후 취소·환불 처리
간편결제 결제 완료 응답, 앱 전환/복귀 완료 후 취소

핸드오프 문서에는 아래 정도는 적어요.

  • 이번 오픈에서 여는 결제수단
  • 수단별 완료 테스트 범위
  • 수단별 완료 후 취소 검증 여부
  • 가상계좌처럼 환불 흐름으로 가는 수단 구분

5결제화면 방식은 iframe / popup / redirect 중 하나로 좁혀요

화면 방식은 디자이너가 아니라 사용자 흐름​​과 연결돼요. 결제 중 어디로 이동하는지, 실패 후 어디로 돌아오는지, 모바일에서 어떻게 보이는지가 이 선택에서 갈려요.

방식 이런 상황에 써요 미리 정리할 것
iframe 주문서 안에서 결제 UI를 붙여서 보여주고 싶을 때 페이지 내 레이아웃, 높이 변화, 오류 메시지 위치
popup 현재 화면을 유지하며 별도 창에서 처리 팝업 차단, 완료 후 부모창 갱신, 모바일 대응
redirect PG/결제 페이지로 이동 후 복귀 성공/실패 복귀 URL, 앱/웹뷰 복귀

"예쁜 방식"이 아니라 이번 서비스의 기준이 되는 흐름​​을 먼저 정해요.


6상태 정의는 화면 문구보다 운영 기준이 먼저예요

개발자분은 이 상태로 주문을 업데이트하고, 운영팀은 이 상태로 CS를 봐요.

상태 의미 운영에서 보는 기준
결제 대기 결제 전 또는 가상계좌 발급 후 대기 아직 완료 아님
결제 완료 승인 및 서비스 기준상 완료 처리 상품/권한 제공 가능
결제 실패 승인 실패 또는 사용자 이탈 재시도 안내
취소 완료 승인된 거래가 취소됨 원거래 취소 처리 완료
환불 대기 즉시 취소가 아닌 별도 환불 처리 필요 운영 확인 필요

7취소·환불 정책은 반드시 문장으로 적어요

"취소 가능"이라고만 적으면 안 돼요. 취소와 환불은 운영상 완전히 다를 수 있어요.

예를 들면 이렇게 적어요.

  • 카드와 간편결제는 승인 후 전액 취소만 지원해요.
  • 가상계좌 입금 완료 건은 자동 취소가 아니라 환불 요청 흐름으로 처리해요.
  • 부분 취소가 필요한 경우 이번 오픈 범위인지 별도 운영 처리인지 구분해요.

8정산과 예외 케이스는 뒤로 미루지 않아요

구현 막바지에 정할수록 비용이 커져요. 핸드오프 시점에 최소한 이 정도는 잡아둬요.

항목 최소 기준
정산 구조 단순 판매 / 중개 / 판매자별 분배
정산 시점 결제 즉시 / 배송 완료 후 / 이용 확정 후
이탈 처리 결제 중 닫기, 뒤로가기, 앱 종료 시 상태
웹훅 지연 화면 응답과 서버 최종 상태가 다를 때 처리
쿠폰·포인트 취소 시 복구 순서와 기준

9바로 쓰는 핸드오프 템플릿

길게 쓰지 말고 빠진 항목이 없도록 채워요.

# [프로젝트명] 결제 기획 핸드오프

## 1. 기본 정보
- 서비스 유형:
- 결제 유형:
- 목표 오픈일:

## 2. 결제수단
- 이번 오픈 수단:
- 수단별 완료 테스트 범위:
- 수단별 완료 후 취소 테스트 범위:

## 3. 결제화면 방식
- 웹:
- 모바일 웹:
- 앱/웹뷰:
- 방식: iframe / popup / redirect

## 4. 상태 정의
- 결제 대기:
- 결제 완료:
- 결제 실패:
- 취소 완료:
- 환불 대기:

## 5. 취소·환불 정책
- 전액 취소 가능 여부:
- 부분 취소 필요 여부:
- 가상계좌/무통장 처리 기준:

## 6. 정산 및 예외
- 정산 구조:
- 정산 시점:
- 웹훅 지연 시 처리:
- 이탈/재시도 시 처리:
- 쿠폰·포인트 결제 취소 기준:markdown

10최종 체크리스트

정책 체크리스트

  • 결제수단을 이번 오픈 기준으로 확정했어요
  • 수단별 완료·취소 테스트 범위를 적었이에요
  • 화면 방식을 iframe / popup / redirect 중에서 골랐이에요
  • 6가지 상태 화면(주문서/진행/완료/실패/대기/취소)을 분리 정의했어요
  • 실패 시 PG 메시지 노출, 사용자 취소와 검증 지연을 구분했어요
  • 로딩 상태를 최소 3개로 나눴이에요
  • 결제수단 순서를 디바이스 기준으로 정했어요
  • 약관 동의 구조를 필수/선택으로 분리했어요
  • 뒤로가기·복귀 정책과 모바일 키보드 대응을 정했어요
  • 취소·환불 기준을 문장으로 적었이에요
  • 정산 구조와 예외 케이스를 적었이에요

구현 체크리스트

  • PG 실패 메시지 노출 구조가 준비됐어요
  • 서버 확인 중 상태와 완료 상태가 구분돼요
  • 주문 상태 조회/웹훅 후처리 흐름이 연결돼요
  • 수단별 완료 후 취소 테스트를 실거래 전에 마쳤이에요

다음 단계

핸드오프 문서를 건넨 뒤, 결제 상태 매핑과 테스트 시나리오를 함께 확인해요.

추천 콘텐츠

결제 상태 매핑: 7가지 상태값과 완료 확정 원칙 상태 7개 정의와 '결제 완료는 언제인가'를 한 번에 정리해요.

결제 테스트 시나리오 수단별 테스트 체크리스트와 라이브 전환 기준을 확인해요.

바로 참고할 문서