我已经在Android SDK的Google附加内容中调整了play_billing
示例,以使用我自己的应用包名称和公钥。我能够通过应用程序购买托管项目和订阅。
但是,当我调用诸如Inventory.getAllPurchases()
之类的方法时,即使重新启动并重新安装应用程序,也不会在用户的库存中返回订阅。
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inventory)
{
if(result.isFailure())
{
log.error("In-app billing inventory query failed: " + result);
return;
}
for(Purchase purchase : inventory.getAllPurchases())
{
log.info("Purchase: " + purchase.getSku());
}
}
输出:
Purchase: premium
您可以看到常规的一次性购买(premium
),但订阅购买(paid_app
)则不然。当我再次尝试购买订阅时,它说我已经买了它:
我已经尝试过我所知道的一切,但我无法理解这一点。由于常规项目按预期工作,我不明白为什么订阅不会被退回,除非我完全不依赖于它应该如何工作。
我已将APK上传为草稿。我在测试人员列表中的电话上有我的电子邮件地址;电子邮件不是我的开发者电子邮件。我的订阅项目是活动的。我正在测试的手机上有最新版的Google Play。
编辑:仍然没有运气。但是,这是另一个更新,以防它相关。当我进入谷歌钱包时,没有任何交易出现(表面上是因为它们是测试交易)。对于我在订阅时进入Google Play的测试用户帐户,它未列出。但它不会让我再次购买。因此,当我查询所购买的订阅时,不仅不会显示所购买的订阅,而且我也无法取消再次测试。
这里的任何想法都将不胜感激。
答案 0 :(得分:0)
当我遇到this answer时,偶然想出来并决定尝试在那里链接的更新代码。
显然,SDK管理器中列出的 play_billing
示例过时 ,util
包中的所有类都需要替换为来自this up-to-date project的util
个包。
在我用新的util
包替换旧的premium
包之后,我的订阅会与常规Purchase: paid_app
Purchase: premium
项一起列出!!!
{{1}}