【问题标题】:Cancelling orders on Google Play IAB test purchases after June 20, 2016在 2016 年 6 月 20 日之后取消 Google Play IAB 测试购买的订单
【发布时间】:2016-11-02 22:59:46
【问题描述】:

我一直在使用 Google Play 应用内购买 (IAP),但最近(2016 年 6 月 20 日)。他们更新了 Payments Merchant Center,因此不再显示测试购买。我引用了最近给开发者的一封电子邮件:

“以前,一次性 IAP 的测试购买会生成订单 ID。从 2016 年 6 月 20 日开始,一次性 IAP 将不会生成订单 ID,也不会出现在 Merchant Center 中。”

我没有在链接中找到有关购买(不是订阅)的信息: https://developer.android.com/google/play/billing/billing_testing.html 该页面有一个“取消已完成的测试购买”,仅在订阅时才会出现。

我的问题是,如果测试购买没有出现在 Payments Merchant Center 中,我应该在哪里取消?

更新 - 来自 Google 支持的官方回答:

感谢您联系 Google Play 开发者支持。 我查了一下,Play开发者控制台目前不支持取消测试IAP。唯一的方法是消费 IAP 或等待 14 天的消费时间。

更新 2- 感谢 Mike 的以下回答,我插入了以下代码:

Purchase premiumPurchase = inventory.getPurchase(Constants.SKU_PRO);
if (premiumPurchase != null) {
    App.mHelper.consumeAsync(premiumPurchase, new IabHelper.OnConsumeFinishedListener() {
        @Override
        public void onConsumeFinished(Purchase purchase, IabResult result) {
            Log.d(TAG, "Test purchase is consumed.");
        }
    });
}

我只运行此代码来取消测试购买并再次调试完整的购买流程。

【问题讨论】:

  • 您是否将上述代码保留在您的生产版本中?还是您必须为 alpha/beta 测试版本添加/删除它?
  • 我不在生产/发布中运行此代码,它将取消真正的购买。我只在测试版中使用,在隐藏按钮中普通用户无法找到。
  • 啊,“在隐藏按钮中普通用户无法找到”。我希望 Chuck Norris 不是您的测试人员之一。他找到那个按钮。

标签: android google-play in-app-purchase


【解决方案1】:

我从 Android 开发者网站得到的信息是,如果是测试购买,它们会阻止购买流程达到您必须付费的程度。这样做更容易,因为 Google 确保您无需为测试购买付费。它会在 14 天内阻止他们。要执行此操作的帐户需要测试许可证,您可以从开发者控制台激活这些许可证。

因此,您不必取消它们,因为从技术上讲,您从未购买过任何东西,同时您可以测试购买某物时会发生什么。但商户中心从未收到请求。

编辑:

如果您要尝试直接取消并查看会发生什么,请进行实际购买并取消它。

【讨论】:

  • 是的,我在开发者控制台中添加了几个可以进行应用内购买的测试帐户。现在我正在测试购买时发生的几个程序。为了正确测试,我需要取消购买,再次购买并调试所有过程。 14天的等待并没有解决我的问题。几天前,我刚刚在 Payments Merchant Center 上点击了“取消订单”按钮,但现在我找不到“取消”或“退款”测试购买的方法。
  • 根据谷歌的说法,所有使用许可证进行的测试购买,所有这些都不会以付款部分的形式处理。据我所知,要测试取消,仅测试购买是不够的。但是,如果您进行真正的购买并取消它,它将产生与不花费任何费用相同的效果
  • 是的。进行真正的购买并退款购买将使我能够测试所有购买程序。但是应该有一个不涉及真实货币银行交易的解决方案,毕竟这是“测试购买”的目的,你应该能够测试所有的购买流程。您应该可以在 Google Play 中取消测试购买。我还没有找到方法。
  • 是的,但是如果谷歌突然停止支持你必须以其他方式来做
  • 如果我理解正确,问题是您想测试取消采购订单。由于您是开发人员,因此您想取消购买,再次进行购买并像以前一样调试所有过程。由于现在商家页面没有测试订单,您不能再取消测试订单。
【解决方案2】:

取消应用内购买的最简单方法是使用它。如果您使用 Google 提供的 IabHelper,您只需调用 consumeAsync 并传入购买。我维护了一个功能来消费应用程序的所有应用程序内产品;这本质上是一个用于测试的计费重置功能。

【讨论】:

  • 很好,这样我就可以取消测试购买了。它确实有效,非常感谢。
  • @Antonio。如果答案已回答您的问题,则应将答案标记为已接受。 meta.stackexchange.com/questions/5234/…
  • @powder366 问题中提供的代码完全符合我的描述。查看问题的“更新 2”部分。
  • 如何消费所有应用内商品?
【解决方案3】:

我迟到了,但这是从 Google 退款/取消应用内购买的最新方式。在您的 Google Play 控制台左侧菜单中有一个名为订单管理的菜单项。这会显示一个订单摘要,底部有一个蓝色的 REFUND 按钮。点击此处,选择退款原因并提交。

Explanation on official docs

【讨论】:

  • 我在开发者控制台中收到此消息:“所选订单因年龄、状态或您缺少必要的权限而无法退款”(或类似的翻译操作)我是该帐户的管理员,所以我不知道问题出在哪里。
  • 我也收到了上面的信息,有什么解决办法吗?
【解决方案4】:

这是一个最新的 Kotlin 代码,它将消耗您购买的所有商品,以便您再次购买。请注意不要在生产代码中使用它,因为这样做肯定会产生不良行为。

显然,您必须事先获得您的购买。

fun consumeAllTestPurchases(purchases: ArrayList<Purchase>) {
    purchases.value?.forEach {
        val consumeParams = ConsumeParams.newBuilder().setPurchaseToken(it.purchaseToken).build()
        billingClient.consumeAsync(consumeParams) { billingResult, _ ->
            if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
                var purchaseConsumed = true
            }
        }
    }
}

【讨论】:

    【解决方案5】:

    如果您使用与 TrivialDriveKotlin 类似的方式,我在此帖子中发布功能性答案https://stackoverflow.com/a/61141740/1568148

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 2021-01-17
      相关资源
      最近更新 更多