2014-05-17 28 views
2

目前我正在测试我的应用程序的应用程序结算。我试图购买物品和测试签名验证等。当我需要再次购买物品时,问题就出现了:我消费了该物品,但仍然表示当我尝试购买时已拥有该产品,并且现在消费了购买后的一次getPurchases()方法说我没有任何东西。我在这里做错了什么?这是V3 API的错误吗?如果我无法从我的应用中购买消费品,我可以从其他地方消费吗?Android在应用程序结算getPurchases返回空

消费购买:

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); 

回答

2

看起来这是谷歌的API,在那里,如果你同时启动多个购买意图的错误的第一个结束,在你面前可以多次购买该物品。当您尝试使用该商品时,它只会消费第一次(或最后一次)购买,而其他商品则停留在您的帐户中,但不会显示在查询中。

如何解决:

确保您的应用只要求买入的意图,当用户不拥有它,并只能发送一个意图。如果您的帐户中有物品并且想要删除它们,您可以使用以下任一种方法:
1)通过Google Play控制台从您的应用中删除已锁定的物品并创建新的物品(如果您已经在Google Play上发布游戏,并且有人购买了一个有bug的项目)或
2)直接从您的帐户中删除项目(我不知道如何做到这一点,但应该有可能,如果您知道如何做到这一点,请发表评论,所以我可以添加它。)

+0

以及如何解决此问题?我现在的位置是getPurchaes'''返回空,但Google说“你已经拥有这个项目”。我该如何解决这个问题? – swalkner

+0

@swalkner我不是100%确定,但我想我必须从应用程序中删除bug,并制作新的。当然,修正代码,以便不可能多次购买物品。 – Hoxy

+0

你是指“从应用程序中删除bug的项目”是什么意思? – swalkner

相关问题