본문 바로가기
Floney

[Android] 안드로이드 정기 결제 구독 토큰 변화

by 박매트 2025. 2. 9.

실제 토큰 값 로그 찍어보면서 확인한 내용을 토대로 글 작성하는 글.

 

정기 구독 서비스를 앱 내에서 신청해본 적이 별로 않아서 헷갈렸다.

그럼에도 오류가 난다면? 대표적인 구독 상용 서비스인 버블을 결제해보도록 하겠다.

 

구매 토큰 변화가 중요한 이유는 토큰 값을 기준으로 사용자의 결제 상태를 알 수 있기 때문이다.

구독 신청, 구독 취소, 재갱신 등 구독 정보가 어떻게 바뀌었는 지 구글로부터 알 수 있는 key이다.

 

현재 playStore에 로그인된 계정의 정기 결제 구매 토큰을 가져오는 것이기 때문에, 결제 당시 계정이 아니라면 오류가 날 것이다.

구매 당시 계정으로 로그인이 되어있어야 한다!

왠만해서는 구매 당시 계정으로 되어있겠지만, 지금 테스트를 여러 계정으로 돌려서 하다보니 왜 오류가 나는 지 처음에 이해가 되지 않았다.

 

📌 구매 토큰 (Purchase Token) 변화

  • 구글 플레이의 정기 결제(구독)에서는 구매 토큰을 사용하여 결제 상태를 검증.
  • 하지만 구독 취소와 구독 재개 여부에 따라 구매 토큰이 달라질 수도 있고, 유지될 수도 있음.

대략적인 순서

  • 앱에서 플레이스토어 구독을 신청하면, 구매 토큰을 구글로 부터 검증받는다.
  • 이 때 서버에서 트랜잭션 검증을 해줘야 구매가 제대로 이루어진다.
  • 서버에서 계정별로 구매 토큰을 캐싱해놓고, 그 토큰 값을 기준으로 현재 구독 내역 정보를 구글로부터 가져올 수 있다.
  • 구매 토큰 값은 구매할 시에 콜백으로 받을 수도 있고, 현재 구글 플레이스토어에 활성화된 정기 결제 내역이 있다면 해당 내역에 대한 구매 토큰 값을 가져올 수도 있다. (이 코드에 관해서는 다음에)

 


 

1️⃣  구독 취소만 한 경우 

예시: 구독 취소 하기 → 기존 구매 토큰 유지, 하지만 만료됨

2월 1일 정기 결제 시작 (구독 신청) ✅ 구매 토큰 A 생성
2월 3일 구독 취소 🔹 구매 토큰 A 유지 (만료 예정)
3월 1일 구독 만료 ❌ 구매 토큰 A 비활성화 (더 이상 유효하지 않음)

 

  • 구독을 취소해도 기존 구매 토큰은 그대로 남아 있음
  • 하지만 구독 만료 후에는 해당 구매 토큰이 더 이상 사용되지 않음 (만료됨)

 

2️⃣ 구독 취소 후, 기존 주기로 구독 재개한 경우

예시: 구독 취소 후, 구독 재개 → 구매 토큰이 유지됨

2월 1일 정기 결제 시작 (구독 신청) ✅ 구매 토큰 A 생성
2월 3일 구독 취소 🔹 구매 토큰 A 유지
2월 15일 구독 재개 🔹 구매 토큰 A 유지 (기존 구독 주기 유지됨)
3월 1일 다음 결제 진행 🔄 구매 토큰 A 유지 (갱신됨)
  • 구독을 취소했다가 다시 재개하면, 기존 구매 토큰이 유지됨
  • 원래 결제 주기(3월 1일)가 유지되므로, 새로운 구매 토큰이 생성되지 않음
  • 하지만 일부 앱에서는 정책에 따라 새 토큰을 발급할 수도 있음 (개발자가 확인 필요)

 

3️⃣ 구독 취소 후, 완전히 새롭게 구독한 경우

예시: 구독 취소 후, 나중에 다시 구독 → 새로운 구매 토큰 발급

2월 1일 정기 결제 시작 (구독 신청) ✅ 구매 토큰 A 생성
2월 3일 구독 취소 🔹 구매 토큰 A 유지 (만료 예정)
3월 1일 구독 만료 ❌ 구매 토큰 A 비활성화
3월 5일 다시 구독 신청 (새로운 결제) 새로운 구매 토큰 B 생성
 
  • 구독이 완전히 만료된 후 다시 구독하면, 새로운 구매 토큰이 발급됨
  • 따라서 개발자가 서버에서 검증할 때, 새로운 구매 토큰을 확인해야 함

 

📌 요약 : 구독 취소 & 재개 시 구매 토큰 변화

구독 취소 후 만료 기존 구매 토큰 유지 → 구독 만료 시 비활성화
구독 취소 후 재개 (같은 주기 유지) 기존 구매 토큰 유지
구독 만료 후 새롭게 다시 구독 새로운 구매 토큰 발급

 

구독이 "취소"된 경우 구매 토큰은 유지되지만, "완전히 만료"되면 새로운 토큰이 갱신된다.