4

我有一个应用程序,其中包含4 Managed在应用程序内购买和使用应用程序计费API v3。采购工作正常。为了恢复购买,当我打电话给getPurchases(...)时,它不显示任何拥有的SKU。Android InApp购买:getPurchases返回空回复

以下是代码片段:

Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null); 
int response = ownedItems.getInt("RESPONSE_CODE"); 
alert("response " + response); 
ArrayList ownedSkus = ownedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST"); 
ArrayList purchaseDataList = ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST"); 
ArrayList signatureList = ownedItems.getStringArrayList("INAPP_DATA_SIGNATURE"); 
String continuationToken = ownedItems.getString("INAPP_CONTINUATION_TOKEN"); 

alert("ownedSkus " + ownedSkus); 
for (int i = 0; i < purchaseDataList.size(); ++i) { 
    String purchaseData = (String) purchaseDataList.get(i); 
    String signature = (String) signatureList.get(i); 
    String sku = (String) ownedSkus.get(i); 

    alert("PURACHSED ITEM " + i + " === " + sku); 

    // do something with this purchase information 
    // e.g. display the updated list of products owned by user 
} 

有没有人遇到过类似的事情?我错过了什么吗?

任何帮助表示赞赏!

+1

我有这个相同的问题。服务响应OK,INAPP_PURCHASE_ITEM_LIST和INAPP_PURCHASE_DATA_LIST都是空的。但是,如果我尝试购买一种产品,它会给我一个错误“您已经拥有这个产品”。 – Sisso

+0

我发布了我的答案,请看看。 –

+0

在我的情况下,我正在使用消耗品,并且购买了空购物和“已经拥有”的消息....无论如何,感谢您的回复,至少您填写了一个答案:P – Sisso

回答

6

我的客户给我的代码是由以前的开发人员编写的。在参考文档并检查源代码后,我确定了原因。

的文档说:

如果您使用的是第3版API,你也可以消耗管理你的应用程序中的项目。通常情况下,您可以实施多次购买物品的消耗(例如游戏币,燃料或魔法)。一旦购买,通过向Google Play发送消费请求,直到您消费该物品才能再次购买托管物品。

以前的开发人员实际上是consuming的购买,使它可以再次购买。由于我的InApp购买是Managed没有必要拨打consume

我删除了电话consume the product一切工作正常。

以下是文档中的link

+0

谢谢!你拯救了我的一天 – Mon