구독

구독 개요

회차 자동 결제와 재시도는 부트페이가 해요. 승인·해지 판단이 가맹점 몫이에요.

개념 배경

이 기능이 왜 필요한지·무엇을 먼저 정할지는 블로그에서 다뤄요.

이럴 때 필요해요

SaaS 월간/연간 요금제, 멤버십, 정기배송 등 반복 결제 서비스를 만들 때예요.

내가 할 일: 관리자(구독 상품 설계) + 백엔드(계약 승인·웹훅 동기화) + Bootpay(자동 과금·재시도)

부트페이 구독은 정기 결제 서비스의 전체 라이프사이클(계약 → 과금 → 해지)을 관리해요.

문서 구조 — 구독 기본 + 상품 4종

구독 메뉴는 구독 기본​(지금 여기)과 상품 4종​​으로 나뉘어요. 어디를 봐야 하는지부터 확인하면 탐색이 짧아져요.

메뉴 포함 언제 봐요
구독 기본 (지금 여기) 유형 선택·개념·모델 구조·용어 + 계약/가입/청구/운영 공통 API 유형과 무관한 개념을 잡거나 공통 API를 연동할 때
정기구독 · 정기배송 · 렌탈·리스 · 종량제 유형별 설정·시나리오·전용 기능 내 상품에 맞는 구독을 설계할 때

아직 유형을 못 골랐다면 유형 선택 가이드부터 봐요. 전체 라이프사이클 다이어그램은 구독 흐름 설계가 단일 소스예요.

내가 하는 것

  • 구독 상품 설계·등록
  • 구독 신청 승인/거절 판단
  • 웹훅으로 구독 상태 동기화
  • 사용자에게 구독 현황 안내

Bootpay가 알아서 하는 것

  • 자동 과금 (매 회차 결제 실행)
  • 결제 주기 관리, 실패 재시도
  • 해지·일시정지·재개 상태 관리
  • 웹훅 알림, 회차별 결제 내역 제공
구독 처음이라면?
  1. 구독 개요 (지금 이 페이지) — 상태와 전체 흐름 이해
  2. 구독 만들기 — 첫 구독 만들기
  3. 신규 승인 — 결제 시작
  4. 회차 조회 — 매달 결제 확인
  5. 회차 금액 조정 — 설치비·할인·추가 요금 반영
  6. 해지 · 일시정지 — 구독 종료 처리

기능 범위

구독관리는 계약 → 자동 과금 → 운영(정지·해지) 의 전체 라이프사이클을 다뤄요.

플로우

  • 구독 계약 / 조회·변경 -> 신규 승인 (승인)
  • 구독 계약 / 조회·변경 -> 구독 거절 (거절)
  • 신규 승인 -> 자동 과금 / 회차 금액 조정
  • 자동 과금 / 회차 금액 조정 -> 일시정지 / 재개 (정지)
  • 일시정지 / 재개 -> 자동 과금 / 회차 금액 조정 (재개)
  • 자동 과금 / 회차 금액 조정 -> 해지·만료 (해지)
영역 포함 기능 가이드
구독 계약 계약 조회, 신규 승인, 거절, 내용 변경 계약 조회 · 신규 승인
구독 회차 회차 조회, 회차 금액 조정, 거래 목록 회차 조회 · 회차 금액 조정
고객 요청 해지, 일시정지, 재개, 수수료 계산 해지 · 일시정지
관리자 작업 관리자 일시정지, 관리자 해지 관리자 해지
요청 처리 요청 목록/상세, 승인/거절/철회 요청 목록

구독 상태 (status)

구독 응답의 status 필드예요. 자주 쓰는 값만 추렸어요 — 전체는 커머스 Enum에 있어요.

값 키 설명
0 contract_requested_completed 구독 신청 완료, 승인 대기
1 subscribing 정상 결제 진행 중
-1 free_trial 무료 체험 중
-2 temporarily_paused 결제 일시 중단 (재개 가능)
-3 paused_due_to_issue 결제 실패 등 문제로 중단
15 auto_terminated 구독 기간 자연 종료
20 manual_terminated 고객이 직접 해지
-11 admin_terminated 관리자가 해지
-12 rejected 구독 신청 거절

라이프사이클

현재 status 다음 status 누가 API
contract_requested_completed → subscribing 관리자 신규 승인
contract_requested_completed → rejected 관리자 구독 거절
subscribing → temporarily_paused 고객 일시정지
subscribing → temporarily_paused 관리자 관리자 일시정지
temporarily_paused → subscribing 고객 재개
subscribing → manual_terminated 고객 해지 요청
subscribing → admin_terminated 관리자 관리자 해지
temporarily_paused → manual_terminated 고객 해지 요청
subscribing → paused_due_to_issue 자동 회차 결제 실패 (subscription.hold_on 웹훅)
subscribing → auto_terminated 자동 기간 종료
manual_terminated · admin_terminated → subscribing 관리자 해지 복구 — 공개 API 가 없어요​. 아래 참고

