此版本的应用程序没有配置为通过谷歌播放计费

当我试图运行我的应用程序内计费我得到的错误:“这个版本的应用程序没有配置通过谷歌播放计费。查看帮助中心获取更多信息”。

我已经在Manifest文件中有计费权限,我有一个签名的。apk作为草稿上传到谷歌Play上,我也已经在我的手机上安装了相同的签名apk。

有什么帮助可以解决这个问题吗?

149875 次浏览

啊,经过几个小时的尝试,终于找到了解决方案。

  1. 谷歌需要一段时间来处理应用程序并将它们更新到服务器,对我来说大约需要半天。因此,在谷歌Play上以草稿形式保存apk后,你必须等待几个小时,应用内产品才能正常响应,并允许定期购买。
  2. 导出并签署APK。未签名的APK试图进行购买将得到错误。

如果你发布的版本与你在手机上测试的版本不一样,也会发生同样的情况。

例如,上传的版本是android:versionCode="1",而你在手机上测试的版本是android:versionCode="2"

你需要用你的实际证书签署APK。然后将其安装到测试设备上。然后您可以测试InAppBilling。如果您正在通过eclipse直接运行到设备(在调试模式下)来测试应用程序,那么您将得到这个错误。

如果你使用android.test.purchased作为SKU,它将一直工作,但你不会在你的最终响应中有developerPayload。

如果你使用的是你自己的应用项目草稿,你可以一直测试,但你会被收费,所以之后你必须自己退款。

您不能使用用于谷歌游戏开发控制台的相同gmail帐户购买物品。

在我的情况下,由于安装的apk和上传到市场的apk的签名不同,我看到了相同的消息。

如果你使用的apk版本与谷歌比赛中的apk版本不同,就会发生这种情况。

这个错误可能是由几个原因引起的。

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

先决条件:

  1. AndroidManifest必须包含“com.android.vending。计费”权限
  2. APK构建在发布模式中。
  3. APK是签署,带有释放证明(s). APK。(重要的是:只有当你直接从GooglePlayStore下载时,“应用程序签名谷歌Play”才有效!)
  4. APK被上传到α/β分布频道(以前-作为草稿)到开发人员控制台至少一次。(需要一些时间~ 2 h-24h)。
  5. IAB 产品发布和它们的状态设置为活跃的
  6. 添加测试帐号在开发控制台。

测试要求:

  1. 测试APK将同样versionCode上传到开发人员控制台。
  2. 测试APK是签署,其中相同的证书(年代)是上传到dev.console的。
  3. 测试帐号(不是developer) -是设备上的主要帐户。(根据@MinosL注释,主帐户可能不需要)
  4. 测试帐户已被选中作为测试器,它是链接到有效的付款方式。(@Kyone)

p.s.: 使用发布证书进行调试: https://stackoverflow.com/a/15754187/1321401 (Thnx @dipp用于链接)

p.p.s.:很久以前就想列这个清单了。

Thnx @zlgdev@Kyone@MinosL进行更新

与SO和其他网站上的许多答案和评论相反,你不需要使用从谷歌Play下载到测试设备上的产品alpha/beta版本进行初步测试(alpha/beta发布过程通常要花半天时间)。你也不需要从你的开发工作室加载和重新加载一个签名的apk到你的测试设备。

您可以调试初步谷歌播放应用程序计费服务使用调试应用程序,从您的开发人员工作室直接加载到您的测试设备通过ADB。如果您遇到的错误阻止了这一点,很可能是您在代码中做错了什么。尤其要密切注意SKU的CASE(产品id)及其格式(例如,如果您将APK加载为com.mydomain。My_product_id,请确保您尝试以这种方式购买它-提供相同的案例和域)。另外,要特别注意你的itemType -这应该是“inapp”或“subs”,分别用于应用程序购买或订阅中的托管/非托管。

根据Chirag Patel的建议,如果您已经正确建立了您的账单代码,在初步测试期间使用android.test.purchased Sku(产品ID)执行所有测试。在整个计费操作中检查此ID,以便通过签名、令牌和有效负载检查,因为谷歌测试系统不提供此数据。此外,为您的测试产品之一提供这个ID,以测试它的购买、解锁/加载和整个模式的显示。要清除购买,只需消耗它,传递相同的Sku和一个这样格式化的令牌字符串-没有其他字段相关:

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

一旦您完成了这个阶段的测试,就可以使用alpha/beta产品进行半实时测试。创建一个谷歌组(本质上是一个邮件列表),将测试用户的电子邮件添加到其中,并添加/邀请这个组在此阶段测试你的设备(在应用程序谷歌开发者列表的“APK”部分执行)。购买将被模拟,但不实际收费-但是要清除和重新测试购买,谷歌表示您必须从谷歌钱包中退款。这是唯一一个需要使用alpha/beta负载和测试用户的耗时过程的测试阶段。

