답변:
이 오류는 여러 가지 이유로 발생할 수 있습니다.
다음은 Google IAB 테스트를위한 요구 사항 목록입니다.
전제 조건 :
테스트 요구 사항 :
추신 : 릴리스 인증서로 디버깅 : https : //.com/a/15754187/1321401 (Thnx @dipp for the link)
PPS : 이미이 목록을 만들고 싶었습니다.
Ahh는 몇 시간 동안 해결책을 찾았습니다.
게시 된 버전이 휴대 전화에서 테스트중인 버전과 동일하지 않은 경우에도 마찬가지입니다.
예를 들어 업로드 된 버전은 android:versionCode="1"
이며 휴대 전화에서 테스트중인 버전은android:versionCode="2"
android:versionCode="1"
있고 전화가 android:versionCode="2"
괜찮은지 알려 주실 수 있습니까? 아니면 apk Google Play를 변경해야합니까?
라이브 인증서로 APK에 서명해야합니다. 그런 다음 테스트 장치에 설치하십시오. 그런 다음 InAppBilling을 테스트 할 수 있습니다. 이클립스를 통해 장치 (디버그 모드)로 직접 실행하여 응용 프로그램을 테스트하는 경우이 오류가 발생합니다.
android.test.purchased
SKU 로 사용 하는 경우에는 계속 작동하지만 최종 응답에 developerPayload가 없습니다.
앱 항목에서 자신의 초안을 사용하는 경우 모든 방법으로 테스트 할 수 있지만 비용이 청구되므로 나중에 직접 환불해야합니다.
Google Play 개발 콘솔에 사용하는 것과 동일한 Gmail 계정으로 상품을 구매할 수 없습니다.
2018 년에 온다면 Play 스토어에서 직접 APK를 다운로드하고 "파생 된"APK를 설치해야합니다. Google Play 스토어에 "Google Play 앱 서명"기능이있을 수 있습니다.
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 지갑에서 구매를 환불해야한다고 표시합니다. 이 단계는 알파 / 베타로드 및 테스트 사용자를 사용하는 데 시간이 오래 걸리는 유일한 테스트 단계입니다.
IAB를 디버깅하려면 다음을 수행해야합니다.
매니페스트에 대한 IAB 권한으로 앱 버전을 Google에 제출합니다.
Google Play에서 앱에 제품 추가 : 인앱 결제 관리
서명 된 사용자 정의 디버그 키 저장소 설정 : 서명 된 키 저장소를 사용하도록 Eclipse 구성
최근 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
...
}
}
}