【问题标题】:This version of the application is not configured for billing through Google Play此版本的应用程序未配置为通过 Google Play 计费
【发布时间】:2012-06-19 14:05:06
【问题描述】:

当我尝试使用应用内计费运行我的应用程序时,我收到错误消息:“此版本的应用程序未配置为通过 Google Play 计费。有关详细信息,请查看帮助中心”。

我已经在 Manifest 文件中获得了计费权限,并且我有一个已签名的 .apk 作为草稿上传到 Google Play,并且我还在我的手机上安装了同一个已签名的 apk。

关于如何解决这个问题的任何帮助?

【问题讨论】:

  • 我在真机上有这个问题,但在模拟器上没有。我在模拟器和设备上安装了相同的版本。我在模拟器和设备上都以同一用户身份登录。在设备上我得到了这个版本的应用程序未配置的计费错误,在模拟器上一切正常,并出现与测试卡的对话框。有什么区别?

标签: android apk in-app-billing google-play


【解决方案1】:

此错误可能由多种原因引起。

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

先决条件:

  1. AndroidManifest 必须包含“com.android.vending.BILLING”权限
  2. APK 在发布模式下内置。
  3. APK 使用发布证书签名。 (重要提示:“App Signing by Google Play”只有在您直接从 GooglePlayStore 下载时才有效!)
  4. APK 至少被上传到开发者控制台一次的alpha/beta 分发 频道(以前 - 作为草稿)。 (需要一些时间~2h-24h)。
  5. IAB 产品已发布,其状态设置为活动
  6. 已在开发者控制台中添加测试帐号

测试要求:

  1. 测试 APK 的版本代码与上传到开发者控制台的版本代码相同
  2. 测试 APK 使用 与上传到 dev.console 的证书相同的证书签名
  3. 测试帐户(不是开发者)- 是设备上的主帐户。 (可能不需要主帐户 - 根据@MinosL 评论)
  4. 测试帐户已选择加入作为测试人员,并且它与有效的付款方式相关联。 (@Kyone)

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

P.P.S:想上这个名单很久了。

感谢@zlgdev@Kyone@MinosL 获取更新

【讨论】:

  • 不要忘记确保您用于测试 IAB 的帐户已选择加入测试人员已经上传了一个版本;并且它与有效的付款方式相关联
  • 测试 IAP不是更容易吗?或者一般地测试事物..
  • 也值得注意;测试帐号不应与开发者帐号相关联(不应有权上传 APK)
  • 也值得注意;如果启用了“应用签名证书”,则我们无法使用本地 APK 进行真实购买测试,因为我们无法使用签名证书进行签名。 (我花了 3 个小时才知道)
  • 我已经成功测试了 1) 一个 签名的调试应用 2) 不是设备上的主帐户,所以这个过程谷歌 IAB 测试似乎没有上面提到的那么严格。
【解决方案2】:

啊,在尝试了几个小时后找到了解决方案。

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

【讨论】:

  • 哇,这严重吗?刚刚遇到了同样的问题。为了测试应用内计费,Google 要求我做的所有事情都做了,但仍然收到相同的回避错误消息。我想我将不得不拭目以待。但是,Google 真的希望我们的开发人员在每次需要更新应用程序以实现应用内计费时等待数小时吗?至少可以这么说,这对我来说似乎很不合适。
  • 您可以在连接到 Android Studio 时进行测试/在连接到调试器时运行吗?还是需要通过 USB 安装发布 apk?
  • 除了 Android 工具 > 导出签名项目...等,然后手动将 APK 复制到设备上,测试,...重复,还有更简单的方法来测试购买过程吗?我一定是错过了什么?
  • 说真的,我不能使用带有调试证书的应用程序和测试应用内计费?
  • 请注意,您可以在工作时直接从 IDE 使用调试版本。您只需将调试密钥库更改为与您的发布商店匹配的密钥库。有关如何操作的更多信息,请参阅此帖子:stackoverflow.com/questions/10886814/…
【解决方案3】:

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

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

【讨论】:

  • 你能告诉我,如果上传的版本是android:versionCode="1",手机是android:versionCode="2",可以吗?或者我必须更改我的apk google play?。
  • 您需要做的是将本地版本降低到“1”,使其与当前的实时版本匹配,至少暂时用于测试。
  • 看起来有 2 种常见的修复方法可以解决这个错误,具体取决于您的具体情况。就我而言,就是这个。
  • 谢谢,这就是问题所在。在我连接的设备上使用发布签名的 apk 进行调试很好。然后,更改了版本代码,它开始收到 1005 错误。哇!
  • @Anna 请注意,如果您使用 iabHelper,-1005 也是 USER_CANCELLED
【解决方案4】:

在旧的开发者控制台中:

Settings -> Account details -> License Testing -> 具有测试访问权限的 Gmail 帐户并在此处输入您的帐户

在新的开发者控制台中:

Setup -> License Testing -> 输入您的 Gmail 帐户,点击“Enter”并点击“保存”。

【讨论】:

  • 像魅力一样工作。
  • 您好,我的电子邮件已添加到许可证帐户中。我仍然收到错误
  • 特别注意hit 'Enter' 部分。我只是点击保存,电子邮件没有被添加到列表中。
  • 我永远无法用这个答案来报答你拯救我的生命、我的婚姻和我的理智。祝福你。
  • 这也适用于我,但我有一个担心。我如何确保在应用发布后这将起作用?
【解决方案5】:

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

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

如果您在应用项目中使用自己的草稿,则可以一路测试,但您需要付费,因此之后必须自行退款。

您不能使用用于 google play 开发控制台的同一 gmail 帐户购买商品。