我的问题是,我试图用调试检查它。密钥库,我是说在eclipse中运行它。我将它与我在alpha模式下发布的密钥存储库一起导出(在您可以测试它之前必须发布它)。把它安装在我的手机里,然后我就可以正常测试了。

如果你想调试IAB,你需要做的是:

  1. 提交到谷歌使用manifest上的IAB权限播放你的应用版本:

    < / p >

  2. 在谷歌上添加一个产品到你的应用:管理应用内计费

  3. 配置Eclipse使用签名的密钥库

让我补充一下发生在我身上的事,也许能帮到别人。

这主要是由于签约。

由于我已经在Project结构中添加了签名细节,所以我认为每次运行时,都安装了期望的签名apk。但是选择了“调试”构建类型。

下面的修复为我解决了问题。

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

当你在上传apk后添加了应用内购买,但你还没有在play store中发布应用(alpha, beta和产品)时,也会出现这个问题。

这基本上意味着,在你将apk发布到Play商店后(alpha, beta和成品),你必须添加应用内购买。否则你将无法购买或查询应用内购买。

我也遇到了同样的问题,在我读到DZDomi的帖子之前,问题没有解决。突然发现在谷歌开发人员控制台中有一个设置需要启用。在“In app purchases”部分,你的产品有一行,最右边是它的状态。它应该是活跃的!

这里没有提到的另一个原因是,你需要在真实的设备上进行测试。 随着模拟器变得越来越好,这是一个很容易犯的错误。< / p >

最近谷歌对他们的系统进行了更改,因为你已经上传了至少一个APK到你的控制台,你可以用你的应用程序测试你的应用内请求,使用任何版本代码/号码。

交叉引用链接

配置gradle为调试版本签名。

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

如果你从2018年开始在这里,你需要直接从Play Store下载APK并安装“衍生”APK。也许是因为谷歌的Play Store有一个功能“谷歌Play的应用签名”。

解决方案

在play store上传应用后请稍等,因为谷歌需要一段时间来更新应用版本。它会起作用的!

在旧的开发控制台:

SettingsAccount detailsLicense Testing→Gmail帐户测试访问和键入这里您的帐户

在新的开发控制台:

SetupLicense Testing→输入你的Gmail账号,点击“Enter”,然后点击“Save”。

谷歌Play License testing . >

2021年结论

对于所有关心调试的人,你可以在调试模式下运行、调试和测试代码

下面是你如何测试这个过程:

(当然,这取决于您已经添加并激活了您的产品,并且您的代码已经准备好与这些产品集成)

  1. com.android.vending.BILLING添加到清单中
  2. 上传丹共签署了到内部测试
  3. 添加许可证的测试人员 (P控制台->设置→许可证的测试) -如果你在你的设备上使用多个帐户,你不确定使用哪个,只需将它们都添加为测试者。
  4. 像往常一样,从Android Studio运行应用程序(*应用程序应该具有与您刚刚上载到内部测试的应用程序相同的版本代码)

我做了上面的事情,它工作得很好。

如果你想集成另一个没有发布的应用程序,但与已部署的应用程序具有相同的id、版本代码和版本名,那么不要忘记编辑appname。iml文件版本在扑动应用程序,因为我坚持它与相同的错误。

如果所有的设置都是OK的,你仍然得到错误This version of the application is not configured for billing through Google Play. Check the help center for more information.

在Play Store中编辑您的应用内产品定价或停用并激活应用内产品。这将解决问题。

2022答:

这是测试调试/发布版本&如果应用程序是由Play Signing签署的(这意味着谷歌Play交付的应用程序的签名证书与使用Android Studio从您的机器安装应用程序时的证书不同)。

检查以下步骤:

  1. 在谷歌播放控制台创建您的产品并激活它。
  2. 添加许可证测试人员(打开谷歌播放控制台->设置→许可证的测试)。添加android设备上列出的所有谷歌帐户。
  3. 上传签名应用到内部测试轨道(必须处于发布模式)。
  4. 使用测试链接来检查应用程序是否可以下载(确保上传到内部轨道的应用程序版本与您在调试模式下测试的版本匹配)。你需要花些时间才能看到最新上传的版本,所以我建议清空Play Store应用的缓存。
  5. 在Android Studio中以调试模式运行应用程序。(同样,应用版本和构建号必须与发布版本上的值匹配到内部轨道)。

我在两个不同的谷歌Play Console帐户(两个不同的应用程序)上进行了测试,它是有效的。