此版本的应用程序未configuration为通过Google Play进行结算
当我尝试使用应用内结算来运行我的应用程序时,我收到错误消息:“此版本的应用程序未configuration为通过Google Play进行结算,请查看帮助中心获取更多信息”。
我已经在清单文件中获得了结算许可,并且我已经将一个签名的.apk作为草稿上传到Google Play上,我也已经将相同的已签名apk安装到了我的手机上。
有关如何解决这个问题的任何帮助?
这个错误可能是由几个原因造成的。
以下是Google IABtesting的要求列表。
先决条件:
- AndroidManifest必须包含“com.android.vending.BILLING”权限 。
- APKbuild立在发布模式 。
- APK使用发行证书进行 签名 。
- APK会上传到Alpha / Beta分发渠道(以前 – 作为草稿)到开发者控制台至less一次。 (需要一些时间~2h-24h )。
- IAB 产品已发布 ,其状态设置为活动状态 。
- testing帐户是在开发者控制台中添加的 。
testing要求:
- testingAPK 与上传到开发者控制台的版本号相同 。
- testingAPK使用与上传到dev.console的证书相同的证书进行签名。
- testing帐户 (不是开发者) – 是设备上的主要帐户 。
- testing帐户作为testing人员join,并且链接到有效的付款方式 。 ( @Kyone )
PS: 使用发行证书进行debugging : https : //stackoverflow.com/a/15754187/1321401 (Thnx @dipp为链接)
PPS:想要把这个清单很长一段时间。
Thnx @zlgdev , @Kyone更新
Ahh在尝试了几个小时后find了解决scheme。
- 谷歌需要一段时间来处理应用程序,并将其更新到他们的服务器,对我来说大概需要半天的时间。 因此,在将APK保存为Google Play草稿之后,您必须等待几个小时,才能使应用内商品正常响应,并允许定期购买。
- 导出并签名APK。 尝试进行购买的未签名APK会出错。
如果您的发布版本与您在手机上testing的版本不同,也会发生同样的情况。
例如,上传的版本是android:versionCode="1"
,而您在手机上testing的版本是android:versionCode="2"
您需要使用您的活动证书签署您的APK。 然后将其安装到您的testing设备上。 然后您可以testingInAppBilling。 如果你正在testing你的应用程序通过直接运行通过eclipse到设备(在debugging模式),那么你会得到这个错误。
如果您使用android.test.purchased
作为SKU,则它将一直工作,但在最终响应中不会有developerPayload。
如果您在应用程序中使用自己的草稿,则可以一路testing,但是您将收取费用,因此必须自行退款。
您无法使用您用于Google Play开发控制台的同一个Gmail帐户购买商品。
让我只是添加发生在我身上的事情,可能会帮助一些人。
这主要是由于签字。
由于我已经在项目结构中添加了签名详细信息,所以我每次运行时都会预期签名的apk会被安装。 但是构buildtypes“debugging”被选中。
下面的修复为我解决了这个问题。
- 生成签名apk的build立types“释放”。
- 手动安装apk。
这会发生,如果你使用不同版本的apk比在谷歌播放。
在我的情况下,我看到了相同的消息,由于安装apk的不同签名和上传到市场的apk。
与SO和其他站点上的许多答案和评论相反,您不必对从Google Play下载到您的testing设备的产品的alpha / beta版本进行初步testing(alpha / beta发布过程经常会吃掉半天)。 您也不必从开发者工作室加载并重新加载已签名的发行版apk到您的testing设备。
您可以使用从开发人员工作室加载的debugging应用程序直接通过ADB将您的testing设备debugging到应用程序开票服务中,从而debugging初步的Google Play。 如果您遇到阻止这种情况的错误,那么您的代码中可能会出现错误。 请特别注意SKU(产品ID)的格式及其格式(例如,如果您将APK作为com.mydomain.my_product_id加载,请确保您试图以此方式购买) – 提供相同的案例和域名) 。 另外,要特别注意你的itemType – 对于应用程序购买或订阅中的托pipe/非托pipe应该分别是“inapp”或“subs”。
正如Chirag Patel所build议的那样,假设您的帐单代码已正确build立,请在初步testing期间使用android.test.purchased Sku(产品ID)执行所有testing。 在整个结算操作中检查此ID是否通过签名,令牌和有效负载检查,因为这些数据不是由Googletesting系统提供的。 另外,给你的一个testing产品这个ID来testing它的购买,解锁/加载和演示,通过你的模式。 要清除购买,只需要消耗它,传递相同的Sku和一个令牌string格式化 – 没有其他字段是相关的:
"inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";
一旦你完成了这个testing阶段,就用你的alpha / beta产品进行半实时testing。 创build一个Google小组(本质上是一个邮件列表),添加您的testing用户的电子邮件,添加/邀请这个小组在本阶段testing您的设备(在您的应用程序的Google开发人员列表的“APK”部分执行)。 购买将被模拟,但并未实际收取 – 但要清除并重新testing购买,Google表示您必须从Google钱包中退款。 这是testing的唯一阶段,需要使用alpha / beta加载和testing用户的耗时过程。
有同样的问题,并没有解决之前,我从DZDomi阅读的post。 突然之间,Google Developer Console中有一个设置需要启用。 在“应用程序内购买”部分,您的产品有一条线,最右边有一个状态。 它应该是活动!
我的问题是,我试图用debug.keystore检查它,我的意思是通过eclipse来运行它。我导出它与我用alpha模式发布的密钥库(它必须发布之前,你可以testing它)。安装它在我的手机,比我可以正常testing。
如果你想debuggingIAB,你需要做的是:
-
提交到谷歌播放您的应用程序与清单上的IAB权限的版本:
-
在Google play上添加产品到您的应用: pipe理应用内结算
-
设置一个自定义debugging密钥库签名: configurationEclipse以使用签名密钥库
问题也会发生,当您上传APK之后添加了应用程序内购买,但您尚未在Play商店(Alpha,Beta和制作)中发布应用程序。
这基本上意味着,你必须添加应用程序内购买之后,你已经在Play商店(阿尔法,testing版和制作)发布的apk。 否则,您将无法购买或查询应用内购买。