这是我第一次在Android应用中实现应用内结算,并且我从guideline直接获取了大部分代码,所有内容都完全忘记,直到我想到退款。示例应用程序已经实施了退款,但是以一种奇怪的方式!退款是在应用程序上收到的,但退款状态完全可以理解,但原始来源如下:
// 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);
它的添加项目,即使它被退还,我不知道为什么会这样?退款项目是否有特殊ID或我缺少什么?我只用测试产品试过这个,所以我不知道。
如果数量为0似乎完全正确,则updatePurchasedItem方法从表中删除条目,因此我将代码更改为此
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);
但是我怀疑示例应用程序中会出现错误的代码,所以我完全不确定我是否做得对!
我应该如何处理?请帮帮我!
答案 0 :(得分:5)
历史记录表每次购买只有一个条目。这意味着退款后的购买将在退款后获得状态为“退款”的产品的单一历史记录。
在计算购买时,“退款”状态表明该商品已被购买。 然后由开发人员决定用户是否应该访问退款产品。 (这个网站上有一个例子,想要退还已经捐款的人购买的商品,并希望他们继续使用该商品。)
如果您不想要退款,您应该更改代码以添加购买数量,但不做任何退款。 (不要将数量设置为零)。
在应用程序产品中有3个品种:
托管项目:Google不允许多次购买此类产品。总数量可以加起来为零或一个。
非托管项目:用户可以多次购买此类产品。总数量可以是零或更多
订阅:与托管项目相同。