The Android Developer Challenge is back! Submit your idea before December 2.

Google Play 결제 테스트

Google Play 결제를 구현했으면 인앱 상품 구매를 테스트할 수 있습니다. 이 도움말에는 다음과 같은 섹션이 있습니다.

테스트 준비

Google Play 결제 구현 테스트를 준비하려면 다음을 따르세요.

  1. Google Play의 비공개 또는 공개 테스트 트랙에 앱을 게시합니다. 테스트 트랙에 앱을 게시한 후 테스터가 앱을 사용할 수 있기까지 몇 시간이 걸릴 수 있습니다.
  2. 모든 테스터가 앱 테스트를 선택하도록 합니다. 테스트 참여 URL에서 테스터에게 이 테스트의 의미를 설명하고 선택할 링크를 표시합니다.

테스트는 Android 1.6 이상을 실행하는 모든 Android 기반 하드웨어 기기에서 가능합니다. Google Play 애플리케이션의 최신 버전이 기기에 설치되어 있어야 합니다. Android 애플리케이션 개발에 사용할 기기를 설정하는 방법은 하드웨어 기기 사용을 참조하세요.

Google Play 결제 앱 솔로 테스트

정적 응답으로 테스트

Google Play 결제는 Google Play 결제 구현 테스트에 사용하도록 사전 지정된 제품 ID와 관련 정적 응답을 함께 제공합니다. 이러한 응답을 통해 애플리케이션이 기본 Google Play 응답을 올바르게 처리하는지 확인할 수 있습니다. 테스터가 참여하기 전에, 심지어 앱이 아직 게시되지 않은 경우에도 정적 응답을 사용하여 Google Play 결제 구현을 테스트할 수 있습니다.

정적 응답으로 구현을 테스트하려면 사전 지정된 제품 ID가 있는 특수 항목을 사용하여 Google Play 결제를 요청합니다. 그러면 사전 지정된 각 제품 ID가 Google Play에서 특수 정적 응답을 반환합니다. 사전 지정된 제품 ID로 Google Play 결제를 요청하면 금액이 전송되지 않습니다. 또한 사전 지정된 제품 ID로 결제를 요청할 경우 결제 방법을 지정할 수 없습니다.

참고: 정적 응답은 정기 결제를 테스트하는 데 사용할 수 없습니다.

애플리케이션의 제품 목록에 사전 지정된 제품을 등록할 필요가 없습니다. Google Play는 사전 지정된 제품 ID에 대해 이미 알고 있습니다. 또한 사전 지정된 제품 ID로 정적 응답을 테스트하기 위해 Google Play Console에 애플리케이션을 업로드할 필요도 없습니다. 기기에 애플리케이션을 설치하고 기기로 로그인한 다음 사전 지정된 제품 ID를 사용하여 결제를 요청하면 됩니다.

참고: 전에는 게시되지 않은 '초안' 버전을 업로드하여 앱을 테스트할 수 있었습니다. 이 기능은 더 이상 지원되지 않습니다. 그렇지만 Google Play 스토어에 앱을 업로드하기 전이라도 정적 응답을 사용하여 앱을 테스트할 수 있습니다. 자세한 내용은 정적 응답으로 테스트를 참조하세요.

정적 Google Play 결제 응답을 테스트하기 위해 사전 지정된 제품 ID에는 다음 3개가 있습니다.

  • android.test.purchased

    이 제품 ID로 Google Play 결제를 요청하면 Google Play에서 항목이 성공적으로 구매된 것처럼 응답합니다. 응답에는 가짜 구매 정보(예: 가짜 주문 ID)가 포함된 JSON 문자열이 포함됩니다.

  • android.test.canceled

    이 제품 ID로 Google Play 결제를 요청하면 Google Play에서 구매가 취소된 것처럼 응답합니다. 잘못된 신용카드 사용과 같이 주문 절차에서 오류가 발생하거나 요금이 청구되기 전에 사용자의 주문을 취소할 경우 이러한 상황이 발생할 수 있습니다.

  • android.test.item_unavailable

    이 제품 ID로 Google Play 결제를 요청하면 Google Play에서 구매 중인 항목이 애플리케이션의 제품 목록에 등록되어 있지 않은 것처럼 응답합니다.

