Android InApp Purchase:getPurchases返回空响应

时间:2013-09-21 04:44:34

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

我的应用包含4个Managed In App Purchase并使用In App Billing API v3。购买工作正常。为了恢复购买,当我拨打getPurchases(...)时,它不显示任何拥有的SKU。

以下是代码段:

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 个答案:

答案 0 :(得分:8)

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

文档说:

  

如果您使用的是版本3 API,则还可以使用应用程序中的托管项目。您通常会对可以多次购买的物品(例如游戏中的货币,燃料或魔法咒语)实施消费。购买后,在您通过向Google Play发送消费请求消费该商品之前,无法再次购买被管理商品。

之前的开发者实际上是consuming购买,这使其再次可用于购买。由于我的InApp购买时间为Managed,因此无需拨打consume

我删除了对consume the product的调用后,一切正常。

以下是文档中的link