【讨论】:

  • +1 从调试器运行使用调试证书。导出应用程序并创建新的公钥(并在开发者控制台中安装)后,只需通过电子邮件将 apk 发送给自己并从您的 gmail 收件箱安装它。
  • 如果我想尝试“android.test.purchased”,我是否要在我的代码和开发者控制台中更改 SKU?
【解决方案6】:

2021 年的结论

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

以下是测试流程的方法:

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

  1. com.android.vending.BILLING 添加到清单中
  2. 上传签名的apk到内部测试
  3. 添加许可证测试人员(Play console -> Settings -> License testing) - 如果您在设备上使用多个帐户,但不确定要使用哪个帐户使用,只需将它们全部添加为测试人员即可。
  4. 像往常一样从 Android Studio 运行应用程序(* 应用程序的版本代码应与您刚刚上传到内部测试的版本代码相同)

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

【讨论】:

  • 我永远无法用这个答案来报答你拯救我的生命、我的婚姻和我的理智。祝福你。
  • 也为我工作。我能够使用模拟器在我的颤振应用程序中测试应用程序购买。 (我在颤振中使用 in_app_purchase 库)
  • 不要忘记将 com.android.vending.BILLING 添加到您的 debug/AndroidManifest.xml 文件中。
  • 我跳过了第 1 步,它正在用于测试目的。我代表这篇文章做到了developer.android.com/google/play/billing/…
  • 漂亮,为我工作!非常好的解决方案。
【解决方案7】:

如果您从 2018 年开始,您需要直接从 Play 商店下载 APK 并安装“派生”APK。可能是因为 Google 的 Play Store 有一个“App Signing by Google Play”的功能。

【讨论】:

  • 哪个 APK?我正在使用 AIDL,我还需要这样做吗?
  • @ZhenLiu 我想不需要
  • 此外,该应用不能通过其他方式(即Android Studio)安装在设备上。从 Play 商店安装/更新会起作用,但 IAP 不会 - 你会收到 OPs 错误。
  • 我们如何调试这个?
【解决方案8】:

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

【讨论】:

    【解决方案9】:

    让我简单地补充一下发生在我身上的事情,可能会对某人有所帮助。

    主要是因为签约。

    由于我在项目结构中添加了签名详细信息,我在想每次运行时,都会安装预期的签名 apk。但是选择了构建类型“调试”。

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

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

    【讨论】:

      【解决方案10】:

      与 SO 和其他网站上的许多答案和 cmets 不同,您不必使用已从 Google Play 下载到您的测试设备的产品的 alpha/beta 版本执行初步测试(alpha/beta 发布过程经常吃半天)。您也不必从您的开发人员工作室加载并重新加载已签名的发布 apk 到您的测试设备。

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

      按照 Chirag Patel 的建议,只要您正确建立了帐单代码,请在初步测试期间使用 android.test.purchased Sku(产品 ID)执行所有测试。在您的计费操作中检查此 ID,以通过签名、令牌和有效负载检查将其传递,因为 Google 测试系统不提供此数据。此外,为您的其中一款测试产品提供此 ID 以测试其购买、解锁/加载和展示的整个过程。要清除购买,只需使用它,传递相同的 Sku 和以这种方式格式化的令牌字符串 - 没有其他字段相关:

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

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

      【讨论】:

        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

          有同样的问题,在我阅读 DZDomi 的帖子之前没有解决。突然想到谷歌开发者控制台中有一个设置需要启用。在“应用内购买”部分,您的产品有一行,最右边有一个状态。它应该是活动的!

          【讨论】:

            【解决方案13】:

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

            1. 提交给 google 以在清单上播放具有 IAB 权限的应用版本:

            2. 将产品添加到您在 google play 上的应用中:Administering In-app Billing

            3. 设置自定义调试密钥库签名:Configure Eclipse to use signed keystore

            【讨论】:

              【解决方案14】:

              最近 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
                          ...
                      }
                  }
              }
              

              【讨论】:

                【解决方案15】:

                2022 答案:

                这是针对调试/发布版本进行测试的,或者如果应用由 Play 签名签名(这意味着从 Google Play 交付的应用的签名证书与使用 Android Studio 从您的机器安装应用时的证书不同) .

                检查以下步骤:

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

                我在两个不同的 Google Play 控制台帐户(两个不同的应用程序)上进行了测试,它可以正常工作。

                【讨论】:

                  【解决方案16】:

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

                  【讨论】:

                    【解决方案17】:

                    如果您在上传 apk 后添加了应用内购买,但尚未在 Play 商店中发布应用程序(alpha、beta 和生产),也会出现此问题。

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

                    【讨论】:

                      【解决方案18】:

                      这里没有提到的另一个原因是您需要在真实设备上进行测试。 随着模拟器变得非常好,这是一个容易犯的错误。

                      【讨论】:

                        【解决方案19】:

                        解决方案

                        在将您的应用上传到 Play 商店后稍等片刻,因为谷歌需要一些时间来更新应用版本。它会起作用的!

                        【讨论】:

                          【解决方案20】:

                          如果您想与另一个未发布但具有相同 id、版本代码和已部署版本名称的应用程序集成,请不要忘记在 Flutter 应用程序中编辑 appname.iml 文件版本,因为我坚持同样的错误。

                          【讨论】:

                            【解决方案21】:

                            如果所有设置都正常,但您仍然收到错误This version of the application is not configured for billing through Google Play. Check the help center for more information.

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

                            【讨论】:

                            • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                            猜你喜欢
                            • 1970-01-01
                            • 2012-11-22
                            • 1970-01-01
                            • 2012-12-03
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2020-05-23
                            相关资源
                            最近更新 更多