사전 지정된 제품 ID로 Google Play 결제를 요청하려면 일반 REQUEST_PURCHASE 요청을 생성합니다. 단, 애플리케이션의 제품 목록에 있는 실제 제품 ID를 사용하는 대신 사전 지정된 제품 ID 중 하나를 사용하세요.

사전 지정된 제품 ID를 사용하여 애플리케이션을 테스트하려면 다음 단계를 따르세요.

  1. 구매 흐름 중에 3개의 사전 지정된 제품 ID 중 하나를 사용하도록 앱을 수정합니다. 제품 ID를 사용하여 구매하는 방법에 관한 자세한 내용은 인앱 상품의 구매 사용 설정을 참조하세요.
  2. Android 지원 기기에 애플리케이션을 설치합니다.

    에뮬레이터를 사용하여 Google Play 결제를 테스트할 수 없습니다. Google Play 결제를 테스트하려면 기기에 애플리케이션을 설치해야 합니다.

    기기에 애플리케이션을 설치하는 방법을 알아보려면 기기에서 실행을 참조하세요.

  3. 개발자 계정으로 기기에 로그인합니다.

    사전 지정된 제품 ID로만 테스트하는 경우 테스트 계정을 사용할 필요가 없습니다.

  4. 기기에서 Google Play 앱 또는 MyApps 앱의 지원되는 버전을 실행하고 있는지 확인합니다.

    기기에서 Android 3.0을 실행 중인 경우 Google Play 결제를 사용하려면 MyApps 앱 버전 5.0.12 이상이 필요합니다. 기기에서 다른 버전의 Android를 실행 중이면 Google Play 결제에 Google Play 앱 버전 2.3.4 이상이 필요합니다. Google Play 앱의 버전을 확인하려면 앱을 실행한 다음 설정 메뉴를 열고 아래로 스크롤하여 버전 정보를 확인하세요.

  5. 애플리케이션을 실행하고 사전 지정된 제품 ID를 사용해 구매합니다. onPurchasesUpdated()의 코드에서 정적 응답을 적절하게 처리해야 합니다. onPurchasesUpdated() 구현에 관한 자세한 내용은 인앱 상품의 구매 사용 설정을 참조하세요.
  6. 다른 예약된 제품 ID로 다시 테스트합니다.

참고: 사전 지정된 제품 ID로 Google Play 결제를 요청하면 일반 Google Play 프로덕션 시스템이 재정의됩니다. 사전 지정된 제품 ID에 대한 Google Play 결제 요청을 보낼 때 서비스 품질은 프로덕션 환경의 품질과는 다릅니다.

전체 구매 흐름 테스트

정적 응답 테스트를 완료하고 애플리케이션에서 서명 확인이 작동하는지 확인한 후에는 실제 인앱 구매로 Google Play 결제 구현을 테스트할 수 있습니다. 실제 인앱 구매를 테스트하면 Google Play에서 실제 구매와 사용자가 애플리케이션에서 경험할 실제 체크아웃 흐름을 비롯하여 전반적인 Google Play 결제 환경을 테스트할 수 있습니다.

참고: 비공개 테스트 트랙에 앱을 게시하여 앱을 전반적으로 테스트할 수 있습니다. 이를 통해 Google Play 스토어에 앱을 게시할 수 있지만 개발자 자신이 지정한 테스트 사용자만 사용할 수 있도록 제한하세요.

실제 인앱 구매로 Google Play 결제 구현을 테스트하려면 테스트 계정을 사용해야 합니다. 기본적으로, 등록된 테스트 계정은 개발자 계정과 연결된 계정뿐입니다. Google Play Console을 사용하여 추가 테스트 계정을 등록할 수 있습니다. 아직 테스트 계정을 설정하지 않은 경우 테스트 계정 설정을 참조하세요.

테스트 계정으로는 항목이 게시된 경우에만 제품 목록에서 항목을 구매할 수 있습니다.

