我的应用包含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
}
有没有人经历过类似的事情?我错过了什么吗?
感谢任何帮助!
答案 0 :(得分:8)
我的客户给我的代码是由前一位开发人员编写的。在参考文档并检查源代码后,我确定了原因。
文档说:
如果您使用的是版本3 API,则还可以使用应用程序中的托管项目。您通常会对可以多次购买的物品(例如游戏中的货币,燃料或魔法咒语)实施消费。购买后,在您通过向Google Play发送消费请求消费该商品之前,无法再次购买被管理商品。
之前的开发者实际上是consuming
购买,这使其再次可用于购买。由于我的InApp购买时间为Managed
,因此无需拨打consume
。
我删除了对consume the product
的调用后,一切正常。
以下是文档中的link。