应用内购买测试:“发布者无法购买此项目”

66

我的应用程序似乎已经准备好在设备上进行应用内购买测试了。然而,在 Play Store 中收到“发布者无法购买此项目”的错误消息。 那么,我该如何测试呢?我不想通过重新安装虚拟账户来测试而失去手机的配置信息。 在“开发者控制台”中的“设置”-“许可证测试”下,我将我的电子邮件地址添加到“具有测试权限的 GMail 帐户”下,但这并没有改变任何事情......也许我错过了一些简单的方法,但现在感觉非常令人困惑!

13个回答

43

正如 @richy 所说,为我添加一个测试账户也没有奏效。我尝试购买了一份订阅。 - AlikElzin-kilaka
5
我的问题是我将几个 Gmail 帐户连接到我的设备上,其中包括开发者帐户。一旦我把它移除了,它就能正常工作了。 - Whyser
6
如果我也想以普通用户身份安装该应用程序,并希望确认购买功能正常运作,为什么我不能这样做呢?请问有什么阻止的原因吗? - android developer
1
@AlikElzin-kilaka,文档说明你不能使用测试账户购买订阅:http://developer.android.com/google/play/billing/billing_testing.html#testing-purchases - arlomedia
1
如果您作为发布者想要测试应用程序功能,现在可以发放促销代码并作为开发人员进行兑换。 - sauce
显示剩余2条评论

21

以下是将所有要求放入一个答案的尝试。这是对我有效的最简单的流程:

  1. 设置一个新的Gmail帐户,或使用不是您开发者帐户的现有Gmail帐户。
  2. 在Google Play开发者控制台的“设置”>“帐户详细信息”>“许可测试”中列出测试帐户的电子邮件地址。
  3. 在设备上,转到“设置”>“帐户”,选择您的开发者帐户,点击三个点菜单,然后选择“删除”以从设备中删除该帐户。您可以随后再添加。
  4. 生成已签名的发布变体应用程序。
  5. 将应用程序作为alpha版上传到Play商店中,并发布它,等待几个小时使其生效。或设置内部测试渠道以更快地获得更新
  6. 如果您的设备已经安装了调试版本的应用程序,则必须删除该应用程序。或使用此技术并行运行调试和发布版本(但第一次仍需删除调试版本)。
  7. 从Play商店直接导航到应用程序URL可能会出现“找不到项目”的消息。我将应用程序上传到自己的服务器,然后从那里下载到设备。
  8. 在设备上下载发布版本。或使用此技术在Android Studio中从您的密钥库签名发布版本构建,然后从Android Studio部署应用程序到您的设备。
  9. 在设备上运行发布版本。如果Play商店中的alpha版尚未生效,则会显示一个错误,指出该应用程序版本未配置进行应用内购买。如果alpha版准备就绪,则可以通过测试过程。
  10. 当您到达付款屏幕时,您将不得不输入真实的付款信息,即使您不会为购买付款。我选择使用现有的PayPal帐户而不是向我的Google测试帐户添加信用卡信息。

点击“发布”按钮并不会真正将alpha应用程序公开发布在商店中,对吗?如果是这样的话,那它意味着什么? - natario
不,这并不会公开发布应用程序。我不知道alpha应用程序还有什么其他用途;肯定有一种方法可以将其发送给测试人员,但我没有探索过。我记不清我尝试过的所有内容,但在这种情况下,我认为发布alpha版本是必要的,以激活IAP项目。 - arlomedia
1
感谢您简明扼要的回答!真的很有帮助,总结了这个有点混乱的过程。此外,我想补充一点,一旦您将 Gmail 帐户添加到 Tester 组中,请访问 https://play.google.com/apps/testing/{your.package.name} 接受邀请并从 Play 商店安装应用程序,该应用程序将对此测试人员可见。 - Stephen Vinouze
如果您不想删除您的主要谷歌账户,您可以添加第二个用户进行测试。 - Mygod

14

同时,我通过将SKU ID更改为“android.test.purchased”(请参见http://developer.android.com/google/play/billing/billing_testing.html)来帮助自己,这允许我“有点像”走过购买流程并进行一些操作。

然而,我认为这不是一个很顺畅的解决方案,只能部分满足开发人员的需求,因为开发人员看不到“真正”的用户所看到和体验的内容,而只能从一个带有虚假名称(甚至被命名为这样)的黑匣子获得一些结果代码,并不能超越Google Play界面。


你如何重置这个特殊的SKU ID的购买?另外,我发现每次调用QueryInventoryFinishedListener接口的onQueryInventoryFinished方法时都会出错。为什么会这样呢? - android developer

6

对于那些仍被这个烦人的特性困扰的人,最新版本的Android(5+棒棒糖)提供了解决方案。

简单的解决方案: 1. 进入设置,然后向下滚动到“用户”。 2. 添加一个新的测试用户。 3. 使用此用户打开应用程序

现在,您可以使用测试用户测试应用内购买了。


在我的Android 7.0上运行良好!对于那些使用个人日常设备进行测试的人来说,它使得在测试用户和正常用户之间轻松切换变得容易。 - Magnus

4
我通过卸载该应用程序,前往Play商店并切换到我的非开发者帐户,然后下载和安装应用程序来解决了这个问题。

4

您正在尝试使用上传应用程序到商店时使用的相同帐户购买该物品。

如果您使用abc@gmail.com在Android商店上上传应用程序,并尝试使用abc@gmail.com购买该应用程序,则会出现该错误。

请尝试使用另一个Google Play商店帐户进行购买,例如在别人的手机上。

底线:您无法自己购买。


3

总结一下我自己的错误:

  • 把你的应用程序上传到 alpha 或 beta 渠道
  • 发布您的应用程序(在 beta 或 alpha 渠道发布不会使您的应用程序对除测试人员列表中的人以外的任何人可见)
  • 将您的帐户添加到“测试人员”列表中
  • 转到“测试人员”链接(类似于“https://play.google.com/apps/testing/< package_name>”),然后单击“参加”(这是我错过的一个步骤)
  • 发布您的应用内物品
  • 构建发布版本的应用程序并将其上传到设备上。
  • 确保设备版本和市场版本使用相同的发布密钥签名

  • 确保市场版本号不小于构建 gradle 中定义的版本号


0

我通过以下方式解决了这个错误:

  1. 使用已签名的 APK 进行测试
  2. SKU 名称与应用内产品名称相同
  3. 应用内产品处于活动状态
  4. 应用必须处于发布状态

0

我曾经遇到同样的错误,现在已经解决了,主要有两个原因导致我的失败:
1. 我没有激活应用内产品,也就是它们处于非活动状态
2. 如果你想进行测试,必须添加Beta测试人员。


0
我通过以下方式解决了这个问题:
1. 使用签名的apk
2. 我没有激活应用内产品,也就是它们处于非活动状态。

当您将产品设置为不活动状态时,为什么要进行应用内购买? - Halil
当我停用之前激活的应用内产品时,错误消息从“发布者无法购买此项目”更改为“此项目不可购买”。至少激活/停用更改立即发生,因此我不必浪费时间等待测试。 - arlomedia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接