본문으로 건너뛰기

구독 정책

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_date와 grace_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/
  • 현재 이용 가능한 구독 플랜 및 프로모션 정보를 반환합니다.