# 스토어 영수증이 곧 권한은 아니다

> Product catalog, entitlement ledger, notification·refund와 단계적 rollout

- Canonical: https://learning.reopt.ai/courses/app-store-operations/lessons/so-m3-concept
- Language: ko-KR
- HTML: https://learning.reopt.ai/courses/app-store-operations/lessons/so-m3-concept

---

[앱스토어 통합 운영](/courses/app-store-operations) 3. 구독·결제·롤아웃 운영 5 / 9

# 스토어 영수증이 곧 권한은 아니다

Product catalog, entitlement ledger, notification·refund와 단계적 rollout
개념 학습 45 XP 9분

구독 상태는 구매·갱신·grace period·billing retry·취소·환불·가격 동의로 바뀝니다. 클라이언트 한 번의 성공 응답만 신뢰하면 복원과 다기기 사용이 깨집니다. 서버가 검증된 transaction event를 멱등 처리해 entitlement ledger를 갱신해야 합니다.
금액과 권한을 각각 대사 스토어 product ID를 내부 plan과 명시적으로 매핑하고, server notification 누락·중복·순서 역전을 견딥니다. staged rollout 중에는 crash뿐 아니라 purchase success, restore, entitlement latency, refund signal을 함께 봅니다.

| 흐름 | 정합성 기준 | 이상 신호 |
| Purchase | 검증 transaction→entitlement | 결제 성공·권한 없음 |
| Renewal | event 멱등·순서 보정 | 중복 기간·조기 만료 |
| Restore | account·store 원장 재조회 | 기기별 권한 불일치 |
| Refund | 권한·금액 정책 적용 | 환불 후 지속 이용 |

- 1 Catalog 매핑 스토어 product·base plan·offer를 내부 plan과 연결합니다.

- 2 Event 원장 transaction ID와 event time으로 멱등·순서 처리를 설계합니다.

- 3 Journey 검증 신규·갱신·grace·restore·refund를 sandbox와 production canary에서 확인합니다.

- 4 Rollout 관측 기술 지표와 purchase·entitlement 지표를 확대 gate로 둡니다.

실무에 남길 기준

- 클라이언트 purchase callback과 서버 권한 부여는 분리된 상태 머신이다
- 가격 변경은 국가·통화·기존 가입자 동의와 커뮤니케이션을 포함한다
- 결제 incident에서는 고객 권한과 회계 금액을 모두 복구한다

[이전](/courses/app-store-operations/lessons/so-m2-scenario) 이해했어요 · 계속

---

에이전트용 사이트 안내: https://learning.reopt.ai/llms.txt · 사이트맵: https://learning.reopt.ai/sitemap.xml · 문의: https://learning.reopt.ai/contact