실제 구매로 Google Play 결제 구현을 테스트하려면 다음 단계를 따르세요.

  1. Google Play Console에서 비공개 테스트 트랙에 애플리케이션을 업로드합니다.

    참고: 초기 앱 업로드 후 라이선스 테스터는 Google Play Console에 업로드하지 않아도 앱의 개발 버전에서 구매할 수 있습니다. 따라서 매번 새로운 버전을 업로드할 필요 없이 디버그 서명된 빌드를 사용하고 변경할 수 있습니다.

    참고: 전에는 게시되지 않은 '초안' 버전을 업로드하여 앱을 테스트할 수 있었습니다. 이 기능은 더 이상 지원되지 않습니다. 대신 비공개 또는 공개 테스트 트랙에 앱을 게시해야 합니다. 자세한 내용은 앱 초안이 더 이상 지원되지 않음을 참조하세요.

  2. Google Play Console에서 인앱 상품을 만듭니다. 자세한 내용은 일회성 제품 만들기정기 결제 만들기를 참조하세요.
  3. Android 지원 기기에 애플리케이션을 설치합니다. 에뮬레이터로는 Google Play 결제를 테스트할 수 없습니다. 기기에 애플리케이션을 설치하는 방법을 알아보려면 기기에서 앱 실행을 참조하세요.
  4. Google Play 애플리케이션 또는 MyApps 애플리케이션의 지원되는 버전이 기기에서 실행되고 있는지 확인합니다. 기기에서 Android 3.0을 실행 중인 경우 Google Play 결제를 사용하려면 MyApps 애플리케이션 버전 5.0.12 이상이 필요합니다. 기기에서 다른 버전의 Android를 실행 중이면 Google Play 결제에 Google Play 애플리케이션 버전 2.3.4 이상이 필요합니다. Google Play 애플리케이션의 버전을 확인하는 방법에 관한 자세한 내용은 Google Play 업데이트를 참조하세요.
  5. 애플리케이션에서 인앱 구매를 진행합니다.

참고: 기기에서 기본 계정을 바꾸는 유일한 방법은 초기화하는 것입니다. 먼저 기본 계정으로 로그인했는지 확인하시기 바랍니다.

Google Play 결제 앱 사용자 테스트

테스트 계정 설정

테스터 계정을 설정하려면 다음 단계를 따르세요.

  1. 테스터가 구매할 수 있도록 제공할 인앱 상품을 Google Play Console을 사용하여 업로드하고 게시합니다. APK 자체를 게시하기 전에 인앱 항목을 업로드하고 게시할 수 있습니다.
  2. Play Console을 사용하여 라이선스 테스터 계정을 만듭니다.
    1. 설정 > 계정 세부정보로 이동합니다.
    2. 라이선스 테스트 섹션에서 테스트 권한이 있는 Gmail 계정 입력란에 테스터의 이메일 주소를 추가합니다.
    3. 변경사항을 저장합니다. 테스터는 15분 이내에 인앱 상품 구매를 시작할 수 있습니다.

참고: 테스트 계정은 테스터의 Android 기기에 있어야 합니다. 기기에 계정이 둘 이상인 경우 앱을 다운로드한 계정으로 구매가 이루어집니다. 앱을 다운로드한 계정이 없는 경우에는 첫 번째 계정으로 구매가 이루어집니다. 사용자는 구매 대화상자를 펼쳐서 구매하는 계정을 확인할 수 있습니다.

테스터에게 테스트 구매 지시

테스트 계정이 설정된 후 사용자에게 테스트 구매를 지시할 수 있습니다. 다음은 테스트 구매 절차에 관한 몇 가지 세부정보입니다.

  • 사용자는 일반 사용자가 사용하는 것과 동일한 앱 구매 흐름을 사용합니다.
  • 사용자는 최소 두 가지 구매 방식('항상 승인되는' 결제 방법과 '항상 거부되는' 결제 방법)으로 구매해야 합니다. 이러한 테스트 결제 방법을 사용하면 결제가 승인 또는 거부되었을 때 앱에서 올바르게 대응하는지 확인할 수 있습니다. 그림 1에서는 구매 흐름에서 나타나는 테스트 결제 방법을 보여줍니다.
    그림 1. 라이선스 테스트 사용자를 위한 결제 수단 테스트 도구 옵션.
    라이선스 테스터가 사용할 수 있는 결제 방법은 이 두 가지뿐입니다. 이 결제 방법을 사용하면 구매 흐름에서 즉시 결과를 반환합니다.
  • 테스트 구매에는 세금이 계산되지 않습니다.
  • 라이선스 테스터에게는 구매 비용이 청구되지 않습니다.
  • Google Play에서는 구매 대화상자 가운데에 알림을 표시하여 테스트 구매를 나타냅니다.

