Google Play
Play Console 리포트와 Play Developer API를 읽는 서비스 계정으로 Google Play를 연결합니다.
RevGlance는 Play Console의 Cloud Storage 버킷에 있는 월별 sales 및 earnings 리포트를 읽고, Play Developer API에 청구 기간과 환불, 그리고 실시간 알림이 있으면 체험판과 해지 정보를 요청합니다.
연결
- Google Cloud의 프로젝트에서 service account를 만들고 JSON 키를 추가해 다운로드합니다. 프로젝트에서 Google Play Android Developer API를 켭니다.
- Play Console에서 Users and permissions를 열고 서비스 계정의 이메일을 초대한 뒤 앱에 대해 View financial data 권한을 줍니다.
- Download reports › Financial에서 리포트 버킷을 복사합니다. Cloud Storage URI의
pubsite_prod_rev_…부분입니다. - 버킷, 앱의 패키지 이름(
com.example.app), JSON 키 전체를 입력한 다음 Google Play 연결을 선택합니다. 새 초대가 리포트에 반영되기까지 최대 하루가 걸릴 수 있습니다.
양식에서 묻는 항목
| 필드 | 형식 예시 |
|---|---|
| 리포트 버킷 | pubsite_prod_rev_01234567890987654321 |
| 패키지 이름 | com.example.app |
| 서비스 계정 JSON암호화하여 저장 | { "type": "service_account", … } |
서비스 계정은 Cloud Storage(devstorage.read_only)와 Android Publisher API에 대한 읽기 전용 권한으로 로그인합니다.
Webhook 추가하기
실시간 알림이 없으면 체험판이 보이지 않고, 해지는 갱신이 3일 넘게 지연된 뒤에야 표시됩니다. 알림이 있으면 RevGlance가 각 구독의 구매 토큰을 받아 Play에 실시간 상태를 요청합니다.
- RevGlance에서 설정 › 소스를 열고 Google Play 소스의 메뉴를 연 다음 Webhook을 선택합니다. 길고 임의적인 시크릿을 서명 시크릿에 저장합니다.
- Google Cloud에서 Pub/Sub 주제를 만들고, Play Console의 Monetization setup 페이지 안내에 따라 Google Play가 그 주제에 게시할 수 있도록 허용합니다.
- 주제에 push 구독을 추가합니다. 엔드포인트는 끝에
?token=과 시크릿을 붙인 Webhook URL입니다. - Play Console에서 Monetization setup을 열고 주제를 입력한 다음 테스트 알림을 보냅니다. RevGlance는 테스트 알림과 다른 앱의 알림을 수신 확인만 하고 처리하지 않습니다.
예상할 점
- 리포트가 늦게 도착합니다. Google은 판매 후 3~7일 뒤에 리포트를 게시합니다. sales 리포트가 먼저 오고, 이후 Google이 실제로 지급한 금액이 담긴 earnings 리포트가 이를 대체합니다.
- 익명 고객. Play는 구매자 이름을 알려 주지 않습니다. 한 구독의 주문은 같은 ID 루트(
GPA.1234…)를 공유하며, 이것이 익명 고객 한 명이 됩니다. 일회성 구매에는 고객이 없습니다. - API를 통한 환불은 30일 전까지만 거슬러 올라갑니다. 그보다 오래된 환불은 earnings 리포트와 함께 도착합니다.
Google Play의 집계 방식
- Google은 리포트를 3~7일 늦게 게시합니다. 판매가 먼저 들어오고, 이후 수익 리포트가 Google 수수료를 뺀 실제 지급액으로 대체합니다. 결제는 세전으로 집계됩니다.
- 부분 환불을 포함한 모든 환불 항목이 보관됩니다. 한 주문의 부분 환불 두 건이 두 월간 리포트에 나뉘면 충돌하여 하나가 누락될 수 있습니다. Google은 리포트에서 환불이 음수인지 밝히지 않으므로 환불 금액으로 읽습니다.
- Play API를 통한 환불은 30일 전까지만 조회됩니다. 그 이전 환불은 수익 리포트와 함께 들어옵니다.
- 실시간 알림이 없으면 해지는 갱신이 3일 연체된 것으로만 표시되며, 리포트가 해당 날짜를 포함한 후에 집계됩니다.
- 테스트 구매는 제외됩니다. 보류 중인 구독은 계속 집계되며, 일시 중지된 구독은 재개될 때까지 이탈로 집계됩니다.
- MRR은 최신 주문의 세전 금액입니다. 도입 혜택은 혜택 가격으로 집계되고, 이후 정상 가격은 확장으로 표시됩니다.
- 실패한 결제는 보고되지 않으므로 해당 수치는 0으로 유지됩니다.

RevGlance