이 버전의 애플리케이션은 Google Play를 통한 결제를 위해 구성되지 않았습니다.


269

인앱 결제로 애플리케이션을 실행하려고하면 "이 버전의 애플리케이션은 Google Play를 통한 결제 용으로 구성되지 않았습니다. 자세한 내용은 도움말 센터를 확인하십시오"라는 오류가 발생합니다.

매니페스트 파일에 이미 결제 권한이 있으며 서명 된 .apk를 Google Play에 초안으로 업로드했으며 동일한 서명 된 apk를 전화기에 설치했습니다.

이 문제를 해결하는 방법에 대한 도움이 필요하십니까?

답변:


339

이 오류는 여러 가지 이유로 발생할 수 있습니다.

다음은 Google IAB 테스트를위한 요구 사항 목록입니다.

전제 조건 :

  1. AndroidManifest에는 "com.android.vending.BILLING"권한이 포함되어야합니다 .
  2. APK는 릴리스 모드 로 빌드 됩니다 .
  3. 릴리스 인증서로 APK에 서명 했습니다 . (중요 : "Google Play 앱 서명"을 사용하면 GooglePlayStore에서 직접 다운로드 한 경우에만 작동합니다!)
  4. APK는 개발자 콘솔에 알파 / 베타 배포 채널 (이전-초안)에 한 번 이상 업로드됩니다. ( ~ 2h-24h 시간이 걸립니다 ).
  5. IAB 제품이 게시 되고 상태가 활성으로 설정됩니다 .
  6. 테스트 계정 은 개발자 콘솔에 추가 됩니다.

테스트 요구 사항 :

  1. 테스트 APK는 개발자 콘솔에 업로드 된 것과 동일한 versionCode 를 갖습니다 .
  2. 테스트 APK는 dev.console에 업로드 된 것과 동일한 인증서서명 됩니다 .
  3. 테스트 계정 (개발자가 아님)- 기기 의 기본 계정 입니다. ( @MinosL 의견 에 따르면 메인 계정이 필요하지 않을 수 있습니다 )
  4. 테스트 계정이 테스터로 선택 되어 있으며 유효한 결제 방법과 연결되어 있습니다. ( @Kyone )

추신 : 릴리스 인증서로 디버깅 : https : //.com/a/15754187/1321401 (Thnx @dipp for the link)

PPS : 이미이 목록을 만들고 싶었습니다.

업데이트를위한 Thnx @zlgdev , @Kyone , @MinosL


5
빌드를 업로드 한 후에 생성 된 "선택 URL"을 사용하여 IAB를 테스트하는 데 사용하는 계정이 테스터로 선택 되어 있는지 확인하십시오 . 그리고 유효한 지불 방법에 연결되어 있습니다.
Kyone

3
IAP를 테스트 하는 것이 쉽지 않을까요? 또는 일반적인 사물을 시험해보십시오.
Juan Juan

1
또한 주목할 가치가 있습니다. 테스트 계정이 개발자 계정에 연결되어서는 안된다 (업로드 APK에 액세스 할 필요는 없습니다)
guness

2
또한 주목할 가치가 있습니다. "앱 서명 인증서"가 활성화 된 경우 서명 인증서로 서명 할 수 없으므로 로컬 APK를 사용하여 실제 구매를 테스트 할 수 없습니다. (나를 알아 내기 위해 3 시간이 걸렸다)
guness

1
1) 2) 기기의 기본 계정이 아닌 서명 된 디버그 앱 으로 성공적으로 테스트 했으므로 Google IAB 테스트 프로세스는 위에서 언급 한 것처럼 엄격하지 않은 것 같습니다.
MinosL

194

Ahh는 몇 시간 동안 해결책을 찾았습니다.

  1. Google은 애플리케이션을 처리하고 서버로 업데이트하는 데 시간이 걸리며 반나절 정도 걸립니다. 따라서 APK를 Google Play에 초안으로 저장 한 후 인앱 제품이 정상적으로 응답하고 정기적 인 구매가 가능하도록 몇 시간을 기다려야합니다.
  2. APK 내보내기 및 서명 서명하지 않은 APK를 구매하려고하면 오류가 발생합니다.

71
와, 이거 심각한가요? 같은 문제가 발생했습니다. 인앱 결제를 테스트하기 위해 Google에서 요청한 모든 작업을 수행했지만 여전히 동일한 회피 오류 메시지가 표시됩니다. 기다려 봐야 할 것 같아요. 그러나 Google은 실제로 인앱 결제를 구현하기 위해 개발자가 앱을 업데이트해야 할 때마다 개발자가 몇 시간을 기다려야한다고 기대합니까? 최소한으로 말하는 것은 나에게 매우 부적절한 것 같습니다.
Simon

6
Android Studio에 연결된 상태에서 테스트하거나 디버거에 연결된 상태에서 테스트 할 수 있습니까? 아니면 USB를 통해 릴리스 APK를 설치해야합니까?
Alfie Hanssen