참고: 동일한 인앱 상품의 테스트 구매를 여러 번 진행하려면 각 구매 후에 항목을 소비된 것으로 표시하세요. 그렇게 하려면 consumeAsync()를 호출하세요.

실제 계정으로 테스트

Google Play 결제를 사용하는 앱의 출시를 준비할 때, Google Play 비공개 또는 공개 출시 옵션을 사용하여 구현의 유효성을 검사하고 로드를 테스트한 후 모든 사용자에게 앱을 배포할 수 있습니다.

비공개 또는 공개 테스트 그룹을 사용하면 사용자가 Google Play에서 앱을 설치하고 인앱 상품을 테스트할 수 있습니다. 사용자는 Google Play에서 구매에 사용하는 일반적인 결제 수단을 사용하여 계정에 요금이 청구되는 실제 구매를 진행할 수 있습니다.

참고: 비공개 및 공개 테스트 배포 그룹에 테스트 라이선스 계정을 포함하는 경우 이 계정의 사용자는 테스트 구매만 할 수 있습니다.

일회성 제품 관련 기능 테스트

인앱 프로모션 테스트

앱에서 인앱 프로모션을 지원하는 경우 다음 사용 사례를 테스트하세요.

사용자가 앱에서 프로모션 코드를 사용하는 경우

사용자가 앱의 구매 흐름에서 프로모션 코드를 사용하면 Google Play 결제 요청하기에 설명된 것처럼 시스템에서 활동의 onActivityResult() 메서드를 호출하여 구매를 처리합니다. 사용자가 돈으로 지불하든 프로모션 코드로 지불하든, onActivityResult()에서 구매를 적절히 처리하는지 확인하세요.

사용자가 Google Play 스토어에서 프로모션 코드를 사용하는 경우

사용자가 Play 스토어에서 프로모션 코드를 사용하는 경우 아래와 같이 몇 가지 워크플로가 가능합니다. 각 워크플로를 확인해보세요.

앱이 설치되어 있지 않음

사용자가 기기에 설치되지 않은 앱의 프로모션 코드를 사용하는 경우 Play 스토어에서 사용자에게 앱을 설치하라는 메시지를 표시합니다. 앱이 설치되었지만 최신 버전이 아닌 경우 Play 스토어에서 사용자에게 앱을 업데이트하라는 메시지를 표시합니다. 앱이 설치되지 않은 기기에서 다음 시퀀스를 테스트합니다.

  1. 사용자가 Play 스토어에서 앱의 프로모션 코드를 사용합니다. Play 스토어에서 사용자에게 앱을 설치하라는 메시지를 표시합니다.
  2. 사용자가 앱을 설치하고 시작합니다. 앱이 시작될 때 getPurchases()를 호출하고 사용자가 프로모션 코드로 구매한 항목을 올바르게 감지하는지 확인합니다.
앱이 설치되어 있지만 실행 중이 아님

사용자가 기기에 설치된 앱의 프로모션 코드를 사용하면, Play 스토어에서 사용자에게 앱으로 전환하라는 메시지를 표시합니다. 앱이 설치되었지만 실행되고 있지 않은 기기에서 다음 시퀀스를 테스트합니다.

  1. 사용자가 Play 스토어에서 앱의 프로모션 코드를 사용합니다. Play 스토어에서 사용자에게 앱으로 전환하라는 메시지를 표시합니다.
  2. 사용자가 앱을 시작합니다. 앱이 시작될 때 getPurchases()를 호출하고 사용자가 프로모션 코드로 구매한 항목을 올바르게 감지하는지 확인합니다.
앱이 설치되어 있고 실행 중임

