【问题标题】:Android In app billing getPurchases returns emptyAndroid In app billing getPurchases 返回空
【发布时间】:2014-05-17 14:46:12
【问题描述】:

目前我正在测试我的应用在应用计费中的应用。我正在尝试购买商品并测试签名验证等。当我需要再次购买商品时出现问题:我消费了购买但它仍然说我在尝试购买时拥有该产品,现在消费一次后getPurchases() 方法说我不拥有任何东西。我在这里做错了吗?它是 V3 API 中的错误吗?如果我不能从我的应用中消费购买,我可以从其他地方消费吗?

消费购买:

try {
    //Get purchases and consume them all                
    Bundle b = mac.service.getPurchases(3, package, "inapp", null);
    ArrayList<String> datalist = b.getStringArrayList("INAPP_PURCHASE_DATA_LIST");
    for(String str : datalist) {
        JSONObject jpurchase = new JSONObject(str);
        String token = jpurchase.getString("purchaseToken");
        mac.service.consumePurchase(3, package, token);
    }

} catch (Exception e) {

    e.printStackTrace();
}

购买物品:

//Get buy intent and send it
PendingIntent buyIntent = mac.service.getBuyIntent(3, package, purchasepopup.id, //purchasepopup.id = item id
                                           "inapp", "").getParcelable("BUY_INTENT");

if(buyIntent != null) mac.startIntentSenderForResult(buyIntent.getIntentSender(),
                                       1002, new Intent(), 0, 0, 0);

【问题讨论】:

    标签: java android in-app-purchase in-app-billing


    【解决方案1】:

    这似乎是 Google API 中的一个错误,如果您在第一个意图结束之前同时启动多个购买意图,您可以多次购买该商品。当您尝试消费该项目时,它只会消费第一次(或最后一次)购买,其余的会卡在您的帐户中,但不会显示在查询中。

    如何解决:

    确保您的应用仅在用户不拥有该应用时才调用购买意图,并且仅发送一个意图。如果您有一个或多个项目卡在帐户中并想要删除它们,您可以
    1) 通过 Google Play 控制台从您的应用程序中删除有问题的项目并创建新项目(如果您已经在 Google Play 上发布了游戏并且有人购买了有问题的项目,这并不好)或
    2)直接从您的帐户中删除项目(我不知道该怎么做,但应该可以。如果您知道怎么做,请发表评论,以便我添加。)

    【讨论】:

    • 你如何解决这个问题?我现在处于getPurchaes 返回空但谷歌说“你已经拥有该项目”的位置。我该如何解决这个问题?
    • @swalkner 我不是 100% 确定,但我认为我必须从应用程序中删除错误项目并制作新项目。当然,还要修复代码,这样就不可能多次购买商品。
    • “从应用程序中删除错误项目”是什么意思?
    • 从您的 Google Play 开发者控制台中删除您遇到问题的项目。
    • 但是 Play 商店中已经有我的应用程序的一个版本;这意味着没有人可以再购买它了,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多