3
Android 도구> 서명 된 프로젝트 내보내기 ... 이외의 다른 방법으로 구매 프로세스를 테스트 한 다음 기기에 수동으로 APK를 복사, 테스트, .... 반복하는 방법보다 쉬운 방법이 있습니까? 뭔가 빠졌어야합니까?
wired00

4
심각하게 디버그 인증서로 애플리케이션을 사용하고 인앱 결제를 테스트 할 수 없습니까?
TacB0sS

8
작업하는 동안 IDE에서 직접 디버그 빌드를 사용할 수 있습니다. 디버그 키 저장소를 릴리스 저장소와 일치하는 디버그 키 저장소로 변경하기 만하면됩니다. 방법에 대한 자세한 내용은이 게시물을 참조하십시오. stackoverflow.com/questions/10886814/…
cottonBallPaws

137

게시 된 버전이 휴대 전화에서 테스트중인 버전과 동일하지 않은 경우에도 마찬가지입니다.

예를 들어 업로드 된 버전은 android:versionCode="1"이며 휴대 전화에서 테스트중인 버전은android:versionCode="2"


3
업로드 된 버전이 android:versionCode="1"있고 전화가 android:versionCode="2"괜찮은지 알려 주실 수 있습니까? 아니면 apk Google Play를 변경해야합니까?
Youddh

1
테스트를 위해 최소한 일시적으로 로컬 버전을 "1"로 낮추어 현재 라이브 버전과 일치시켜야합니다.
Romain

2
상황에 따라이 오류에 대한 2 가지 일반적인 수정 사항이있는 것 같습니다. 제 경우에는이 것이 었습니다.
Matt

감사합니다. 이것이 문제였습니다. 연결된 장치에서 릴리스 서명 apk로 제대로 디버깅하고있었습니다. 그런 다음 버전 코드를 변경하고 1005 오류가 발생하기 시작했습니다. 아휴!
Anna Billstrom

당신이 iabHelper 사용하는 경우 -1005도 USER_CANCELLED 것을 알고 @Anna
JacksOnF1re

47

라이브 인증서로 APK에 서명해야합니다. 그런 다음 테스트 장치에 설치하십시오. 그런 다음 InAppBilling을 테스트 할 수 있습니다. 이클립스를 통해 장치 (디버그 모드)로 직접 실행하여 응용 프로그램을 테스트하는 경우이 오류가 발생합니다.

android.test.purchasedSKU 로 사용 하는 경우에는 계속 작동하지만 최종 응답에 developerPayload가 없습니다.

앱 항목에서 자신의 초안을 사용하는 경우 모든 방법으로 테스트 할 수 있지만 비용이 청구되므로 나중에 직접 환불해야합니다.

Google Play 개발 콘솔에 사용하는 것과 동일한 Gmail 계정으로 상품을 구매할 수 없습니다.


1
+1 디버거에서 실행하면 디버그 인증서가 사용됩니다. 앱을 내보내고 새 공개 키를 만든 다음 (개발자 콘솔에 설치 한 후) apk를 이메일로 보내고 Gmail받은 편지함에서 설치하십시오.
cdavidyoung

"android.test.purchased"를 사용하려면 코드와 개발자 콘솔 모두에서 SKU를 변경해야합니까?
Rocologo

26

개발자 콘솔에서 :

Settings-> Account details->License Testing -> 테스트 액세스 권한이있는 Gmail 계정

여기에 계정을 입력하십시오


매력처럼 작동합니다.
요르단

17

2018 년에 온다면 Play 스토어에서 직접 APK를 다운로드하고 "파생 된"APK를 설치해야합니다. Google Play 스토어에 "Google Play 앱 서명"기능이있을 수 있습니다.


1
어느 APK? AIDL을 사용하고 있는데도 여전히 그렇게해야합니까?
젠 리우

@ZhenLiu 필요하지 않은 것 같아요
Law Gimenez

또한 앱을 다른 방법 (예 : Android Studio)으로 기기에 이미 설치할 수 없습니다. Play 스토어에서 설치 / 업데이트는 작동하지만 IAP는 작동하지 않습니다. OP 오류가 발생합니다.
JDune

이것을 어떻게 디버깅합니까?
올리버 딕슨

3

이것은 구글 플레이의 버전과 다른 버전의 APK를 사용하는 경우에 발생합니다.


3

나에게 일어난 일을 추가하고 도움이 될 수 있습니다.

주로 서명 때문이었습니다.

프로젝트 구조에 서명 세부 정보를 추가 했으므로 실행할 때마다 서명 된 apk가 설치 될 것으로 생각했습니다. 그러나 빌드 유형 'debug'가 선택되었습니다.

아래 수정은 나를 위해 문제를 해결했습니다.

  • 빌드 유형 'release'의 서명 된 apk를 생성했습니다.
  • APK를 수동으로 설치했습니다.

2

