Android应用内结算退款

Ruu*_*kis 7 android in-app-purchase in-app-billing

这是我第一次在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);
Run Code Online (Sandbox Code Playgroud)

它的添加项目,即使它被退还,我不知道为什么会这样?退款项目是否有特殊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);
Run Code Online (Sandbox Code Playgroud)

但我怀疑示例应用程序中会出现错误的代码,所以我完全不确定我是否做得对!

我该怎么处理?请帮我!

Ofe*_*erR 5

历史表每次购买只有一个条目.这意味着退款后的购买将在退款后获得状态为"退款"的产品的单一历史记录.

在计算购买时,"退款"状态表明该商品已被购买.然后由开发人员决定用户是否应该访问退款产品.(在这个网站上有一个例子,一个开发商希望退还已经捐钱的人所做的购买,并希望他们继续使用该产品).

如果您不想要退款,您应该更改代码以增加购买数量,但不做任何退款.(不要将数量设置为零).

在应用程序产品有3个品种:

  1. 托管项目:Google不允许多次购买此类产品.总数量可以加起来为零或一个.

  2. 非托管项目:用户可以多次购买此类产品.总数量可以是零或更多

  3. 订阅:与托管项目相同.