Reminder: By Aug 31, 2025, all new apps and updates to existing apps must use Billing Library version 7 or newer. If you need more time to update your app, you can request an extension until Nov 1, 2025. Learn about Play Billing Library version deprecation.
앱을 통해 디지털 제품을 판매할 때는 전체 사용자 환경을 고려해야 합니다. 인앱 통합을 사용하면 구매 흐름을 시작하고 사용자 환경을 관리할 수 있지만, 백엔드에서 사용자가 구매하는 사용 권한을 최신 상태로 유지하는 것이 중요합니다. 이는 구매를 추적하고 크로스 플랫폼 사용 권한과 같은 사용자 환경의 다른 여러 측면을 관리하는 데 중요합니다.
구매 수명 주기 이벤트를 모니터링하고 사용자 사용 권한 변경에 신속하게 대응하려면 백엔드에서 정기 결제와 일회성 구매를 위한 구매 상태 관리 시스템을 빌드해야 합니다. 이 시스템은 기기 상태에 관계없이 빠르고 안전한 구매 처리를 보장하고, 모든 플랫폼에서 일관된 사용자 사용 권한을 유지하며, 백엔드에서 구매 내역 및 사용 권한 데이터를 확인할 수 있는 기능을 제공합니다.
Google Play는 구매 수명 주기 이벤트 모니터링을 위한 실시간 개발자 알림(RTDN)을 제공하며, Play Developer Subscriptions and In-App
Purchases API를 사용하여 이러한 이벤트를 기반으로 필요한 조치를 취할 수 있습니다. 이러한 도구를 사용하고 강력한 구매 수명 주기 관리 시스템을 빌드하면 원활한 사용자 환경을 제공하고 구매 및 사용 권한을 효율적으로 관리할 수 있습니다.
실시간 개발자 알림 클라이언트 빌드
Google Play 결제 시스템에서 이루어진 구매는 수명 주기 전반에서 여러 차례의 사용 권한 변경을 거칩니다. 이러한 변경은 다음을 비롯한 다양한 작업에 의해 트리거될 수 있습니다.
사용자가 앱에서 시작한 작업
사용자가 Play 스토어 앱을 통해 시작한 작업
백엔드 시스템에서 직접 시작된 작업
개발자가 Google Play Console을 통해 시작한 작업
예:
사용자가 Play 스토어 정기 결제 센터를 통해 정기 결제를 취소합니다.
개발자가 Google Play Developer API를 사용하여 정기 결제 청구를 연기합니다.
개발자가 Google Play Console을 통해 구매를 환불하고 사용 권한을 취소합니다.
백엔드에서 구매가 거칠 수 있는 다양한 상태를 인식하고 신속하게 사용 권한을 조정하는 데 필요한 모든 조치를 취하는 것이 중요합니다.
Google Play Developer API를 사용하여 구매 상태를 수동으로 확인하는 것도 가능하긴 하나, 주기적인 확인에 의존하는 것은 변경사항을 추적하는 매우 비효율적인 방법이며 오류와 지연이 발생하기 쉽습니다. RTDN을 사용하면 Google Play 구매의 수명 주기 추적 로직을 빌드하지 않고도 변경사항에 즉시 대응할 수 있습니다.
이 섹션에서는 RTDN을 위한 클라이언트를 빌드하는 방법을 설명합니다. RTDN은 Google Cloud Pub/Sub를 사용하여 빌드된 기능으로, 사용자의 사용 권한 상태가 변경되면 백엔드로 즉석 알림을 보내줍니다. Pub/Sub 시스템은 알림을 전송하는 게시자와 이러한 알림을 구독하는 클라이언트로 구성됩니다. RTDN을 구현하면 사용자 사용 권한 상태의 모든 변경사항을 실시간으로 추적하고 신속하게 대응할 수 있습니다.
RTDN 게시자
Google Play의 백엔드가 RTDN 게시자 역할을 합니다. 앱에 대해 RTDN을 설정하려면 설정 가이드의 안내를 따르세요. 이 단계를 통해 Google Play 결제 시스템이 앱 RTDN의 게시자 역할을 하도록 설정할 수 있습니다. 이 설정을 완료하려면 Google Cloud Platform Console을 사용하여 기본적인 Pub/Sub 구성을 설정하는 방법을 숙지해야 합니다.
RTDN 구독자
게시자를 설정한 후에는 백엔드에서 RTDN을 소비할 수 있도록 준비해야 합니다. 이렇게 하려면 Google Cloud Pub/Sub 메시지를 수신하는 클라이언트를 빌드해야 합니다. RTDN 클라이언트의 기본 기능은 등록된 엔드포인트에서 HTTPS 요청을 통해 또는Cloud Pub/Sub 클라이언트 라이브러리를 사용하여 PubSubMessage 인스턴스를 수신하는 것입니다. 푸시 또는 풀 전략을 사용하는 방법은 Pub/Sub 문서를 참고하세요. 개발자의 필요에 가장 적합한 전략을 선택하는 방법에 관한 가이드라인은 RTDN 설정 문서를 참고하세요.
RTDN 이벤트의 알림을 받은 사용 권한 변경과 관련 있는 모든 필요한 백엔드 프로세스를 트리거합니다.
구매 상태 전환 처리
일회성 구매와 정기 결제 구매는 구매에 영향을 줄 수 있는 다양한 상태와 이벤트에 따라 서로 다른 수명 주기를 갖습니다. RTDN을 사용하면 상태 전환을 확인하는 로직을 빌드할 필요가 없습니다. 백엔드에서 각 유형의 알림을 수신하면 어떤 일이 일어나는지를 정의하기만 하면 됩니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Purchase lifecycle and RTDNs\n\nWhen you sell digital products through your app, you must consider the entire\nuser experience. In-app integration lets you launch purchase flows and\nmanage the user experience, but it's crucial to keep your backend up-to-date on\nthe entitlements that users are purchasing. This is important for tracking\npurchases and managing other aspects of the user experience, such as\ncross-platform entitlements.\n\nTo monitor purchase lifecycle events and respond quickly to changes in user\nentitlements, you should build a purchase status management system in your\nbackend for both subscriptions and one-time purchases. This system ensures quick\nand secure purchase processing regardless of device status, maintains consistent\nuser entitlements across all platforms, and provides the ability to consult\npurchase history and entitlement data in your backend.\n\nGoogle Play offers [real-time developer notifications\n(RTDN)](/google/play/billing/rtdn-reference) to monitor purchase lifecycle\nevents, and the Play Developer APIs for [Subscriptions and In-App\nPurchases](https://developers.google.com/android-publisher#subscriptions) can be\nused to take necessary actions based on these events. By using these tools and\nbuilding a robust purchase lifecycle management system, you can provide a\nseamless user experience and manage purchases and entitlements efficiently.\n\nBuild a real-time developer notification client\n-----------------------------------------------\n\nPurchases made on Google Play's billing system can go through several entitlement\nchanges throughout their lifecycle. Various actions can trigger these changes,\nincluding the following:\n\n- Actions initiated by users in your app.\n- Actions initiated by users through the Play Store app.\n- Actions initiated directly from your backend systems.\n- Actions that you initiate through the Google Play Console.\n\nFor example:\n\n- A user canceling a subscription through the Play Store subscription center.\n- A developer deferring subscription billing using the Google Play Developer API.\n- A developer issuing a refund and revoking entitlement for a purchase through the Google Play Console.\n\nIt is crucial that your backend is aware of the different states a purchase can\ngo through and that it takes all necessary measures to adjust the entitlement\naccordingly in a timely manner.\n\nWhile it is possible to use the Google Play Developer API to check a purchase\nstatus manually, relying on periodic checks is a very inefficient way to track\nchanges and it's prone to errors and delays. RTDNs can help you respond to\nchanges immediately without having to build lifecycle tracking logic for your\nGoogle Play purchases.\n\nThis section discusses how to build a client for RTDNs. RTDN is a feature built\nusing Google Cloud Pub/Sub, which sends your backend an instant notification\nwhen a user's entitlement state changes. The Pub/Sub system consists of a\npublisher that sends notifications and a client that subscribes to those\nnotifications. By implementing RTDN, you can track all changes to the user's\nentitlement state in real time and respond to them promptly.\n\n### RTDN publisher\n\nGoogle Play's backend acts as the publisher for RTDNs. To set up RTDN for you\napp, follow the instructions in the [Setup](/google/play/billing/getting-ready)\nguide. These steps allow Google Play's billing system to act as the publisher for\nyour app's RTDNs. To complete this setup, you should familiarize yourself with\nthe Google Cloud Platform Console to set up a basic Pub/Sub configuration.\n\n### RTDN subscriber\n\nAfter setting up the publisher, you should prepare your backend to consume\nRTDNs. To do this, you need to build a client to receive Google Cloud Pub/Sub\nmessages. Your RTDN client's basic function consists of receiving instances of\n[`PubSubMessage`](https://cloud.google.com/pubsub/docs/reference/rest/v1/PubsubMessage),\neither through HTTPS requests in a registered endpoint or by using the [Cloud\nPub/Sub client\nlibraries](https://cloud.google.com/pubsub/docs/reference/libraries). See the\nPub/Sub documentation to learn about using a\n[push](https://cloud.google.com/pubsub/docs/push) or a\n[pull](https://cloud.google.com/pubsub/docs/pull) strategy, or the [RTDN setup\ndocumentation](/google/play/billing/getting-ready#create-sub) for guidelines on\nchoosing the strategy that works best for your needs.\n\nFor each message you receive, your backend should do the following:\n\n- Unpack the base-64-encoded `data` field, which contains the [RTDN\n object](/google/play/billing/rtdn-reference#encoding).\n- Trigger any required backend processes related to the entitlement change notified by the RTDN event.\n\nHandle purchase state transitions\n---------------------------------\n\nOne-time purchases and subscription purchases have different lifecycles based on\nthe different states and events that can affect them. Thanks to RTDN, you don't\nneed to build logic to confirm state transitions. All you need to do is define\nwhat happens when your backend receives each type of notification.\n| **Note:** For [pre-orders](/google/play/billing/multi-offer-one-time-product#pre-order), RTDN follows the same lifecycle as the one-time purchase.\n\nSee the following guides to learn more about these scenarios:\n\n- [One-time purchase lifecycle](/google/play/billing/lifecycle/one-time)\n- [Subscription purchase lifecycle](/google/play/billing/lifecycle/subscriptions)"]]