제 경우에는 설치된 apk의 서명이 다르고 시장 apk에 업로드 되었기 때문에 동일한 메시지를 보았습니다.


2

SO 및 기타 사이트에 대한 많은 답변과 의견과 달리 Google Play에서 테스트 기기로 다운로드 한 제품의 알파 / 베타 버전으로 예비 테스트를 수행 할 필요는 없습니다 (알파 / 베타 게시 프로세스는 종종 소모됩니다) 반나절). 서명 된 릴리스 APK를 개발자 스튜디오에서 테스트 장치로로드 및 다시로드 할 필요도 없습니다.

개발자 스튜디오에서 ADB를 통해 테스트 장치로 직접로드 된 디버그 앱을 사용하여 앱 결제 서비스에서 예비 Google Play를 디버깅 할 수 있습니다. 이를 방지하는 오류가 발생하면 코드에 문제가있을 수 있습니다. SKU (제품 ID)의 CASE 및 형식에 특히주의를 기울이십시오 (예 : APK를 com.mydomain.my_product_id로로드하는 경우 동일한 방식으로 사례와 도메인을 제공하여 구매하십시오) . 또한 itemType에 특히주의를 기울이십시오. 이는 각각 앱 구매 또는 구독에서 관리 / 관리되지 않는 'inapp'또는 'subs'여야합니다.

Chirag Patel이 제안한대로, 청구 코드가 올바르게 설정 되었다면 예비 테스트 중에 android.test.purchased Sku (제품 ID)를 사용하여 모든 테스트를 수행하십시오. Google 테스트 시스템에서이 데이터를 제공하지 않으므로 결제 작업 전체에서이 ID를 확인하여 서명, 토큰 및 페이로드 확인을 통과하십시오. 또한 테스트 제품 중 하나에이 ID를 제공하여 스키마를 통해 구매, 잠금 해제 /로드 및 프리젠 테이션을 테스트하십시오. 구매를 지우려면 동일한 Sku와 이와 같은 형식의 토큰 문자열을 전달하여 구매하십시오. 다른 필드는 관련이 없습니다.

    "inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";

이 테스트 단계를 완료하면 알파 / 베타 제품을 사용한 반 실시간 테스트로 이동하십시오. Google 그룹 (본질적으로 메일 링리스트)을 작성하고 테스트 사용자 이메일을 추가하고이 그룹을 추가 / 초대하여이 단계에서 디바이스를 테스트하십시오 (앱 Google 개발자 목록의 "APK"부분에서 수행됨). 구매는 시뮬레이션되지만 실제로 청구되지는 않습니다. 그러나 구매를 지우고 다시 테스트하기 위해 Google은 Google 지갑에서 구매를 환불해야한다고 표시합니다. 이 단계는 알파 / 베타로드 및 테스트 사용자를 사용하는 데 시간이 오래 걸리는 유일한 테스트 단계입니다.



1

같은 문제가 있었고 DZDomi에서 게시물을 읽기 전에 해결되지 않았습니다. Google 개발자 콘솔에 사용 설정해야하는 설정이 갑자기 발생했습니다. '앱 구매'섹션에는 제품 라인이 있으며 맨 오른쪽에는 상태가 있습니다. 활성이어야합니다!


0

내 문제는 debug.keystore로 확인하려고했는데, 일식을 통해 실행하는 것을 의미합니다. 알파 모드로 게시 한 키 저장소로 테스트했습니다 (테스트하기 전에 게시해야 함). 내 전화와 내가 정상적으로 테스트 할 수있는 것보다.


0

APK를 업로드 한 후 인앱 구매를 추가했지만 Play 스토어 (알파, 베타 및 프로덕션)에 애플리케이션을 게시하지 않은 경우에도 문제가 발생합니다.

이는 기본적으로 Play 스토어 (알파, 베타 및 프로덕션)에 APK를 게시 한 후에 인앱 구매를 추가해야 함을 의미합니다. 그렇지 않으면 인앱 구매를 구매하거나 쿼리 할 수 ​​없습니다.


0

여기에 언급되지 않은 또 다른 이유는 실제 장치에서 테스트해야하기 때문입니다. 에뮬레이터가 실제로 좋아지면 쉽게 실수 할 수 있습니다.


0

최근 Google은 시스템에서 변경 사항을 구현했으며 하나 이상의 APK를 콘솔에 업로드 했으므로 앱에서 모든 버전 코드 / 번호로 인앱 요청을 테스트 할 수 있습니다.

상호 참조 LINK

gradle디버깅을 위해 디버그 빌드에 서명하도록 구성 하십시오.

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            ...
        }
    }
}

0

해결책

Google이 앱 버전을 업데이트하는 데 시간이 걸리기 때문에 Play 스토어에 앱을 업로드 한 후 잠시만 기다려주세요.


0

내 경우에는 모토 C2 +에서 동일한 문제가 발생합니다. 다시 시작 하면 장치 문제 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.