테마
Story: 이관 인센티브 쿠폰 발급 로직
메타
| 항목 | 값 |
|---|---|
| Story ID | E-07-S-11 |
| Epic | E-07 쿠폰 & 추천인 코드 |
| 상태 | ready-for-dev |
| 우선순위 | P1 |
| 규모 | S |
| 담당 개발자 | BE |
사용자 스토리
As a 기존 PortOne 구독자,
I want TossPayments로 카드 재등록 시 인센티브를 받고 싶다,
So that 기꺼이 카드를 재등록할 수 있다.
수락 기준 (Acceptance Criteria)
AC-01: 자동 발급
| 항목 | 내용 |
|---|---|
| Given | 기존 PortOne 유저가 |
| When | TossPayments 빌링키 발급에 성공하면 |
| Then | MIGRATE10 쿠폰이 자동 발급된다 |
AC-02: 발급 조건
| 항목 | 내용 |
|---|---|
| Given | 쿠폰 발급 시 |
| When | PortOne 결제 이력이 없거나 이미 발급받았으면 |
| Then | 쿠폰이 발급되지 않는다 |
AC-03: 자동 적용
| 항목 | 내용 |
|---|---|
| Given | MIGRATE10 쿠폰 보유 시 |
| When | 첫 번째 정기결제가 실행되면 |
| Then | 10% 할인이 자동 적용된다 |
태스크 분해
Task 1: MIGRATE10 쿠폰 설정
- [ ] 1.1: 시스템 쿠폰 등록 (seed data)
code: MIGRATE10 type: PERCENT discountPercent: 10 maxDiscountAmount: 11000 (PRO10 기준) maxUsageTotal: null (무제한) maxUsagePerUser: 1 validUntil: 발급일 + 60일
Task 2: 자동 발급 로직
- [ ] 2.1: TossPayments 빌링키 발급 성공 이벤트 리스너
- [ ] 2.2: 발급 조건 검증
- PortOne 결제 이력 존재
- MIGRATE10 쿠폰 미보유
- [ ] 2.3: 쿠폰 발급 + 유효기간 설정 (60일)
Task 3: 정기결제 자동 적용
- [ ] 3.1: 정기결제 시 MIGRATE10 쿠폰 자동 적용 로직
- 보유 중 + 미사용 + 유효기간 내
- [ ] 3.2: 적용 후 쿠폰 사용 처리
개발 노트
이관 인센티브 쿠폰 스펙
| 항목 | 값 |
|---|---|
| 쿠폰 코드 | MIGRATE10 |
| 유형 | 정률 할인 (PERCENT) |
| 할인 비율 | 10% |
| 최대 할인액 | 11,000원 |
| 유저당 사용 | 1회 |
| 유효 기간 | 발급일로부터 60일 |
| 적용 시점 | 재등록 후 첫 번째 정기결제에 자동 적용 |
예시 플로우
[기존 유저 김셀러]
↓
[PortOne으로 1년간 결제 중]
↓
[이관 안내 알림 수신]
↓
[TossPayments 카드 재등록 완료]
↓
[시스템: MIGRATE10 쿠폰 자동 발급]
↓
[다음 정기결제일 (2월 15일)]
- 원가: 110,000원
- 쿠폰 할인: -11,000원 (10%)
- 최종 결제: 99,000원
↓
[그 다음달 (3월 15일)]
- 쿠폰: 없음 (이미 사용)
- 최종 결제: 110,000원FIRST100 vs MIGRATE10 차이
| 항목 | FIRST100 | MIGRATE10 |
|---|---|---|
| 대상 | 신규 유저 | 기존 이관 유저 |
| 할인 | 109,900원 정액 | 10% 정률 |
| 적용 | 수동 (첫결제) | 자동 (정기결제) |
| 트리거 | 몰연동 완료 | 빌링키 재등록 |
이벤트 로깅
| 이벤트 | 파라미터 |
|---|---|
migrate_coupon_issued | user_id, coupon_code |
migrate_coupon_used | user_id, discount_amount |
생성일: 2026-01-20
