테마
Epic Spec: E-06 PG사 이관 (토스페이먼츠)
메타
| 항목 | 값 |
|---|---|
| Epic ID | E-06 |
| Sprint | S52 |
| 상태 | approved |
| PO 승인일 | 2026-01-20 |
| 담당 | 창훈 (수석) |
1. WHY: 왜 이 기능이 필요한가?
문제 정의
현재 결제 시스템은 PortOne(구 아임포트) + 이니시스 조합을 사용 중이다. 정기결제 시 ActiveX 설치가 필요하고, UX가 매우 불편하다.
[현재 문제]
1. ActiveX 설치 필요 → 2026년에 용납 불가
2. 정기결제 UX 불편 → 이탈 요인
3. PG사 커뮤니케이션 원활하지 않음 → 이슈 대응 지연
4. 모바일 결제 경험 저하 → 전환율 하락현재 결제 UX 플로우 (AS-IS)
[PC 웹에서 결제 시도]
↓
[요금제 선택]
↓
[ActiveX 문제로 PC 결제 불가]
↓
["모바일에서만 결제 가능합니다" 안내]
↓
[QR 코드 제공]
↓
[사용자: 모바일로 QR 스캔]
↓
[이니시스 카드등록 화면 (모바일)]
↓
[결제 완료 화면]문제점:
- PC에서 결제 불가 (ActiveX 의존)
- QR → 모바일 전환 과정에서 이탈 발생
- UX 복잡도 높음
목표 결제 UX 플로우 (TO-BE)
[PC 또는 모바일 웹]
↓
[요금제 선택 + 쿠폰 적용]
↓
[TossPayments 결제창 (빌링키 등록)] ← SDK 연동
↓
[카드 정보 입력 + 본인인증]
↓
[결제 완료 화면]개선점:
- PC/모바일 모두 동일 플로우 (ActiveX 없음)
- 단일 플로우로 UX 단순화
- TossPayments SDK가 결제 UI 제공 → 별도 디자인 불필요
현재 vs 목표
| 항목 | Before (PortOne + 이니시스) | After (토스페이먼츠 직연동) |
|---|---|---|
| PC 결제 | ❌ ActiveX 문제 → QR 우회 | ✅ 직접 결제 가능 |
| 모바일 결제 | ✅ QR 스캔 후 결제 | ✅ 직접 결제 |
| 정기결제 UX | ActiveX 필요, 복잡 | 깔끔, 원클릭 |
| 수수료 | 낮음 | 상승 (감수) |
| 커뮤니케이션 | 원활하지 않음 | 개선 기대 |
| 연동 방식 | PortOne 래핑 | 직연동 (API) |
근거 데이터
| 지표 | 수치 | 출처 | 비고 |
|---|---|---|---|
| 결제 페이지 이탈률 | TBD | GA4 | 측정 필요 |
| ActiveX 관련 CS 문의 | TBD | 채널톡 | 측정 필요 |
| 현재 유료 유저 | 81명 | 어드민 | 이관 대상 |
| 월 MRR | ₩5,163,480 | 어드민 | - |
기대 효과
- 결제 UX 개선: ActiveX 제거, 원클릭 정기결제
- 전환율 향상: 결제 단계 이탈 감소
- 운영 효율: PG사 대응 속도 개선
- 브랜드 신뢰: 토스 브랜드 인지도 활용
2. WHAT: 상세 요구사항
핵심 기능
| # | 기능 | 설명 | 필수 여부 |
|---|---|---|---|
| 1 | 토스페이먼츠 결제 연동 | 신규 결제 API 연동 | 필수 |
| 2 | 정기결제(빌링) 연동 | 카드 등록 + 자동 결제 | 필수 |
| 3 | 기존 구독자 이관 | 현재 81명 무중단 이관 | 필수 |
| 4 | 결제 UI 개선 | 토스페이먼츠 SDK 적용 | 필수 |
| 5 | 결제 실패 처리 | 재시도, 알림, 유예 기간 | 필수 |
| 6 | 어드민 결제 관리 | 결제 현황, 환불 처리 | 필수 |
비즈니스 로직
로직 1: 결제 플로우 (신규 가입)
[신규 구독 결제 플로우]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 요금제 선택
└─ PRO10: ₩110,000/월 (현재 단일 요금제)
2. 결제 수단 등록
├─ 토스페이먼츠 SDK 호출
├─ 카드 정보 입력 (토스 UI)
└─ 빌링키 발급 (billingKey)
3. 첫 결제 실행
├─ 빌링키로 즉시 결제
├─ 결제 성공 → 구독 활성화
└─ 결제 실패 → 재시도 안내
4. 정기결제 스케줄 등록
└─ 매월 가입일 기준 자동 결제
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[토스페이먼츠 API 흐름]
Frontend Backend TossPayments
│ │ │
│ 1. 결제 요청 │ │
│ ─────────────────────→ │ │
│ │ 2. 결제 준비 (orderId) │
│ │ ────────────────────────→ │
│ │ │
│ 3. SDK 호출 (clientKey) │ │
│ ←───────────────────── │ │
│ │ │
│ 4. 카드 정보 입력 │ │
│ ──────────────────────────────────────────────────→ │
│ │ │
│ 5. 인증 완료 (paymentKey) │
│ ←────────────────────────────────────────────────── │
│ │ │
│ 6. 결제 승인 요청 │ │
│ ─────────────────────→ │ 7. 결제 승인 │
│ │ ────────────────────────→ │
│ │ │
│ │ 8. 승인 결과 │
│ │ ←──────────────────────── │
│ 9. 결제 완료 │ │
│ ←───────────────────── │ │로직 2: 정기결제 (빌링)
[정기결제 로직]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[빌링키 발급]
1. 토스페이먼츠 카드 등록 UI 호출
2. 사용자 카드 정보 입력
3. 빌링키 발급 (billingKey)
4. DB에 빌링키 암호화 저장
[자동 결제 실행]
매일 배치 작업:
1. 오늘 결제 예정 구독 조회
WHERE next_payment_date = TODAY
2. 각 구독에 대해 결제 실행
POST /v1/billing/{billingKey}
{
"amount": 110000,
"orderId": "ORDER_20260120_xxxxx",
"orderName": "장사왕 PRO10 (2월)"
}
3. 결제 결과 처리
├─ 성공 → 다음 결제일 업데이트 (+1개월)
├─ 실패 → 재시도 로직 실행
└─ 카드 만료 → 카드 갱신 요청
[결제 재시도 정책]
Day 0: 첫 시도 실패 → 즉시 알림 (카카오톡/이메일)
Day 1: 2차 시도
Day 2: 3차 시도
Day 3: 4차 시도 (최종)
Day 3+: 서비스 비활성화로직 3: 기존 구독자 이관
[이관 전략]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
대상: 현재 유료 구독 중인 81명
[방법 1: 자연 이관 (권장)]
────────────────────────────────
• 신규 결제 → 토스페이먼츠
• 기존 구독 → 만료 시점까지 PortOne 유지
• 갱신 시점에 토스페이먼츠로 재등록 유도
장점: 무중단, 안전
단점: 이관 기간 길어짐 (최대 1개월)
[방법 2: 일괄 이관]
────────────────────────────────
• 특정 일자에 모든 구독자에게 카드 재등록 요청
• 재등록 완료 시 토스페이먼츠로 전환
• 미등록 시 PortOne으로 결제 유지 (Fallback)
장점: 빠른 이관
단점: 사용자 액션 필요, 이탈 리스크
[방법 3: 하이브리드 (추천)]
────────────────────────────────
1. 신규 가입 → 토스페이먼츠 (즉시)
2. 기존 구독 → 다음 갱신일에 카드 재등록 유도
3. 재등록 인센티브: 1개월 10% 할인 쿠폰
[이관 프로세스]
┌─────────────────────────────────────────────────────────────────┐
│ 기존 구독자 A │
│ │
│ 결제일 D-7: 카카오톡 알림 │
│ "결제 시스템이 업그레이드됩니다. │
│ 카드를 다시 등록해주시면 10% 할인 쿠폰을 드려요!" │
│ │
│ [카드 재등록하기] │
│ │
│ ├─ 재등록 완료 → 토스페이먼츠로 결제 │
│ └─ 미등록 → 기존 PortOne으로 결제 (Fallback) │
│ │
└─────────────────────────────────────────────────────────────────┘로직 4: 결제 실패 처리
[결제 실패 시나리오]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[실패 유형별 처리]
1. 잔액 부족
→ 재시도 (Day 1, 3, 7)
→ 알림: "결제가 실패했어요. 카드 잔액을 확인해주세요"
2. 카드 한도 초과
→ 재시도 (Day 1, 3, 7)
→ 알림: "카드 한도를 확인해주세요"
3. 카드 만료
→ 카드 재등록 요청
→ 알림: "카드가 만료되었어요. 새 카드를 등록해주세요"
4. 카드 분실/정지
→ 카드 재등록 요청
→ 알림: "카드 상태를 확인해주세요"
5. 기타 오류
→ 재시도 후 수동 확인
[유예 기간 정책]
• 결제 실패 후 3일간 서비스 유지 (데이터 조회 가능)
• 3일간 재결제 시도 (Day 1, 2, 3)
• 3일 이후 서비스 비활성화
[알림 채널]
• 카카오톡 알림톡 (우선)
• 이메일
• 앱 푸시 (향후)로직 5: 정기결제 완료 알림
[정기결제 완료 알림톡]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 필요 이유:
- 추천인 크레딧으로 인해 매달 결제 금액이 변동될 수 있음
- 사용자가 실제 결제된 금액을 명확히 인지해야 함
- 크레딧 잔액 안내로 추천 활동 유도
[알림톡 발송 시점]
정기결제 성공 즉시
[알림톡 템플릿]
┌─────────────────────────────────────────────────────────────┐
│ [장사왕] 정기결제 완료 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 안녕하세요, #{userName}님! │
│ 이번 달 장사왕 결제가 완료되었습니다. │
│ │
│ ■ 결제 정보 │
│ • 상품: 장사왕 PRO10 (#{month}월) │
│ • 원가: 110,000원 │
│ • 크레딧 사용: -#{creditUsed}원 │
│ • 결제 금액: #{actualAmount}원 │
│ • 결제일: #{paymentDate} │
│ • 결제 수단: #{cardInfo} │
│ │
│ ■ 크레딧 잔액: #{creditBalance}원 │
│ └ 친구 추천하고 크레딧 더 받기 → │
│ │
│ 다음 결제 예정일: #{nextPaymentDate} │
│ │
│ [결제 내역 확인하기] │
│ │
└─────────────────────────────────────────────────────────────┘
[알림톡 예시 - 크레딧 사용 시]
안녕하세요, 김셀러님!
이번 달 장사왕 결제가 완료되었습니다.
■ 결제 정보
• 상품: 장사왕 PRO10 (2월)
• 원가: 110,000원
• 크레딧 사용: -7,000원
• 결제 금액: 103,000원
• 결제일: 2026-02-15
• 결제 수단: 신한카드 **** 1234
■ 크레딧 잔액: 14,000원
└ 친구 추천하고 크레딧 더 받기 →
다음 결제 예정일: 2026-03-15
[알림톡 예시 - 크레딧 전액 사용 시]
안녕하세요, 박셀러님!
이번 달 장사왕 결제가 완료되었습니다.
■ 결제 정보
• 상품: 장사왕 PRO10 (2월)
• 원가: 110,000원
• 크레딧 사용: -110,000원
• 결제 금액: 0원 (전액 크레딧)
• 결제일: 2026-02-15
■ 크레딧 잔액: 5,000원
└ 친구 추천하고 크레딧 더 받기 →
다음 결제 예정일: 2026-03-15
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[알림톡 템플릿 변수]
• #{userName}: 사용자 이름
• #{month}: 결제 월
• #{creditUsed}: 이번 결제에 사용된 크레딧
• #{actualAmount}: 실제 결제 금액 (원가 - 크레딧)
• #{paymentDate}: 결제일
• #{cardInfo}: 결제 카드 정보 (마스킹)
• #{creditBalance}: 남은 크레딧 잔액
• #{nextPaymentDate}: 다음 결제 예정일로직 6: 요금제 변경 (Upgrade/Downgrade)
[요금제 체계]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Grade | 요금제 | 최대 몰 연동 | 월 요금 |
|-------|--------|-------------|---------|
| 0 | Trial | 5 | ₩0 |
| 1 | Free | 0 | ₩0 |
| 150 | BASIC | 1 | ₩20,000 |
| 1100 | PRO 3 | 3 | ₩40,000 |
| 1200 | PRO 10 | 20 | ₩100,000 |
| 1250 | PRO 20 | 40 | ₩200,000 |
| 1300 | PRO 30 | 60 | ₩300,000 |
※ Grade가 높을수록 상위 요금제
※ 월 요금 = 기본요금 + (계정당 단가 × 연동 가능 계정 수)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Upgrade 정책]
────────────────────────────────────────────────────────────────
• 즉시 차액 결제 (일할 계산)
• 상위 요금제 혜택 즉시 적용
[계산 방식]
남은 일수 = 다음 결제일 - 오늘
일할 차액 = (신규 요금 - 기존 요금) × (남은 일수 / 30)
[예시: PRO 3 → PRO 10]
• 기존: PRO 3 (₩40,000/월)
• 신규: PRO 10 (₩100,000/월)
• 남은 일수: 15일
• 차액: (100,000 - 40,000) × (15/30) = ₩30,000
• → 즉시 ₩30,000 결제 후 PRO 10 적용
[플로우]
1. 요금제 변경 요청 (PRO 3 → PRO 10)
2. 차액 계산 및 안내 (₩30,000)
3. [차액 결제하기] 클릭
4. 결제 완료 → 즉시 PRO 10 적용
5. 다음 정기결제일에 PRO 10 요금 (₩100,000) 결제
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Downgrade 정책]
────────────────────────────────────────────────────────────────
• 다음 결제일에 적용
• 현재 결제 기간까지 기존 요금제 혜택 유지
• ⚠️ 연동 몰 수 제한 체크 필수
[핵심 제약: 연동 몰 수 체크]
하위 요금제의 최대 연동 가능 몰 수보다
현재 연동 중인 몰이 많으면 Downgrade 불가
[예시: PRO 10 → PRO 3]
• 현재: PRO 10 (최대 20개 연동), 5개 몰 연동 중
• 목표: PRO 3 (최대 3개 연동)
• 문제: 5개 > 3개 (초과)
• → 2개 몰 연동 해제 필요
[플로우]
1. 요금제 변경 요청 (PRO 10 → PRO 3)
2. 연동 몰 수 체크
├─ 초과 시 → 해제 필요 안내
│ "PRO 3는 최대 3개 몰만 연동할 수 있어요.
│ 현재 5개 연동 중이에요. 2개를 먼저 해제해주세요."
│ [몰 연동 관리로 이동]
│
└─ 통과 시 → 변경 예약
"다음 결제일(2/15)부터 PRO 3로 변경돼요.
그때까지 PRO 10 혜택을 계속 이용하세요."
[변경 예약하기]
3. 변경 예약 완료
4. 다음 결제일에 PRO 3 요금 (₩40,000) 결제
5. PRO 3 적용
[몰 연동 해제 플로우]
1. 마이페이지 → 몰 연동 관리
2. 해제할 몰 선택
3. 경고: "이 몰의 데이터는 더 이상 수집되지 않아요"
4. [연동 해제] 확인
5. 연동 해제 완료
6. 요금제 변경 페이지로 복귀
7. 다시 Downgrade 시도 (연동 몰 수 통과)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[요금제 변경 제한 케이스]
────────────────────────────────────────────────────────────────
| 케이스 | 처리 |
|--------|------|
| Trial → 유료 | 정상 (첫결제 쿠폰 적용 가능) |
| Free → 유료 | 정상 |
| 유료 → Free | Downgrade 정책 적용 (연동 몰 전체 해제 필요) |
| 결제 실패 중 변경 | ❌ 불가 - 결제 정상화 후 변경 가능 |
| 해지 예약 중 변경 | 해지 예약 취소 후 변경 가능 |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━사용자 시나리오
시나리오 1: 신규 가입 결제
1. 셀러가 결제 페이지 진입
2. PRO10 요금제 ₩110,000/월 확인
3. [결제하기] 클릭
4. 토스페이먼츠 결제창 오픈 (깔끔한 UI)
5. 카드 정보 입력 (또는 간편결제)
6. 결제 완료
7. "구독이 시작되었습니다!" 안내
8. 서비스 즉시 이용 가능
---
시나리오 2: 기존 구독자 이관
1. 김셀러 (기존 PortOne 결제)
2. 결제일 D-7에 카카오톡 수신
"결제 시스템 업그레이드! 카드 재등록 시 10% 할인"
3. [카드 재등록하기] 클릭
4. 토스페이먼츠 카드 등록
5. "다음 결제부터 새 카드로 결제됩니다"
6. 10% 할인 쿠폰 자동 적용
---
시나리오 3: 결제 실패 → 복구
1. 박셀러 정기결제 실패 (잔액 부족)
2. 즉시 카카오톡 알림
"결제가 실패했어요. 7일 내 해결해주세요"
3. Day 1: 자동 재시도 → 실패
4. Day 3: 자동 재시도 → 성공
5. "결제가 완료되었습니다" 알림
---
시나리오 4: 요금제 Upgrade (PRO 3 → PRO 10)
1. 이셀러 PRO 3 사용 중 (3개 몰 연동)
2. 마이페이지 → 요금제 변경
3. PRO 10 선택
4. 차액 안내: "₩30,000 (남은 15일분)"
5. [차액 결제하기] 클릭
6. 결제 완료
7. "PRO 10으로 업그레이드됐어요! 이제 20개 몰까지 연동할 수 있어요"
8. 즉시 PRO 10 혜택 적용
---
시나리오 5: 요금제 Downgrade (PRO 10 → PRO 3, 연동 초과)
1. 최셀러 PRO 10 사용 중 (5개 몰 연동)
2. 마이페이지 → 요금제 변경
3. PRO 3 선택
4. 경고: "PRO 3는 최대 3개 몰만 연동할 수 있어요.
현재 5개 연동 중이에요. 2개를 먼저 해제해주세요."
5. [몰 연동 관리로 이동] 클릭
6. 2개 몰 연동 해제
7. 다시 요금제 변경 → PRO 3 선택
8. "다음 결제일(2/15)부터 PRO 3로 변경돼요"
9. [변경 예약하기] 클릭
10. 변경 예약 완료
---
시나리오 6: 요금제 Downgrade (PRO 10 → PRO 3, 연동 미초과)
1. 한셀러 PRO 10 사용 중 (2개 몰 연동)
2. 마이페이지 → 요금제 변경
3. PRO 3 선택
4. 연동 체크 통과 (2개 < 3개)
5. "다음 결제일(2/15)부터 PRO 3로 변경돼요.
그때까지 PRO 10 혜택을 계속 이용하세요."
6. [변경 예약하기] 클릭
7. 변경 예약 완료3. HOW: 플로우 & 화면
결제 페이지 UI
[토스페이먼츠 결제창 - SDK 제공]
┌───────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 💳 결제하기 │ │
│ │ │ │
│ │ 장사왕 PRO10 ₩110,000 │ │
│ │ │ │
│ │ ───────────────────────────────────────────────────── │ │
│ │ │ │
│ │ 결제 수단 선택 │ │
│ │ │ │
│ │ ○ 카드 결제 │ │
│ │ ○ 토스페이 │ │
│ │ ○ 카카오페이 │ │
│ │ ○ 네이버페이 │ │
│ │ │ │
│ │ ───────────────────────────────────────────────────── │ │
│ │ │ │
│ │ 카드 번호 │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 0000 - 0000 - 0000 - 0000 │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 유효기간 CVC │ │
│ │ ┌───────────┐ ┌───────────┐ │ │
│ │ │ MM / YY │ │ 000 │ │ │
│ │ └───────────┘ └───────────┘ │ │
│ │ │ │
│ │ [₩110,000 결제하기] │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ powered by toss payments │
│ │
└───────────────────────────────────────────────────────────────┘
※ 요금제 선택 페이지는 현재 PRO10 단일 요금제이므로 별도 선택 UI 없음결제 관리 (마이페이지)
[마이페이지 - 구독 관리]
┌───────────────────────────────────────────────────────────────┐
│ 📋 구독 정보 │
├───────────────────────────────────────────────────────────────┤
│ │
│ 현재 플랜: PRO10 │
│ 결제 금액: ₩110,000/월 │
│ 다음 결제일: 2026-02-20 │
│ │
│ ───────────────────────────────────────────────────────── │
│ │
│ 💳 결제 수단 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 신한카드 **** 1234 [변경] │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ───────────────────────────────────────────────────────── │
│ │
│ 📜 결제 내역 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 2026-01-20 PRO10 (1월) ₩110,000 ✅ 완료 │ │
│ │ 2025-12-20 PRO10 (12월) ₩110,000 ✅ 완료 │ │
│ │ 2025-11-20 PRO10 (11월) ₩110,000 ✅ 완료 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ [플랜 변경] [구독 해지] │
│ │
└───────────────────────────────────────────────────────────────┘결제 내역 조회 (병행 운영)
┌─────────────────────────────────────────────────────────────┐
│ 기존 회원 (PG 이관 전 결제 이력 있음) │
├─────────────────────────────────────────────────────────────┤
│ 결제 내역 조회 시: │
│ 1. PortOne(이니시스) 결제 이력 조회 │
│ 2. TossPayments 결제 이력 조회 │
│ 3. 두 결과 병합하여 표시 (최신순) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 신규 회원 (TossPayments only) │
├─────────────────────────────────────────────────────────────┤
│ 결제 내역 조회 시: │
│ TossPayments 결제 이력만 조회 │
└─────────────────────────────────────────────────────────────┘조회 위치:
- 마이페이지 → 결제 내역
- 어드민 → 회원 관리 → 해당 회원 결제 내역
신규 화면: 없음 (기존 UI에 데이터 소스만 병합)
어드민 결제 관리
[어드민 - 결제 현황]
┌───────────────────────────────────────────────────────────────┐
│ 💰 결제 현황 [이번 달 ▼] │
├───────────────────────────────────────────────────────────────┤
│ │
│ MRR: ₩5,163,480 유료: 81명 이탈: 3명 │
│ │
│ ───────────────────────────────────────────────────────── │
│ │
│ [전체] [결제 예정] [결제 실패] [해지 예정] │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🔴 김셀러 결제 실패 (D+3) ₩110,000 │ │
│ │ 실패 사유: 잔액 부족 │ │
│ │ [수동 재시도] [연락하기] │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ 🟡 박셀러 해지 예정 (D-5) ₩110,000 │ │
│ │ 해지 사유: - │ │
│ │ [연락하기] [해지 취소] │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ 🟢 이셀러 결제 완료 ₩110,000 │ │
│ │ 2026-01-20 결제 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└───────────────────────────────────────────────────────────────┘디자인 요청사항
| 항목 | 내용 |
|---|---|
| 톤앤매너 | 신뢰감, 깔끔함 (토스 스타일 참고) |
| 컬러 | 토스 블루 활용, 성공=초록, 실패=빨강 |
| 결제창 | 토스페이먼츠 SDK 기본 UI 사용 |
| 참고 | 토스, 당근마켓, 리멤버 결제 플로우 |
3.5 디자인 필요 화면
PRD_결제페이지개발범위_20260126.md 기준
P1 (권장) - 2일
| # | 화면명 | 주요 구성 요소 | 예상 공수 |
|---|---|---|---|
| 1 | 몰연동 유도 팝업 | • 혜택 안내 (크레딧 3,500원, 쿠폰 100원) • [지금 연동하기] / [나중에] 버튼 | 1일 |
| 2 | 결제 유도 팝업 | • 쿠폰 발급 완료 안내 • [결제하러 가기] / [나중에] 버튼 | 1일 |
P2 (선택) - 3일
| # | 화면명 | 주요 구성 요소 | 예상 공수 |
|---|---|---|---|
| 10 | 토스 전환 유도 팝업 | • 시스템 변경 안내 • 새로운 혜택 소개 (쿠폰, 크레딧) • [지금 재등록하기] / [나중에] | 1일 |
| 11 | 약관 동의 & 쿠폰 발급 | • 약관 동의 체크박스 (필수/선택) • 전환 쿠폰 안내 (MIGRATE10) • [동의하고 계속하기] 버튼 | 2일 |
기존 화면 (디자인 불필요)
┌─────────────────────────────────────────────────────────────┐
│ TossPayments SDK 기본 UI 사용으로 디자인 별도 불필요 │
├─────────────────────────────────────────────────────────────┤
│ • 결제 수단 선택 │
│ • 카드 정보 입력 │
│ • 간편결제 (토스페이, 카카오페이, 네이버페이) │
│ │
│ ※ 토스페이먼츠 SDK가 일관된 결제 UX 제공 │
└─────────────────────────────────────────────────────────────┘디자인 요청 사항
┌─────────────────────────────────────────────────────────────┐
│ 디자인 요청 시 전달 필요 항목 │
├─────────────────────────────────────────────────────────────┤
│ 1. 본 에픽 스펙 (E-06-pg-migration.md) │
│ 2. PRD_결제페이지개발범위_20260126.md │
│ 3. E-07-coupon-referral.md (쿠폰/크레딧 관련) │
│ 4. 기존 화면 스크린샷 (결제 페이지, 이관 안내) │
└─────────────────────────────────────────────────────────────┘
디자인 우선순위:
• P1 화면 (#1~#2): 신규 유저 온보딩 플로우
• P2 화면 (#10~#11): 기존 유저 마이그레이션 플로우4. EDGE: 예외 & 엣지 케이스
결제 예외
| 상황 | 처리 방법 |
|---|---|
| 결제창 이탈 | 결제 미완료 처리, 재시도 가능 |
| 중복 결제 시도 | idempotency key로 중복 방지 |
| 부분 환불 요청 | 일할 계산 환불 지원 |
| 카드사 점검 | 다른 결제 수단 안내 |
이관 예외
| 상황 | 처리 방법 |
|---|---|
| 이관 거부 | 기존 PortOne 유지 (Fallback) |
| 카드 재등록 실패 | 다른 카드 시도 안내 |
| 양쪽 PG 동시 결제 | idempotency로 방지, 중복 시 자동 환불 |
시스템 예외
| 상황 | 처리 방법 |
|---|---|
| 토스페이먼츠 장애 | PortOne Fallback (이관 완료 전) |
| 웹훅 수신 실패 | 폴링으로 결제 상태 확인 |
| DB 장애 | 결제 완료 후 트랜잭션 롤백 → 환불 처리 |
5. 성공 지표
5.1 지표 체계 개요
┌─────────────────────────────────────────────────────────────┐
│ E-06 PG 이관 지표 체계 │
├─────────────────────────────────────────────────────────────┤
│ [Sprint 내 판단] │
│ Primary: 결제 성공률 ≥ 95% AND 결제 페이지 이탈률 -20% │
│ Secondary: 기존 구독자 이관율 ≥ 80% │
├─────────────────────────────────────────────────────────────┤
│ [Sprint 이후 확인] │
│ Lagging: 결제 관련 CS 문의 -50% │
│ Ultimate: 이관 완료율 100% (PortOne 완전 종료) │
├─────────────────────────────────────────────────────────────┤
│ [Guard Rails] │
│ • 결제 성공률 90% 이하 시 롤백 검토 │
│ • 웹훅 수신 성공률 99% 이상 유지 │
│ • 이중 결제 0건 유지 │
└─────────────────────────────────────────────────────────────┘5.2 Sprint 내 판단 지표
| 계층 | 지표 | 산식 | 목표 |
|---|---|---|---|
| Primary | 결제 성공률 | 결제 성공 건 / 결제 시도 건 | ≥ 95% |
| Primary | 결제 페이지 이탈률 | (결제 시작 - 결제 완료) / 결제 시작 | -20% (기존 대비) |
| Secondary | 기존 구독자 이관율 | 토스 결제 전환 유저 / 기존 PortOne 유저 | ≥ 80% |
| Secondary | 평균 결제 소요 시간 | 결제 시작 ~ 완료 평균 | ≤ 60초 |
5.3 Sprint 이후 확인 지표
| 계층 | 지표 | 산식 | 목표 |
|---|---|---|---|
| Lagging | 결제 관련 CS 문의 | 채널톡 결제 관련 문의 건 | -50% |
| Lagging | 결제 실패 후 복구율 | 재시도 성공 건 / 결제 실패 건 | ≥ 70% |
| Ultimate | 이관 완료율 | 토스 결제 유저 / 전체 유료 유저 | 100% |
5.4 Guard Rails (위반 시 롤백 검토)
- 결제 성공률 90% 이하 시 즉시 롤백 검토
- 웹훅 수신 성공률 99% 미만 시 폴링 모드 전환
- 이중 결제 1건 이상 발생 시 긴급 대응
- 결제 실패 10건/일 초과 시 원인 분석
- 결제 소요 시간 120초 초과 시 UX 점검
5.5 성공 판단 기준
[Sprint 종료 시점]
✅ 성공: 결제 성공률 ≥ 95% AND 결제 이탈률 -20%
⚠️ 부분 성공: 성공률 90~95% OR 이탈률 개선 미미
❌ 실패: 성공률 < 90% OR Guard Rails 위반
[Sprint +4주 후]
✅ 가설 검증: 기존 구독자 이관율 ≥ 80%
→ "ActiveX 제거와 UX 개선이 결제 전환을 높였다"
[이관 완료 시점 (예상 +2개월)]
✅ 완전 성공: PortOne 결제 0건, 토스페이먼츠 100%5.6 모니터링 지표 (실시간)
| 지표 | 설명 | 알림 기준 |
|---|---|---|
| 결제 성공률 | 시도 대비 성공 | < 90% 시 Slack 알림 |
| 결제 실패 건수 | 일별 실패 건 | > 5건/일 시 알림 |
| 평균 결제 소요 시간 | 시작~완료 | > 60초 시 점검 |
| 웹훅 수신 성공률 | 토스→서버 | < 99% 시 알림 |
| 정기결제 성공률 | 빌링 결제 성공 | < 95% 시 알림 |
| 이중 결제 건수 | 중복 결제 발생 | > 0건 시 즉시 알림 |
6. 이벤트 트래킹 명세
6.1 이벤트 목록
| 이벤트명 | 트리거 시점 | 우선순위 |
|---|---|---|
view_payment_page | 결제 페이지 진입 | P0 |
start_payment | 결제 시작 (SDK 호출) | P0 |
complete_payment | 결제 완료 | P0 |
fail_payment | 결제 실패 | P0 |
view_card_registration | 카드 재등록 페이지 진입 | P0 |
complete_card_registration | 카드 재등록 완료 | P0 |
cancel_payment | 결제 취소/이탈 | P1 |
change_payment_method | 결제 수단 변경 | P1 |
view_payment_history | 결제 내역 조회 | P2 |
6.2 핵심 이벤트 상세
view_payment_page
javascript
dataLayer.push({
event: "payment",
event_name: "view_payment_page",
params: {
plan_type: "PRO10",
plan_price: 110000,
source: "gnb", // gnb | settings | onboarding
has_coupon: "N",
coupon_discount: 0,
has_credit: "N",
credit_amount: 0,
is_new_user: "Y" // Y | N (기존 구독자 여부)
}
});start_payment
javascript
dataLayer.push({
event: "payment",
event_name: "start_payment",
params: {
plan_type: "PRO10",
plan_price: 110000,
payment_method: "card", // card | tosspay | kakaopay | naverpay
coupon_applied: "N",
coupon_code: null,
credit_applied: "N",
credit_amount: 0,
final_amount: 110000,
pg_provider: "tosspayments"
}
});complete_payment
javascript
dataLayer.push({
event: "payment",
event_name: "complete_payment",
params: {
plan_type: "PRO10",
plan_price: 110000,
payment_method: "card",
card_company: "shinhan", // 카드사 코드
final_amount: 110000,
coupon_discount: 0,
credit_used: 0,
payment_id: "PAY_20260120_xxxxx",
billing_key_issued: "Y", // 빌링키 발급 여부
pg_provider: "tosspayments",
is_migration: "N" // Y: 이관 결제, N: 신규 결제
}
});fail_payment
javascript
dataLayer.push({
event: "payment",
event_name: "fail_payment",
params: {
plan_type: "PRO10",
plan_price: 110000,
payment_method: "card",
fail_reason: "INSUFFICIENT_BALANCE", // 실패 코드
fail_message: "잔액이 부족합니다",
pg_provider: "tosspayments",
retry_count: 0
}
});view_card_registration (이관용)
javascript
dataLayer.push({
event: "payment",
event_name: "view_card_registration",
params: {
source: "migration_notice", // migration_notice | settings | email
days_before_renewal: 7, // 갱신일까지 남은 일수
has_incentive: "Y", // 10% 할인 쿠폰 적용 여부
current_pg: "portone"
}
});complete_card_registration
javascript
dataLayer.push({
event: "payment",
event_name: "complete_card_registration",
params: {
source: "migration_notice",
card_company: "shinhan",
new_pg: "tosspayments",
incentive_coupon_issued: "Y",
is_migration: "Y"
}
});6.3 측정 타이밍
| 시점 | 확인 항목 |
|---|---|
| 릴리즈 D+1 | 이벤트 수집 정상 여부, 결제 플로우 정상 동작 |
| 릴리즈 D+3 | 결제 성공률 초기값, 실패 패턴 분석 |
| 릴리즈 D+7 | Primary 지표 1차 판정, 이관 안내 발송 효과 |
| 릴리즈 D+14 | 이관율 1차 측정, Guard Rails 점검 |
| 릴리즈 D+30 | 전체 이관 현황, CS 문의 변화 |
MRR 계산 방법 (쿠폰/크레딧 적용 시)
⚠️ 중요: E-07 쿠폰/크레딧 시스템 도입 후 MRR 계산 방식
[MRR 정의]
MRR = Monthly Recurring Revenue (월간 반복 매출)
= 활성 구독자 수 × 월 구독 금액
[쿠폰/크레딧 적용 시 MRR 계산]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
방법 1: Gross MRR (총 MRR) - 권장
────────────────────────────────
• 할인 전 원가 기준으로 계산
• 쿠폰/크레딧 할인분은 별도 "할인" 항목으로 분리
예시:
• 구독자: 100명
• 월 요금: 110,000원
• Gross MRR = 100 × 110,000 = 11,000,000원
• 쿠폰 할인 총액: -500,000원
• 크레딧 사용 총액: -300,000원
• Net Revenue = 10,200,000원
방법 2: Net MRR (순 MRR)
────────────────────────────────
• 실제 결제 금액 기준
• Net MRR = Σ(각 구독자의 실제 결제액)
⚠️ 단점: 쿠폰/크레딧 사용량에 따라 MRR 변동 → 성장 추적 어려움
[권장 운영 방식]
• 대시보드: Gross MRR 표시 (성장 추적 기준)
• 재무 리포트: Net Revenue 표시 (실 수익 기준)
• 별도 지표: 쿠폰 할인율, 크레딧 사용률 모니터링
[어드민 표시 예시]
┌─────────────────────────────────────────────────────────────┐
│ MRR: ₩11,000,000 (Gross) │
│ ├─ 쿠폰 할인: -₩500,000 (4.5%) │
│ ├─ 크레딧 사용: -₩300,000 (2.7%) │
│ └─ 실 수익: ₩10,200,000 │
└─────────────────────────────────────────────────────────────┘7. 개발 범위 및 우선순위
7.1 P0 (필수, MVP)
| 항목 | 설명 | 담당 |
|---|---|---|
| 토스페이먼츠 결제 API 연동 | SDK + API 연동, 결제 승인 | BE |
| 정기결제(빌링) 연동 | 빌링키 발급, 자동 결제 스케줄러 | BE |
| 결제 UI | 토스페이먼츠 SDK 결제창 적용 | FE |
| 결제 웹훅 처리 | 결제 완료/실패 웹훅 수신 | BE |
| 결제 실패 재시도 로직 | Day 1, 3, 7 재시도 + 알림 | BE |
| 빌링키 암호화 저장 | AES-256 암호화 | BE |
7.2 P1 (중요)
| 항목 | 설명 | 담당 |
|---|---|---|
| 기존 구독자 이관 로직 | 카드 재등록 + Fallback 처리 | BE |
| 이관 안내 알림톡 | 카카오 알림톡 템플릿 + 발송 | BE |
| 정기결제 완료 알림톡 | 결제 금액/크레딧 안내 | BE |
| 결제 내역 병합 조회 | PortOne + 토스 내역 통합 | BE + FE |
| 마이페이지 결제 관리 | 카드 변경, 결제 내역 조회 | FE |
| 이벤트 트래킹 | GA4 결제 이벤트 전송 | FE |
7.3 P2 (선택)
| 항목 | 설명 | 담당 |
|---|---|---|
| 어드민 결제 관리 UI | 결제 현황 대시보드, 수동 처리 | FE |
| 간편결제 지원 | 토스페이, 카카오페이, 네이버페이 | FE + BE |
| 결제 영수증 발급 | PDF 영수증 생성 | BE |
| 환불 자동화 | 일할 계산 자동 환불 | BE |
8. 의존성 & 제약
기술 의존성
| 의존 항목 | 상태 | 비고 |
|---|---|---|
| 토스페이먼츠 계약 | ⏳ 확인 필요 | 계약 완료 여부 |
| 토스페이먼츠 API Key | ⏳ 발급 필요 | clientKey, secretKey |
| 빌링키 암호화 | ⏳ 설계 필요 | AES-256 등 |
| 결제 웹훅 엔드포인트 | ⏳ 개발 필요 | /webhook/payment |
제약 조건
- 병행 운영: 이관 완료까지 PortOne + 토스페이먼츠 병행
- 데이터 이관: 결제 내역 마이그레이션 필요
- 환불 정책: 기존 정책 유지
- PCI-DSS: 카드 정보 직접 저장 안 함 (토스 처리)
확인 필요 사항
| 항목 | 담당 | 상태 |
|---|---|---|
| 토스페이먼츠 계약 상태 | 창훈 수석 | ⏳ 확인 필요 |
| 수수료율 확정 | 창훈 수석 | ⏳ 확인 필요 |
| 기존 결제 데이터 마이그레이션 | 창훈 수석 | ⏳ 설계 필요 |
| 알림톡 템플릿 승인 (이관 안내) | 이삭 | ⏳ 신청 필요 |
| 알림톡 템플릿 승인 (정기결제 완료) | 이삭 | ⏳ 신청 필요 |
9. 스토리 목록 (예정)
Epic Spec 승인 후 분해
| Story ID | 제목 | 규모 | 우선순위 | 담당 | 상태 |
|---|---|---|---|---|---|
| E-06-S-01 | 토스페이먼츠 결제 API 연동 + 빌링키 암호화 | L | P0 | BE | draft |
| E-06-S-02 | 정기결제(빌링) 연동 + 스케줄러 | L | P0 | BE | draft |
| E-06-S-03 | 결제 UI 개발 (SDK 적용) | M | P0 | FE | draft |
| E-06-S-04 | 결제 웹훅 처리 | M | P0 | BE | draft |
| E-06-S-05 | 결제 실패 재시도 로직 (Day 1,3,7) | M | P0 | BE | draft |
| E-06-S-06 | 기존 구독자 이관 로직 + Fallback 처리 | L | P1 | BE | draft |
| E-06-S-07 | 이관 안내 알림톡 (카카오) | S | P1 | BE | draft |
| E-06-S-08 | 정기결제 완료 알림톡 | S | P1 | BE | draft |
| E-06-S-09 | 결제 내역 병합 조회 (PortOne + Toss) | M | P1 | BE+FE | draft |
| E-06-S-10 | 마이페이지 결제 관리 UI (카드 변경, 내역) | M | P1 | FE | draft |
| E-06-S-11 | GA4 이벤트 트래킹 (10개 이벤트) | S | P1 | FE | draft |
| E-06-S-12 | 어드민 결제 관리 UI | M | P2 | FE | draft |
Story Point 추정
| 규모 | Story | 합계 |
|---|---|---|
| L (3pt) | S-01, S-02, S-06 | 9 |
| M (2pt) | S-03, S-04, S-05, S-09, S-10, S-12 | 12 |
| S (1pt) | S-07, S-08, S-11 | 3 |
| 총합 | 24 SP |
의존성 그래프
[BE] E-06-S-01 결제 API
│
┌────┴────┬──────────────┐
▼ ▼ ▼
[BE] S-02 [BE] S-04 [FE] S-03
빌링 연동 웹훅 처리 결제 UI
│ │ │
▼ ▼ │
[BE] S-05 [BE] S-06 │
재시도 이관 로직 │
│ │ │
│ ┌────┴────┐ │
│ ▼ ▼ │
│ [BE] S-07 [BE] S-08 │
│ 이관알림 완료알림 │
│ │
└────────┬───────────────┘
▼
[BE+FE] S-09 결제내역 병합
│
┌────┴────┐
▼ ▼
[FE] S-10 [FE] S-11
마이페이지 이벤트트래킹10. QA 체크리스트
기능 테스트
신규 결제 플로우
- [ ] 결제 페이지 정상 진입
- [ ] 토스페이먼츠 SDK 결제창 오픈
- [ ] 카드 정보 입력 정상 동작
- [ ] 결제 승인 성공 → 구독 활성화
- [ ] 결제 완료 화면 표시
- [ ] 빌링키 정상 발급 및 암호화 저장
정기결제 (빌링)
- [ ] 결제 예정일에 자동 결제 실행
- [ ] 결제 성공 시 다음 결제일 업데이트 (+1개월)
- [ ] 결제 실패 시 재시도 로직 실행 (Day 1, 3, 7)
- [ ] 결제 실패 알림톡 발송
- [ ] 카드 만료 시 재등록 요청 알림
결제 완료 알림톡
- [ ] 정기결제 성공 시 알림톡 발송
- [ ] 원가, 크레딧 사용, 실결제 금액 정확히 표시
- [ ] 크레딧 잔액 표시
- [ ] 다음 결제 예정일 표시
- [ ] 크레딧 전액 사용 시 (0원 결제) 정상 표시
기존 구독자 이관
- [ ] 이관 안내 알림톡 발송 (D-7)
- [ ] 카드 재등록 페이지 정상 동작
- [ ] 재등록 완료 시 토스페이먼츠로 전환
- [ ] 미등록 시 PortOne Fallback 정상 동작
- [ ] 이관 인센티브 쿠폰 자동 적용
결제 관리 (마이페이지)
- [ ] 현재 구독 정보 표시
- [ ] 결제 수단 변경 기능
- [ ] 결제 내역 조회 (PortOne + 토스 병합)
- [ ] 구독 해지 기능
요금제 변경 (Upgrade/Downgrade)
- [ ] 요금제 목록 및 혜택 비교 표시
- [ ] Upgrade: 차액 계산 정확성 (일할 계산)
- [ ] Upgrade: 차액 결제 후 즉시 상위 요금제 적용
- [ ] Upgrade: 연동 가능 몰 수 증가 확인
- [ ] Downgrade: 연동 몰 수 체크 동작
- [ ] Downgrade: 초과 시 해제 필요 안내 표시
- [ ] Downgrade: 몰 연동 관리 페이지 이동
- [ ] Downgrade: 몰 연동 해제 정상 동작
- [ ] Downgrade: 해제 후 요금제 변경 가능
- [ ] Downgrade: 다음 결제일에 변경 예약 처리
- [ ] Downgrade: 변경 예약 후 기존 요금제 혜택 유지
- [ ] 결제 실패 중 요금제 변경 차단
- [ ] 해지 예약 중 요금제 변경 차단
어드민 결제 관리
- [ ] MRR 현황 표시 (Gross MRR, 할인액, 실수익)
- [ ] 결제 예정/실패/해지 예정 목록
- [ ] 수동 재시도 기능
- [ ] 환불 처리 기능
결제 로직 테스트
- [ ] 쿠폰 할인 정상 적용
- [ ] 크레딧 차감 정상 적용
- [ ] 최종 결제 금액 = 원가 - 쿠폰 - 크레딧
- [ ] 크레딧 전액 사용 시 0원 결제 처리
- [ ] idempotency key로 중복 결제 방지
- [ ] 일할 계산 환불 정확성
결제 실패 케이스 테스트
- [ ] 잔액 부족 → 재시도 + 알림
- [ ] 카드 한도 초과 → 재시도 + 알림
- [ ] 카드 만료 → 재등록 요청 알림
- [ ] 카드 분실/정지 → 재등록 요청 알림
- [ ] 유예 기간 3일 적용 (데이터 조회 가능)
- [ ] 3일간 재결제 시도 (Day 1, 2, 3)
- [ ] 3일 이후 서비스 비활성화
이벤트 트래킹 테스트
- [ ] view_payment_page 이벤트 발생
- [ ] start_payment 이벤트 발생
- [ ] complete_payment 이벤트 발생
- [ ] fail_payment 이벤트 발생 (실패 시)
- [ ] view_card_registration 이벤트 발생 (이관)
- [ ] complete_card_registration 이벤트 발생 (이관)
- [ ] 파라미터 정확성 (금액, 결제수단, PG사 등)
- [ ] GA4 DebugView에서 확인
엣지 케이스 테스트
결제 예외
- [ ] 결제창 이탈 → 결제 미완료 처리
- [ ] 중복 결제 시도 → idempotency로 차단
- [ ] 카드사 점검 → 다른 결제 수단 안내
이관 예외
- [ ] 이관 거부 → PortOne 유지 (Fallback)
- [ ] 카드 재등록 실패 → 다른 카드 안내
- [ ] 양쪽 PG 동시 결제 방지 → 자동 환불
시스템 예외
- [ ] 토스페이먼츠 장애 → 에러 메시지 표시 (이관 완료 전 Fallback)
- [ ] 웹훅 수신 실패 → 폴링으로 상태 확인
- [ ] DB 트랜잭션 롤백 → 환불 처리
보안 테스트
- [ ] 빌링키 AES-256 암호화 저장
- [ ] 카드 정보 직접 저장 안 함 (PCI-DSS)
- [ ] 결제 API 인증 토큰 검증
- [ ] 웹훅 서명 검증
체크리스트
PO 승인 전 체크
- [x] 문제 정의가 명확한가?
- [x] 비즈니스 로직이 구체적인가? (결제 플로우, 이관 전략)
- [x] 와이어프레임/플로우가 있는가?
- [x] 엣지 케이스가 정의되었는가?
- [x] 성공 지표가 측정 가능한가?
- [ ] 기술 의존성이 확인되었는가? (계약 상태 확인 필요)
미결 사항
| 항목 | 상태 | 담당 |
|---|---|---|
| 토스페이먼츠 계약 상태 | ⏳ 확인 필요 | 창훈 |
| 수수료율 확정 | ⏳ 확인 필요 | 창훈 |
| 이관 인센티브 (10% 할인) 확정 | ⏳ PO 결정 필요 | 윤재 |
| 알림톡 템플릿 | ⏳ 신청 필요 | 이삭 |
승인
| 항목 | 확인 |
|---|---|
| PO 승인 | ☑ |
| 승인일 | 2026-01-20 |
| 비고 | 파티 모드 리뷰 완료, MRR 계산 방식 추가 |
변경 이력
| 날짜 | 변경 내용 | 담당 |
|---|---|---|
| 2026-01-20 | Epic Spec 초안 작성 | 윤재 |
| 2026-01-20 | 파티 모드 리뷰 완료, MRR 계산 방식 추가 | 윤재 |
| 2026-01-20 | PO 승인 | 윤재 |
| 2026-01-23 | Notion PRD 수준 상세화 (성공 지표 체계, 이벤트 트래킹 명세, 개발 범위 분류, QA 체크리스트) | 윤재 |
| 2026-01-26 | 디자인 필요 화면 섹션 추가 (PRD 기준) | 윤재 |
| 2026-01-27 | 요금제 변경 정책 추가 (Upgrade/Downgrade, 연동 몰 수 제약) | 윤재 |
| 2026-01-28 | 유예 기간 정책 AS-IS 반영 (7일→3일, 읽기전용 제거, 즉시 비활성화) | 윤재 |
작성일: 2026-01-20최종 수정: 2026-01-28
