lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey

인앱 결제 개요

이 문서에서는 인앱 결제 기능을 애플리케이션에 추가하기 위해 이해해야 할 기초적인 인앱 결제 구성 요소와 기능에 대해 설명합니다.

참고: 앱을 배포하는 국가의 준거법을 준수해야 합니다. 예를 들어, EU 국가에서는 불공정 상거래 지침(Unfair Commercial Practices Directive)을 근거로 제정된 각종 법률에 따라 어린이에게 광고 대상 상품을 사라고 직접 권유하거나 어린이의 부모나 다른 성인에게 어린이를 위해 광고 대상 상품을 사라고 설득하는 행위가 금지됩니다. 이 주제와 다른 다양한 주제에 대한 자세한 내용은 EU 소비자 보호 당국의 입장을 확인해 보세요.

In-app Billing API

애플리케이션은 기기에 설치되어 있는 Google Play 앱에 의해 노출되는 API를 사용하여 인앱 결제 서비스에 액세스합니다. 그러면 Google Play 앱이 애플리케이션과 Google Play 서버 사이에서 결제 요청과 응답을 전달합니다. 실제로는, 애플리케이션이 Google Play 서버와 직접 통신하는 일은 없습니다. 그 대신, 애플리케이션은 프로세스 간 통신(IPC)으로 Google Play 앱에 결제 요청을 보내고 Google Play 앱으로부터 응답을 받습니다. 애플리케이션이 자신과 Google Play 서버 사이의 네트워크 연결을 관리하지는 않습니다.

Google Play를 통해 게시하는 애플리케이션에만 인앱 결제를 구현할 수 있습니다. 인앱 구매 요청을 완료하려면 Google Play 앱이 네트워크를 통해 Google Play 서버에 액세스할 수 있어야 합니다.

In-app Billing Version 3이 최신 버전이며, 이 버전은 Android 기기 전반에 걸쳐 매우 폭넓은 호환성을 유지합니다. In-app Billing Version 3은 최신 버전의 Google Play 앱이 설치되어 있고 Android 2.2(API 레벨 8) 이상을 실행 중인 기기(사용 중인 대다수의 기기)에서 지원됩니다.

Version 3의 특징

In-app Billing Version 3은 다음과 같은 특징을 지니고 있습니다.

  • 앱은 사용자가 손쉽게 Google Play에서 상품 세부정보를 요청하고 인앱 상품을 주문할 수 있게 해주는 간소한 API를 통해 요청을 보냅니다. 이 API는 사용자의 소유권을 기준으로 재빨리 상품을 복원합니다.
  • 이 API는 구매 완료 시 주문 정보를 동기적으로 기기로 전파합니다.
  • 모든 구매가 관리됩니다(즉, Google Play가 인앱 상품에 대한 사용자의 소유권을 계속 추적함). 사용자는 인앱 상품의 복사본을 여러 개 소유할 수 없고, 특정 시점에 단 한 개의 복사본만 소유할 수 있습니다.
  • 구매한 상품은 소비할 수 있습니다. 소비된 상품은 소유되지 않은 상태로 되돌아가며, 그러면 Google Play에서 다시 구매할 수 있게 됩니다.
  • 이 API는 구독 서비스를 지원합니다.

다른 버전의 인앱 결제에 대한 자세한 내용은 버전 노트를 참조하세요.

인앱 상품

인앱 상품은 애플리케이션 내에서 사용자에게 판매하기 위해 제공하는 디지털 상품입니다. 디지털 상품의 예로는 게임 머니, 사용자 환경을 향상시켜 주는 애플리케이션 기능 업그레이드, 애플리케이션을 위한 새로운 콘텐츠 등이 있습니다.

인앱 결제를 통해 디지털 콘텐츠만 판매할 수 있습니다. 인앱 결제를 사용하여 물리적 상품, 개인 서비스, 실제로 배달해야 하는 물품을 판매할 수는 없습니다. 정가가 있는 애플리케이션과는 달리, 사용자가 인앱 상품을 구매한 후 적용되는 환불 기간은 따로 없습니다.

Google Play는 어떤 형태의 콘텐츠 전달도 제공하지 않습니다. 애플리케이션에서 판매하는 디지털 콘텐츠를 전달할 책임은 앱 개발자에게 있습니다. 인앱 상품은 항상 하나의 앱과 명시적으로 연결될 뿐입니다. 즉, 두 가지 애플리케이션 모두 같은 개발자가 제공하는 것이라고 해도, 둘 중 한 애플리케이션이 다른 애플리케이션용으로 게시된 인앱 상품을 구매할 수는 없습니다.

상품 유형

인앱 결제 서비스는 애플리케이션을 통한 수익 창출 방식에 융통성을 발휘할 수 있도록 서로 다른 상품 유형을 지원합니다. 개발자는 항상 Google Play Developer Console을 사용해 상품을 정의하도록 되어 있습니다.

