RevGlance문서

Google Play

Play Console 리포트와 Play Developer API를 읽는 서비스 계정으로 Google Play를 연결합니다.

RevGlance는 Play Console의 Cloud Storage 버킷에 있는 월별 sales 및 earnings 리포트를 읽고, Play Developer API에 청구 기간과 환불, 그리고 실시간 알림이 있으면 체험판과 해지 정보를 요청합니다.

연결

  1. Google Cloud의 프로젝트에서 service account를 만들고 JSON 키를 추가해 다운로드합니다. 프로젝트에서 Google Play Android Developer API를 켭니다.
  2. Play Console에서 Users and permissions를 열고 서비스 계정의 이메일을 초대한 뒤 앱에 대해 View financial data 권한을 줍니다.
  3. Download reports › Financial에서 리포트 버킷을 복사합니다. Cloud Storage URI의 pubsite_prod_rev_… 부분입니다.
  4. 버킷, 앱의 패키지 이름(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에 실시간 상태를 요청합니다.

  1. RevGlance에서 설정 › 소스를 열고 Google Play 소스의 메뉴를 연 다음 Webhook을 선택합니다. 길고 임의적인 시크릿을 서명 시크릿에 저장합니다.
  2. Google Cloud에서 Pub/Sub 주제를 만들고, Play Console의 Monetization setup 페이지 안내에 따라 Google Play가 그 주제에 게시할 수 있도록 허용합니다.
  3. 주제에 push 구독을 추가합니다. 엔드포인트는 끝에 ?token=과 시크릿을 붙인 Webhook URL입니다.
  4. 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으로 유지됩니다.