这是我第一次在Android应用中实施应用内结算,并且我直接从guideline拿走了大部分代码,并且所有事情都完全忘记了,直到我想退款。示例应用程序已经退款实施,但以一种奇怪的方式!退款收到应用程序作为购买但退款的状态,这是完全可以理解的,但原始来源是这样的:Android应用内结算退款
// Count the number of times the product was purchased
while (cursor.moveToNext()) {
int stateIndex = cursor.getInt(2);
PurchaseState state = PurchaseState.valueOf(stateIndex);
// Note that a refunded purchase is treated as a purchase. Such
// a friendly refund policy is nice for the user.
if (state == PurchaseState.PURCHASED || state == PurchaseState.REFUNDED) {
quantity += 1;
}
}
// Update the "purchased items" table
updatePurchasedItem(productId, quantity);
其添加项目,即使是退款,并且我不知道这是为什么?退款的物品是否有特殊的身份证或我缺少什么?我只用测试产品试过这个,所以我不知道。
updatePurchasedItem方法去除表项,如果数量为0,这似乎是完全正确的,所以我改变了我的代码,这
while (cursor.moveToNext()) {
int stateIndex = cursor.getInt(2);
PurchaseState state = PurchaseState.valueOf(stateIndex);
// Note that a refunded purchase is treated as a purchase. Such
// a friendly refund policy is nice for the user.
if(Consts.DEBUG)
Log.v(TAG, state == PurchaseState.PURCHASED ? "purchase" : "refund");
if (state == PurchaseState.PURCHASED) {
quantity += 1;
} else if(state == PurchaseState.REFUNDED) {
quantity = 0;
}
}
// Update the "purchased items" table
updatePurchasedItem(productId, quantity);
,但我怀疑有可能是错误的代码中的示例应用程序,所以我完全不确定如果我做得对!
我该如何处理?请帮帮我!
它可能只是一个错误。数量变量是衡量项目类型的总购买量还是所有购买量(包括“退款”类型)?如果它是一个错误,我不会感到惊讶,因为Android Developer网站上存在的订阅示例没有调整就无法正常工作。 – BDFun 2012-07-11 12:33:52
数量是当时购买的物品数量(我不认为它甚至可能一次购买多件物品),并且由于某种原因,即使物品退还,它也会提高数量。 updatePurchasedItem删除条目,如果它接收到数量为0的产品,这应该表示退款据我所知,因为它不使用状态数据的任何地方。你可以查看这里的例子http://developer.android.com/guide/google/play/billing/billing_integrate.html#billing-download – Ruuhkis 2012-07-11 12:40:05