인앱 결제 애플리케이션에 대해 관리되는 인앱 상품구독의 두 가지 상품 유형을 지정할 수 있습니다. Google Play는 각 사용자마다 애플리케이션에 대해 인앱 상품과 구독의 소유권을 처리하고 추적합니다. In-app Billing Version 3에서 지원되는 상품 유형에 대해 자세히 알아보세요.

Google Play Developer Console

Developer Console은 인앱 결제 애플리케이션을 게시하고 애플리케이션에서 구매할 수 있는 다양한 인앱 상품을 관리할 수 있는 곳입니다.

일회성 구매 상품과 반복 구매가 이루어지는 구독을 포함하여, 애플리케이션과 연결된 디지털 상품의 목록을 생성할 수 있습니다. 다음과 같이 각 제품에 대한 정보를 정의할 수 있습니다.

  • 고유한 상품 ID(상품의 SKU라고도 함)
  • 상품 유형
  • 가격
  • 설명
  • 특정 상품의 구매에 대한 Google Play의 처리 및 추적

같은 가격으로 여러 가지 앱이나 인앱 상품을 판매하는 경우 중앙 집중식으로 관리되는 위치에서 이런 가격대를 관리하기 위해 가격 템플릿을 추가할 수 있습니다. 가격 템플릿을 사용할 때 제시하는 가격에 현지에서 적용되는 세금을 포함하거나, 가격을 제시하고 시스템에서 이런 가격에 현지 세금을 추가하도록 할 수 있습니다. 특정 국가에 대한 환율을 새로 고치는 등, 가격 템플릿의 가격을 변경할 수 있고 그 변경 내용은 템플릿에 연결하는 앱과 인앱 상품에 적용됩니다.

게시 취소된 애플리케이션을 테스트하기 위한 액세스 권한을 부여하기 위해 테스트 계정을 만들 수도 있습니다.

Developer Console을 사용하여 인앱 상품과 상품 목록을 구성하는 방법을 자세히 알아보려면 인앱 결제 관리를 참조하세요.

Google Play 구매 흐름

Google Play는 애플리케이션 구매에 사용되는 것과 동일한 백엔드 결제 서비스를 사용하므로, 사용자 입장에서는 일관되고 친숙한 구매 흐름을 통해 구매할 수 있습니다.

중요: Google Play에서 인앱 결제 서비스를 사용하려면 Google Payments 판매자 계정이 있어야 합니다.

애플리케이션은 특정한 인앱 상품에 대한 결제 요청을 보내는 것으로 구매를 시작합니다. 그러면 Google Play가 결제 양식의 요청 및 유효성 검사와 재무상 트랜잭션의 처리를 비롯하여, 트랜잭션에 대한 모든 결제 세부정보를 처리합니다.

결제 프로세스가 완료되면 Google Play는 주문 번호, 주문 날짜 및 시간, 지불된 가격 등의 구매 세부정보를 애플리케이션으로 보냅니다. 어떤 지점에서도 애플리케이션이 재무상 트랜잭션을 처리할 필요가 없으며, 그 역할은 Google Play의 몫입니다.

샘플 애플리케이션

인앱 결제를 애플리케이션에 원활하게 통합할 수 있도록, Android SDK가 앱 내에서 인앱 상품과 구독을 판매하는 방법을 잘 보여 주는 샘플 애플리케이션을 제공합니다.

TrivialDrive for the Version 3 API 샘플을 통해 게임 구동을 위해 In-app Billing Version 3 API를 사용하여 인앱 상품 및 구독의 구매를 구현하는 방법을 알 수 있습니다. 이 애플리케이션은 인앱 결제 요청을 보내고 Google Play에서 전송되는 동기 응답을 처리하는 방법을 보여 줍니다. 또한, API로 상품 소비를 기록하는 방법도 보여 줍니다. Version 3 샘플에는 인앱 결제 작업을 처리할 뿐 아니라, 자동 서명 확인도 수행하기 위한 편의 클래스가 포함되어 있습니다.

권장 사항: 애플리케이션에서 코드를 난독 처리한 후 게시하세요. 자세한 내용은 보안 및 디자인을 참조하세요.

이전 고려 사항

In-app Billing Version 2 API는 2015년 1월에 단종되었습니다. API Version 2 또는 이전 버전을 사용하는 기존의 인앱 결제 구현이 있을 경우에는 In-app Billing Version 3로 이전해야 합니다.

이전하고 나면 관리되는 상품과 관리되지 않는 상품은 각각 다음과 같이 처리됩니다.

  • 이전에 Developer Console에서 정의한 관리되는 상품과 구독은 전과 똑같이 Version 3에서도 유효합니다.
  • 기존 애플리케이션에 대해 정의한 관리되지 않는 상품은 Version 3 API를 사용하여 해당 상품에 대한 구매 요청을 할 경우 관리되는 상품으로 처리됩니다. 이런 상품을 위해 Developer Console에 새로운 상품 항목을 만들 필요는 없으며, 동일한 상품 ID를 사용하여 이런 상품을 관리할 수 있습니다.