2015-05-04 81 views
0

我正在使用Google Play IABv3,并希望能够轻松测试我所做的事情(并不令人惊讶)。由于IABv3所有项目都进行了管理,并且由应用程序使用它认为耗材的项目。在Google Play中测试非易耗品IAP项目

我不确定测试非消耗性产品的预期工作流程是什么。为了能够多次测试购买流程,您需要能够删除以前的购买。然而,购买意图是非消耗性的,所以我们显然不希望添加任何消耗它的代码(因为它可能意外地漏过并且删除真正的用户购买)。

我想通过购买清算测试用户帐户的一些方法,我怀疑是可能的,因为没有“真正的”测试用户。

建议如何做到这一点?

回答

1

您可以使用测试产品ID而不是实际项目。请记住只在调试版本中使用它。

https://developer.android.com/google/play/billing/billing_testing.html

android.test.purchased

当您的应用内结算请求与 这个产品ID,谷歌播放回应,仿佛你成功 购买的物品。该响应包含一个JSON字符串,其中包含 假购买信息(例如,伪订单ID)。在一些 的情况下,JSON字符串被签名并且响应包括 签名,因此您可以使用这些响应来测试签名验证实现 。

android.test.canceled

当你使用这个产品ID,就好像 购买被取消了谷歌播放响应的应用程式 结算请求。当订单处理过程中遇到错误 (例如无效信用卡),或者您在取消用户订单之前取消订单时,可能会发生这种情况。

android.test.refunded

当 您使用这个产品ID提出应用内结算请求,谷歌播放 响应,就好像购买是退还。通过Google Play的应用内结算服务启动的退款不能为 。退款必须由您(商家)发起。在您通过Google电子钱包商家帐户处理退款请求 后,退款消息会通过Google Play发送给您的应用程序 。只有当Google Play 从Google电子钱包收到已退款的通知时,才会发生这种情况。对于 有关退款的更多信息,请参阅处理IN_APP_NOTIFY消息 和应用内结算定价。

android.test。item_unavailable

当你使用这个产品ID提出应用内结算请求,谷歌播放 响应,好像被购买的商品在 应用程序的产品列表中没有列出。

+0

这不起作用,因为“android.test.purchased”被视为被管理产品,这意味着您需要在再次测试之前消耗。当然,你可以添加一个if语句直接在购买时使用它,但这会产生许多不同的不需要的副作用。 – alaeus

+0

@alaeus所以最好的解决方案是添加代码以仅在调试版本中使用这些项目,并在真实产品ID上测试您的应用程序。您可以根据构建类型/风格创建一个类的多个不同实现。调试版本中的一个会消耗项目,但发布版本在调用其方法时不会执行任何操作。 – tomrozb

+0

这似乎很容易出错,因为它只能由开发人员使用,或让测试人员不使用发布版本。另一个解决方案是制作一个单独的未发布的应用程序(使用相同的ID),用于消费所有购买。虽然这感觉过度。 – alaeus