본문으로 건너뛰기

구독 정책

1. 목적

Penta 앱의 유료 구독 서비스 운영 정책을 정의합니다. 구독은 사용자에게 전체 콘텐츠 접근 권한을 부여하며, Apple App Store와 Google Play Store를 통한 인앱 결제로 처리됩니다.


2. 구독 유형 및 가격

2-1. 구독 플랜

유형코드기간
월간 구독1_month1개월
반기 구독6_month6개월
연간 구독12_month12개월

2-2. 기본 가격

국가월간 가격비고
한국9,800원/월부가세 포함
일본980엔/월소비세 포함

2-3. 기간별 할인

플랜할인율한국 실질 월 가격
6개월15%약 8,330원/월
12개월25%약 7,350원/월

3. 무료 체험 (Trial)

3-1. 정책

항목정책
체험 기간3일 (SIGNUP_TRIAL_DAYS = 3)
대상최초 가입자 (has_subscribed_before = False)
판정is_in_trial 속성: 가입 후 3일 이내이고 이전 구독 이력이 없는 경우
  • 무료 체험 기간 중에는 전체 콘텐츠에 접근 가능합니다.
  • 체험 기간이 종료되면 자동으로 비구독 상태로 전환됩니다.
  • 이전에 한 번이라도 구독한 적이 있는 사용자는 무료 체험 대상에서 제외됩니다.

4. 구독 상태 관리

4-1. 상태 종류

구독 상태는 status 속성에 의해 실시간으로 계산됩니다.

상태코드설명
활성active유효한 구독 기간 내, 정상 상태
해지cancelled자동 갱신 중지되었으나 end_date까지 이용 가능
일시정지pausedpause_until 시점까지 서비스 이용 불가
만료expiredend_date(+ 유예기간) 경과

4-2. 유효성 판단 기준

  • end_date가 구독 유효성의 기본 기준입니다.
  • 유예기간(grace_until)이 설정된 경우, end_dategrace_until 중 더 늦은 시점이 실효 종료일(effective_end)이 됩니다.
  • 일시정지(pause_until)가 현재 시각보다 미래인 경우 비활성 처리됩니다.

4-3. 주요 필드

필드타입설명
typeCharField구독 유형 (1_month / 6_month / 12_month)
start_dateDateTimeField구독 시작일
end_dateDateTimeField구독 종료일 (유효성 기준)
auto_renewBooleanField자동 갱신 여부
next_billing_dateDateTimeField다음 결제 예정일
is_cancelledBooleanField해지 여부
cancelled_atDateTimeField해지 시각
pause_untilDateTimeField일시정지 종료 시각
grace_untilDateTimeField결제 실패 유예 기간 종료 시각
cancellation_reasonCharField해지 사유 (refund, chargeback, user 등)

5. 구독 해지

5-1. 해지 처리

  • 해지 시 is_cancelled = True, auto_renew = False로 설정됩니다.
  • 해지 후에도 end_date까지 서비스 이용이 가능합니다 (즉시 중단되지 않음).
  • 자동 갱신만 중지됩니다.

5-2. 해지 시 래퍼럴 혜택 처리

  • 래퍼럴 보너스를 받은 사용자가 최소 유지 기간(referral_minimum_period_days, 기본 14일) 이전에 해지하면:
    • 래퍼럴 보너스 주수만큼 end_date가 감소됩니다.
    • referral_benefits_revoked = True로 설정됩니다.
    • 추천인의 리워드도 함께 회수됩니다.

6. 일시정지 및 유예기간

6-1. 일시정지

  • pause_until 필드로 관리됩니다.
  • 일시정지 기간 중에는 구독 상태가 paused로 표시되며, 콘텐츠 접근이 제한됩니다.

6-2. 유예기간 (Grace Period)

  • 결제 실패 등의 사유로 grace_until이 설정됩니다.
  • 유예기간 내에 결제가 재시도/완료되면 구독이 유지됩니다.
  • 유예기간이 경과하면 만료 처리됩니다.

7. 래퍼럴 보너스

7-1. 관련 필드

필드설명
has_referral_bonus래퍼럴 혜택 수령 여부
referral_bonus_weeks받은 보너스 주 수
referral_minimum_period_days최소 유지 기간 (기본 14일)
referral_benefits_revoked혜택 회수 여부

7-2. 패널티 없는 해지 조건

  • can_cancel_without_penalty 속성으로 판단합니다.
  • 래퍼럴 보너스가 없거나, 구독 시작 후 referral_minimum_period_days 이상 경과한 경우 패널티 없이 해지 가능합니다.

8. API

8-1. 구독 신청

  • Endpoint: POST /api/payments/subscribe/
  • 새로운 구독을 생성합니다.

8-2. 구독 정보 조회 / 수정

  • 조회: GET /api/payments/subscription/
  • 수정: PATCH /api/payments/subscription/
  • 현재 구독 상태, 자동 갱신 설정 등을 관리합니다.

8-3. 구독 해지

  • Endpoint: POST /api/payments/subscription/cancel/
  • 자동 갱신을 중지하고 해지 처리합니다.

8-4. 구독 이력

  • Endpoint: GET /api/payments/subscription-history/
  • 과거 구독 이력을 조회합니다.

8-5. 구독 오퍼

  • Endpoint: GET /api/payments/subscription-offers/
  • 현재 이용 가능한 구독 플랜 및 프로모션 정보를 반환합니다.