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

Posted

技术标签:

【中文标题】测试应用内计费:“发​​布者无法购买此项目”【英文标题】:Testing in-app billing: "The publisher cannot purchase this item" 【发布时间】:2012-12-17 19:44:41 【问题描述】:

我的应用似乎已准备好在我的设备上对应用内购买过程进行“现实生活”测试。但是,我在 Play 商店中收到“出版商无法购买此商品”错误消息。 现在,我应该如何测试这个?我不想为了测试而使用虚拟帐户重新安装手机而丢失手机的配置。 在“设置”-“许可证测试”下的开发者控制台中,我在“具有测试访问权限的 GMail 帐户”下添加了我的电子邮件地址,但这并没有改变任何东西......也许我错过了一些简单的方法,但现在它感觉很混乱!

【问题讨论】:

【参考方案1】:

开发者不能从她自己那里购买任何东西。要进行全面测试,您需要在开发者控制台中创建一个测试帐户,然后将您的应用安装到作为主帐户的设备上。没有其他办法。 见http://developer.android.com/google/play/billing/billing_testing.html

【讨论】:

正如@richy 所说,添加测试帐户对我也不起作用。我尝试购买订阅。 我的问题是我的设备连接了几个 gmail 帐户,其中包括开发者帐户。一旦我删除它,它对我有用。 如果我也想以普通用户的身份安装应用程序,并希望看到购买工作正常,该怎么办?为什么我不能这样做? @AlikElzin-kilaka,文档说您不能使用测试帐户购买订阅:developer.android.com/google/play/billing/… 如果您希望以发布者身份测试应用功能,您现在可以发布促销代码并以开发者身份兑换。【参考方案2】:

这是一种尝试将所有要求放在一个答案中。这是对我有用的最简单的过程:

    设置一个新的 Gmail 帐户,或使用不是您的开发者帐户的现有 Gmail 帐户。 在 Google Play 开发者控制台的设置 > 帐户详情 > 许可证测试中列出测试帐户的电子邮件地址。 在您的设备上,转到“设置”>“帐户”,选择您的开发者帐户,点击三点菜单,然后选择“删除”以从设备中删除该帐户。您可以稍后再添加。 为您的应用构建一个签名的、发布的变体。 在 Play 商店中将应用作为 Alpha 版上传,发布,然后等待几个小时使其生效。 Or setup an internal test channel to get the update faster。 如果您的设备已经安装了应用程序的调试版本,则必须将其删除。或者使用this technique 并行运行调试版本和发布版本(但您仍然需要在第一次删除调试版本)。 将发行版下载到您的设备上。显然,您可以通过直接导航到应用程序 URL 从 Play 商店执行此操作,但每当我尝试此操作时,我都会收到“找不到项目”消息。我将应用上传到自己的服务器,然后从那里下载到设备。 将发行版下载到您的设备上。或者使用 this technique 从您的密钥库对 Android Studio 中的发布版本进行签名,然后从 Android Studio 将应用部署到您的设备上。 在您的设备上运行发布版本。如果 Play 商店中的 Alpha 版尚未激活,您将看到应用版本未配置为应用内结算的错误消息。如果 Alpha 版准备就绪,您将能够继续完成测试过程。 当您进入付款屏幕时,您必须输入真实的付款信息,即使您不会为您的购买付费。我选择使用现有的 PayPal 帐户,而不是将我的信用卡信息添加到我的 Google 测试帐户。

【讨论】:

在 Alpha 版应用上单击“发布”并不会真正在商店中公开发布,对吧?如果是,那是什么意思? 不,这不会公开发布应用程序。我不知道 alpha 应用程序还有什么其他用途。一定有办法将它发送给测试人员,但我没有探索。我不记得我尝试过的所有内容,但在这种情况下,我认为需要发布 alpha 来激活 IAP 项目。 感谢您简洁的回答!真的有助于总结这种混乱的过程。作为补充,尽管我要补充一点,一旦您在测试人员组中添加了 Gmail 帐户,请转到 play.google.com/apps/testingyour.package.name 接受邀请并从 Play 商店安装该测试人员可以看到的应用程序. 如果您不想删除主 Google 帐户,可以添加第二个用户进行测试。【参考方案3】:

同时,我通过将 SKU ID 更改为“android.test.purchased”(参见http://developer.android.com/google/play/billing/billing_testing.html)来帮助自己,这允许“某种程度”地浏览购买过程并尝试一下。

但是,在我看来,这不是一个顺利的解决方案,而且只是部分令人满意,因为开发人员看不到“真实”用户的所见所闻,而是从带有假名的黑盒子中接收到一些结果代码(它甚至是这样命名的)并且无法超越 Google Play 界面。

【讨论】:

如何重置购买这个特殊SKU ID?此外,我似乎总是收到 QueryInventoryFinishedListener 接口的 onQueryInventoryFinished 方法的错误。怎么会?【参考方案4】:

对于那些仍然被这个烦人的功能所困扰的人,有一个使用最新版本的 android (5+ Lollipop) 的解决方案。

简单的解决方案 1. 转到设置,然后向下滚动到“用户” 2. 添加新的测试用户。 3. 用这个用户打开应用

您现在可以与测试用户一起测试您是否在应用购买中。

【讨论】:

在 Android 7.0 上为我工作!对于我们这些使用我们的个人日常设备进行测试的人来说,可以轻松地在测试用户和您的普通用户之间切换。【参考方案5】:

我通过卸载应用程序、转到 Play 商店并切换到我的非开发者帐户并下载并安装应用程序来解决此问题。

【讨论】:

【参考方案6】:

总结我自己的陷阱:

在 Alpha 或 Beta 通道中上传您的应用 发布您的应用(以 Beta 或 Alpha 通道发布不会让除测试人员列表中的其他人看到您的应用) 将您的帐户添加到“测试人员”列表中 转到“测试人员”链接(类似于“https://play.google.com/apps/testing/”)并点击“参与”(我错过了) 发布您的应用内商品 构建应用的发布 (!) 版本并将其上传到设备上。

确保设备版本和市场版本由相同的发布密钥签名

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

【讨论】:

【参考方案7】:

您正在尝试使用将应用上传到商店时使用的同一帐户购买该商品。

如果您使用 abc@gmail.com 在 android 商店上传应用,然后尝试使用 abc@gmail.com 在该应用上进行购买,您将收到该错误。

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

底线:您不能自己购买。

【讨论】:

【参考方案8】:

我遇到了同样的错误,现在解决了我失败的两个主要原因:1。我没有激活应用内产品,意味着它们处于非活动模式2。如果要测试,必须添加 Beta 测试人员。

【讨论】:

【参考方案9】:

我已通过以下方式解决了此问题:1.使用签名的 apk 2。我没有激活应用内商品,表示它们处于非活动模式

【讨论】:

当您使您的产品处于非活动状态时,您是如何进行应用内购买的? 当我停用之前激活的应用内商品时,错误消息从“发布者无法购买此商品”变为“此商品不可购买”。至少活动/非活动变化立即发生,所以我不必浪费时间等待测试它。【参考方案10】:

我解决了这个错误

    使用签名的 apk 进行测试 sku 名称与应用内产品名称相同 应用内产品处于活动状态 应用必须发布状态显示

【讨论】:

【参考方案11】:

从 Eclipse 手动将 APK 安装到我的手机然后手动打开它时,我遇到了同样的问题。正确的程序是将其发送到 Google play 进行 alpha 测试,然后等待几个小时才能发布给您的 alpha 或 beta 测试人员,您当然必须管理、必须创建、必须让他们访问您的应用程序。几个小时后,开发人员将收到一封包含链接的电子邮件,以提供给他的测试人员。一旦发生这种情况,只需将其转发给您的社区。在您的手机中创建一个额外的 google 帐户(属于社区)并打开 gmail 并点击链接。它将引导您进入 google play,您将在其中自动下载应用程序作为测试人员。安装,买gas .. tada!!

【讨论】:

【参考方案12】:

我认为最好的方法是在没有 Google Play 应用内代码的情况下全面测试付费/免费版本的功能。仅在最后,添加应用程序代码以在免费或专业之间切换。将 APK 上传到 alpha 版本,并获得一个从未见过您的开发者帐户或应用程序本身的设备。使用可兑换代码安装和购买它。如果代码有效,那么实际付款应该是(付款方式不是您的代码库的一部分,它在 Google 方面)

【讨论】:

【参考方案13】:

我认为你得到这个结果的原因是因为你在开发环境中运行了应用程序。

要测试应用内结算,您需要对应用进行签名。 查看更多信息 here 和 here。

这确实很麻烦,并且会延长开发周期:(

【讨论】:

谁对答案投了反对票,请提供反馈,以便我和其他人可以更好地协作。谢谢。 我没有投反对票,但值得一票。 “Publisher cannot buy this item”表示发布者已经签署了apk。 确实需要在 --release 模式下对应用进行签名以测试应用内计费,但​​错误消息表明它已经签名,所以这不是问题。也许你应该删除你的答案,或者重写它?

以上是关于测试应用内计费:“发​​布者无法购买此项目”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中测试 Google Play 计费订阅(非应用内购买)

“找不到您尝试购买的商品” Android 应用内计费

更新后应用内计费不起作用 - Google 商店

尝试订阅产品时需要应用内计费 android 返回身份验证

添加应用内计费库时出错

如何将aidl文件添加到Android工作室(来自应用内计费示例)