此版本的应用程序未配置为通过Google Play计费


269

当我尝试使用应用内结算来运行我的应用程序时,出现错误消息:“此版本的应用程序未配置为通过Google Play进行计费。请查看帮助中心以获取更多信息”。

我已经在清单文件中获得了结算许可,并且我已经将签名的.apk作为草稿上传到Google Play上,并且我还将该签名的apk安装到了我的手机上。

对如何解决此问题有帮助吗?

Answers:


339

可能由于多种原因导致此错误。

以下是Google IAB测试的要求列表。

先决条件:

  1. AndroidManifest必须包含“ com.android.vending.BILLING”权限
  2. APK是在发布模式下构建的。
  3. APK已使用发行证书签名。(重要提示:“通过Google Play进行应用签名”仅在您直接从GooglePlayStore下载时才有效!)
  4. APK 至少一次上传到alpha / beta分发渠道(以前是草稿)到开发者控制台。(大约需要2h-24h的时间)。
  5. IAB 产品已发布,其状态设置为active
  6. 测试帐户已添加到开发者控制台中。

测试要求:

  1. 测试APK的版本代码与上传到开发者控制台的版本代码相同
  2. 测试的APK 签署具有相同的证书(S)作为一个上传到dev.console。
  3. 测试帐户(不是开发人员)-是设备上的主要帐户。(可能不需要主帐户-根据@MinosL注释)
  4. 选择了测试帐户作为测试人员,并且该帐户与有效的付款方式相关联。(@Kyone

PS:使用发行证书进行调试https : //stackoverflow.com/a/15754187/1321401(链接为Thnx @dipp

PPS:想要很长一段时间列出此清单。

Thnx @zlgdev@Kyone@MinosL更新


5
不要忘记使用上载构建后生成的“选择网址” 来确保您用来测试IAB的帐户已选择作为测试人员使用;并且已将其链接到有效的付款方式
Kyone 2015年

3
测试 IAP难道不是很容易吗?还是要测试一般的东西
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?
阿尔菲·汉森

3
除了Android工具>导出已签名的项目...等以外,还有没有其他更简便的方法来测试购买过程,然后手动将APK复制到设备上,进行测试,....重复?我肯定错过了什么?
13年

4
严重地,我不能将应用程序与调试证书一起使用并测试应用内结算吗?
TacB0sS 2013年

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)2013年

2
根据您的情况,此错误似乎有2个常见修复。以我为例。
马特

谢谢,这就是问题所在。在我连接的设备上,发布签名的apk调试良好。然后,更改版本代码,并开始收到1005错误。ew!
安娜·比尔斯特伦

@Anna请注意,如果您使用iabHelper,-1005也是USER_CANCELLED
JacksOnF1re 2015年

47

您需要使用实时证书签署APK。然后将其安装到测试设备上。然后,您可以测试InAppBilling。如果通过eclipse直接运行到设备来测试应用程序(在调试模式下),则会收到此错误。

如果您将其android.test.purchased用作SKU,它将一直有效,但是最终响应中不会包含developerPayload。

如果您在应用程序项目中使用自己的草稿,则可以进行所有测试,但需要付费,因此以后必须自己退还。

您不能使用与Google Play开发控制台相同的Gmail帐户购买商品。


1
+1从调试器运行使用调试证书。导出应用程序并创建新的公共密钥(并将其安装在开发者控制台中)后,只需通过电子邮件向自己发送apk并从gmail收件箱中进行安装即可。
cdavidyoung

如果我想尝试“ android.test.purchased”,那么是否要在代码和开发者控制台中同时更改SKU?
Rocologo


17

如果您来自2018年,则需要直接从Play商店下载APK并安装“派生” APK。可能是因为Google的Play商店具有“ Google Play应用签名”功能。


1
哪个APK?我正在使用AIDL,我仍然需要这样做吗?
刘震

@ZhenLiu我想不需要
Law Gimenez