구독 내용(금액, 상품)을 변경하려면 계약 내용 변경을 사용해요. 상태는 변경되지 않고 결제예정 회차부터 적용돼요.

해지 복구는 웹훅으로만 알 수 있어요

해지된 구독을 되살리는 일은 부트페이 관리자에서 처리하고, 가맹점이 부를 수 있는 API 가 없어요. 이미 subscription.terminated(또는 .admin_terminated)를 받고 자기 시스템을 해지 처리해 둔 상태라면, subscription.restored 웹훅을 받아 되살려야 해요. 어떤 회차가 되살아났고 다음 결제일이 언제인지는 그 웹훅 본문의 restore 블록에 담겨요 — 웹훅 처리 가이드를 봐요.

자동 과금은 어떻게 돌아가나요?

구독이 승인되면 Bootpay가 자동으로 매 회차 결제를 실행해요. 가맹점이 매번 결제 API를 호출할 필요가 없어요.

구독 승인

첫 회차가 선결제인 계약이면 Bootpay가 빌링키로 첫 결제를 실행하고, 후불이면 첫 회차 청구를 예약해요.

회차 결제일 도달

자동으로 빌링키 결제를 시도해요.

결제 성공

다음 회차를 예약하고 웹훅을 발송해요.

결제 실패

재시도 스케줄을 실행하고 웹훅을 발송해요.

가맹점은 웹훅을 받아서 서비스 접근을 제어하면 돼요:

웹훅 이벤트 가맹점이 할 일
subscription.approved service_active = true (서비스 ON)
subscription.renewed 서비스 기간 연장, 다음 결제일 갱신
subscription.paused 서비스 일시 제한 (고객이 스스로 멈춘 상태예요)
subscription.hold_on 결제 실패로 자동 중단 — 결제수단 변경을 안내해요
subscription.terminated · .admin_terminated service_active = false (서비스 OFF)
subscription.restored 관리자가 해지를 되돌림 — 서비스 다시 ON
알려진 문제 — renewed 웹훅은 오지 않고, 고객 해지·일시정지도 웹훅이 없어요

지금 subscription.renewed 는 발송되지 않아요. 회차 결제 결과는 회차 조회의 회차 status 와 계약의 payment_next_at 으로 확인해요. subscription.terminated 는 결제 실패 반복으로 자동 해지될 때만 나가고, subscription.paused 는 관리자 일시정지 때만 나가요. 고객이 요청한 해지·일시정지는 계약 상세의 status 로 확인해요.

`paused` 와 `hold_on` 을 같이 다루면 안 돼요

paused 는 고객이 스스로 멈춘 것이고, hold_on 은 회차 결제가 실패해 서버가 멈춘 것​​이에요. 결제수단 변경 안내는 hold_on 에만 붙여야 해요. paused 에 붙이면 정상적으로 쉬고 있는 고객에게 오안내가 나가요.

자동 과금의 상세 흐름, 결제 실패 대응 패턴, 유예 기간 설계는 구독 흐름 설계를 참고해요.

구독 회차 (status)

구독이 활성화되면 설정된 주기에 따라 자동으로 결제 회차가 생성돼요.

회차 응답의 status 필드예요. 자주 쓰는 값만 추렸어요 — 전체는 커머스 Enum에 있어요.

값 키 설명
2 bill_ready 결제 예정
1 bill_completed 결제 완료
-1 bill_failed 결제 실패
5 bill_pending 결제 지연
6 bill_failure_delayed 실패 후 재시도 대기
10 bill_cancelled 관리자 취소
20 bill_terminated 해지로 취소

고객 변경 요청

고객이 구독 변경을 요청하면 템플릿 설정에 따라 자동 승인되거나 관리자 승인 후 처리돼요. 재개 요청은 항상 즉시 처리돼요.

요청 유형 (request_type)

값 키 설명
11 request_pause 일시정지 요청
12 request_resume 재개 요청
21 request_transfer 이전(승계) 요청
31 request_purchase 중도 인수 요청
41 request_termination 중도 해지 요청
51 request_migrate_plan 플랜 변경 요청

요청 상태 (request_status)

값 키 설명
0 request_requested 요청됨, 관리자 승인 대기
1 request_approved 관리자 승인 완료
2 request_approved_auto 자동 승인 완료
-1 request_rejected 관리자 거절
-2 request_withdrawn 고객이 요청 철회

다음 문서