“你已经拥有了这个项目”但是getPurchases是空的

时间:2014-09-05 22:29:47

标签: android in-app-billing

我昨天购买了订阅(不是Managed ProductUnmanaged Product)进行测试,我退回了自己,然后取消订阅。退款和取消后,当我致电:

m_billingService.getPurchases(3, m_context.getPackageName(), ITEM_TYPE_SUBS, null)

它将以购买状态0(有效/确定)返回我的购买。今天当我调用相同的方法时,它什么都不返回。然而,当我尝试购买该商品时,Google Play商店会回复我已经拥有该商品的商品。

我已经重新启动了Android设备,清除了Google Play服务缓存并确保只在我的手机上激活了测试帐户(即我删除了我的Google开发者帐户)。

之前已经问过这个问题,但总是在产品的背景下而不是订阅。这些帖子的答案似乎是“消费”产品;订阅不会被消费。

2 个答案:

答案 0 :(得分:4)

我相当肯定你试图做的事情不可能像你想要做的那样。由于我不确定订阅长度,因此Google可能仍然是订阅的所有者,因为即使您发起退款,它仍会在剩余时间内保持有效。

这允许用户从购买中获得退款,但仍然可以接收服务。这将由应用程序所有者自行决定。如果您希望处理有效投诉的用户,并允许他们维持访问权限,直到您可以解决他们的问题或投诉,这可能是一个很好的策略。它还可以帮助最小化评级不佳的影响。

为了做你想做的事,你需要撤销订阅,这将立即终止它。在此调用之后,m_billingService.getPurchases()应该正常工作。

Documentation

答案 1 :(得分:2)

当您cancel和/或refund订购时,订阅不会立即终止 - 它会在到期时间内有效。

相反,您必须revoke购买订阅才能提供退款并立即终止订阅。

有关cancelrefundrevoke方法的详情,请参阅this section of the Google Play API Reference