Google Play 결제 시스템은 Android 앱에서 디지털 제품 및 콘텐츠를 판매할 수 있게 해주는 서비스이다.


소모성 consumable, 비소모성 non-consumable 상품 해당
Google Play에서 OneTimeProductNotification 메시지를 전송

새로운 expiryTime으로 정기 결제 상태를 업데이트
사용자가 정기 결제를 취소하거나 유예 기간의 최대 길이에 도달할 때까지 사용권한은 지속됨, Google Play는 유예 기간이 만료될 때까지 expiryTime 값을 동적으로 연장, Play에서는 사용자에게 결제가 거부되었음을 알리고 결제 수단을 수정하라는 메시지를 표시
결제 수단을 수정하는 즉시 정기 결제가 원래 갱신일로 갱신됨
유예 기간 중에 결제 수단을 수정하지 않으면 계정 보류 상태로 전환되고 사용자는 권한을 잃게 됨

유예 기간이 종료되면 계정 보류 기간이 시작, 사용자 정기 결제 사용 권한 없음
사용자는 정기 결제 취소, 복원, 재구매할 수 있음
Play에서 사용자에게 결제 거부 사실을 알리고 앱에서도 결제 수단을 수정하라는 메시지를 표시함
계정 보류 상태에서 정기 결제가 복구되면 갱신일이 초기화됨


사용자는 정기 결제 권한 없어짐
사용자가 정기 결제를 자발적으로 취소 또는 계정 보류 상태에서 복구하지 않음
정기 결제가 취소되더라도 현재 결제 주기가 끝날 때까지 사용권한을 가지고 있음
정기 결제를 해지하거나 구매 지불을 거절하는 등의 사유로 즉시 사용자의 사용 권한을 취소
무료 액세스 권한을 제공, 정기 결제의 다음 결제일을 미룰 수 있음
사용자의 권한 연장, 요금은 청구되지 않음, 정기 결제 갱신일은 새로운 날짜를 반영
현재 결제 기간이 종료되어야만 적용됨
일시중지된 동안 사용자 권한없고 갱신 요금을 지불하지도 않음
사용자가 정기 결제를 수동으로 재개하면 결제일이 수동 재개 날짜로 변경됨


이전 정기 결제는 무효화 , 새로운 정기 결제가 새로운 구매 토큰을 사용하여 생성
상황:
1. 기본' 및 '프리미엄' 정기 결제와 같은 여러 정기 결제 등급을 판매하는 경우
2. 사용자가 월간 요금제에서 연간 요금제로 전환하는 경우
3. 사용자가 자동 갱신 요금제와 선불 요금제 간에 전환하는 경우
대체모드:
개발자는 현재 유료 결제 기간의 일할 계산된 금액이 적용되는 방식과 사용 권한이 변경되는 시기를 결정하는 대체 모드를 지정

Google Play 스토어에 정기 결제 재신청 버튼이 표시됨
복원된 정기 결제는 취소되지 않았던 것처럼 계속 갱신됨
신규 구매와 동일

정기 결제 만료 전 - 앱 내에서
취소되었지만 아직 만료되지 않은 경우, 새 정기 결제와 동일한 인앱 상품 구매 흐름 적용
새 정기 결제는 이전 정기 결제를 대체하고 동일한 만료일에 갱신됨
정기 결제 만료 전 - Play 스토어에서
취소되었지만 아직 활성 상태인 동안 <정기 결제 재신청>을 클릭해 Google Play 정기 결제 센터에서 정기 결제를 복원
동일한 정기 결제 및 구매 토큰이 유지됨
정기 결제 만료 후 - 앱 내에서
새 정기 결제와 동일한 인앱 상품 구매 흐름 적용
정기 결제 만료 후 - Play 스토어에서
Google Play 정기 결제 센터에서 <정기 결제 재신청>을 클릭, 만료 후 최대 1년 동안 동일한 SKU의 정기 결제를 다시 신청할 수 있음
새 정기 결제 및 구매 토큰이 생성
정기 결제 재신청은 앱 외부 구매로 간주됨
참고문서: https://developer.android.com/distribute/play-billing?hl=ko

1. 유저 앱에서 구매
2. StoreKit 프레임워크는 앱을 대신하여 App Store에 연결, 결제 요청 및 처리
3. 프레임워크 앱에 알림
4. 구매 확인시 App Store 또는 기기에서 서버의 영수증을 확인
구독 그룹: 구독 제품 세트, 사용자는 그룹당 한 번에 하나의 구독 상품을 구독할 수 있음
구독 수준: 업그레이드, 다운그레이드 및 크로스그레이드를 결정하는 구독 그룹 내 구독 순위 시스템







참고문서: https://developer.apple.com/documentation/appstoreservernotifications