此外,该应用程序无法通过其他方式(例如Android Studio)安装在设备上。您可以通过Play商店进行安装/更新,但不能使用IAP-您会收到OP错误。
JDune19年

我们该如何调试呢?
奥利弗·迪克森

3

如果您使用的apk版本与Google Play中的版本不同,就会发生这种情况。


3

让我补充一下发生的事情,可能会有所帮助。

这主要是由于签署。

由于我已经在项目结构中添加了签名详细信息,因此我一直认为每次运行时都会安装预期的签名apk。但是选择了构建类型“ debug”。

修复以下问题为我解决了问题。

  • 生成生成类型为“ release”的签名APK。
  • 手动安装了apk。

2

就我而言,由于已安装的apk的签名不同以及上传到市场apk的签名不同,我看到了相同的消息。


2

与SO和其他网站上的许多答案和评论相反,您不必对已从Google Play下载到测试设备上的产品的alpha / beta版本执行初步测试(alpha / beta发布过程通常会很费劲半天)。您也不必从开发人员工作室中将签名的发行版APK加载或重新加载到测试设备。

您可以使用调试应用程序调试初步的Google Play in app计费服务,该调试应用程序是从开发人员工作室通过ADB直接加载到测试设备中的。如果遇到阻止此错误的错误,则可能是您的代码做错了什么。特别注意您的SKU(产品ID)的大小写及其格式(例如,如果您将APK加载为com.mydomain.my_product_id,请确保尝试以这种方式购买它-提供相同的大小写和域) 。另外,请特别注意您的itemType-对于应用程序购买或订阅中的托管/非托管,这应该分别为“ inapp”或“ subs”。

根据Chirag Patel的建议,如果您已正确建立帐单代码,请在初步测试期间使用android.test.purchased Sku(产品ID)执行所有测试。由于Google测试系统未提供此数据,因此在整个结算操作过程中都要检查该ID,以便通过签名,令牌和有效载荷检查来传递此ID。此外,为您的测试产品之一提供此ID,以在整个模式中测试其购买,解锁/加载和演示。要清除购买的商品,只需消耗它,传递相同的Sku和以这种方式格式化的令牌字符串-没有其他相关字段:

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

完成此测试阶段后,请使用您的alpha / beta产品进行半实时测试。创建一个Google网上论坛(本质上是一个邮件列表),向测试用户添加电子邮件,然后在此阶段添加/邀请该网上论坛对您的设备进行测试(在您应用的Google开发者列表的“ APK”部分执行)。系统会模拟购买交易,但不会实际收取费用-但是,要清除并重新测试购买交易,Google表示您必须从Google电子钱包中退还这些款项。这是测试的唯一阶段,需要使用alpha / beta负载和测试用户的耗时过程。



1

遇到了同样的问题,在我阅读DZDomi的帖子之前并没有解决。突然发现您需要启用Google Developer Console中的一项设置。在“应用内购买”部分中,您的产品有一行,最右边有一个状态。它应该是活动的!


0

我的问题是我试图通过debug.keystore检查它,我的意思是通过eclipse运行它。我用我以alpha模式发布的密钥库导出了它(必须先发布它才能进行测试)。我的手机,然后我就可以正常测试了。


0

当您在上传APK后添加了应用内购买功能,但尚未在Play商店中发布该应用程序(Alpha,Beta版和正式版)时,也会发生此问题。

这基本上意味着,您必须在Play商店中发布apk(alpha,beta和正式版)之后,再添加应用内购买。否则,您将无法购买或查询应用内购买。


0

此处未提及的另一个原因是您需要在真实设备上进行测试。随着仿真器变得非常好,这是一个容易犯的错误。


0

最近,谷歌对他们的系统进行了更改,由于您已将至少一个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

我在moto c2 +中遇到相同的问题,一旦我重新启动,这是设备问题,它将完美运行...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.