사용자가 기기에서 현재 실행 중인 앱의 프로모션 코드를 사용하는 경우 Play 스토어에서는 PURCHASES_UPDATED 인텐트를 통해 앱에 알립니다. 다음 시퀀스를 테스트합니다.

  1. 사용자가 앱을 시작합니다. 앱이 PURCHASES_UPDATED 인텐트를 수신하도록 적절히 등록되었는지 확인합니다.
  2. 사용자가 직접 또는 프로모션 코드를 포함하는 생성된 URL을 사용하여 Play 스토어 앱을 시작하고 앱의 프로모션 코드를 사용합니다. Play 스토어가 PURCHASES_UPDATED 인텐트를 실행합니다. 인텐트를 처리하기 위해 앱의 BroadcastReceiver.onReceive() 콜백이 실행되는지 확인합니다.
  3. onReceive() 메서드가 getPurchases()를 호출하여 인텐트에 응답해야 합니다. 앱에서 이 메서드를 호출하고 사용자가 프로모션 코드로 구매한 항목을 올바르게 감지하는지 확인합니다.
  4. 사용자가 앱으로 다시 전환합니다. 사용자가 구매한 항목이 있는지 확인합니다.

정기 결제 관련 기능 테스트

일회성 제품 및 정기 결제의 구매 흐름은 비슷하지만, 정기 결제에는 정기 결제 갱신의 성공 또는 거부와 같은 추가 시나리오가 있습니다. 두 가지 상황 모두에서 애플리케이션을 테스트하는 데 도움이 되도록 '테스트 도구, 항상 승인' 및 '테스트 도구, 항상 거부' 결제 수단을 사용할 수 있습니다. 성공적인 정기 결제 시나리오 이상의 시나리오를 테스트하려면 이러한 결제 수단을 사용하세요.

테스트 정기 결제 갱신

테스트 정기 결제는 테스트를 돕기 위해 일반적인 경우보다 더 빨리 갱신됩니다. 다음 표에는 기간이 다양한 정기 결제의 테스트 갱신 시간이 나와 있습니다.

참고: 이러한 시간은 대략적인 것으로, 이벤트의 정확한 시간에는 약간의 변동이 있을 수 있습니다. 이러한 변동을 보완하려면 각 정기 결제 만료일 이후 API를 호출하여 현재 상태를 확인하세요.

프로덕션 정기 결제 기간테스트 구독 갱신
1주5분
1개월5분
3개월10분
6개월15분
1년30분

참고: 테스트 정기 결제는 최대 6회 갱신됩니다.

무료 체험판과 같이 정기 결제에 사용할 수 있는 시간 기반 기능도 테스트를 위해 단축됩니다. 다음 표에는 시간 기반 정기 결제 기능과 관련된 테스트 기간이 나와 있습니다.

기능테스트 기간
무료 체험3분
신규 할인 가격 기간구독 테스트 기간과 동일
유예 기간(3일 및 7일 모두) 5분
계정 보류10분
일시중지(1개월)5분
일시중지(2개월)10분
일시중지(3개월)15분

갱신율 테스트 시나리오

갱신율 테스트 간격을 보여주는 여러 테스트 시나리오를 표시하려면 표시/숨기기를 클릭하세요.

완료된 테스트 구매 취소

Google Play에는 각 사용자가 완료한 테스트 구매가 누적되지만 결제 처리로 전달하지는 않습니다.

테스트 구매는 자동으로 취소되지 않으므로 수동으로 테스트 구매를 취소하여 테스트를 계속 진행할 수 있습니다. 취소하려면 Play 스토어에서 앱 페이지를 여세요. 취소하려는 테스트 구매가 정기 결제인 경우 Purchases.subscriptions APIdml cancel() 메서드도 사용할 수 있습니다.

중요: Purchases.subscriptions API의 refund()revoke() 메서드는 테스트 구매를 지원하지 않습니다.

다음 단계

Google Play 결제 구현 테스트를 완료하면 Google Play에 애플리케이션을 게시할 준비가 완료됩니다. 이제 Google Play에서 준비, 서명, 게시하는 일반적인 단계를 따르면 됩니다.