0

我正在开发一个具有 IAB 的应用程序,当通过 OnConsumeFinishedListener 完成购买时,它将通过 SharePreference 保存用户已为附加功能付费(该功能不会被耗尽)。

用户可以再次购买相同的产品。

代码:

    // Called when consumption is complete
    IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() 
    {
        public void onConsumeFinished(Purchase purchase, IabResult result) 
        {
            Log.d(TAG, "Consumption finished. Purchase: " + purchase + ", result: " + result);
            if (mHelper == null) return;
            if (result.isSuccess()) 
            {
                Toast.makeText(InAppBillingActivity.this, "Thank you!!", Toast.LENGTH_SHORT).show();    
                if ((purchase.getSku().equals(ITEM_SKU10))) {countQ(10);}

        buy10Button.setEnabled(true);

            } 
            else 
            {
                // handle error
            }
            Log.d(TAG, "End consumption flow.");
        }
    };

    public void countQ(int Q) 
    {
        SharedPreferences settings = this.getSharedPreferences("MyApp",0);
        if (Q==10) 
        {

            SharedPreferences settings1 = this.getSharedPreferences("MyApp",0);
            SharedPreferences.Editor e1 = settings1.edit();
            e1.putBoolean("userpaid", true);
            e1.commit();                        
        }

问题:

我看到用户可以取消他们的购买。那样的话,通过Sharepreference保存用户已经付费购买的附加功能会有漏洞吗?用户可以先购买使sharepreference成为true然后取消购买订单吗?

这样,如何改进流程?consumed由于附加功能在 IAB 流程中,因此检查库存似乎是不可能的。

4

1 回答 1

1

您拥有可以多次购买的非消耗品似乎有点奇怪。这个想法通常是可以多次购买的物品是消耗品。

为回答您的问题,IAB 购买无法像应用程序购买那样被取消,15 分钟的退款窗口被删除,并且购买不可退款,除非他们与您联系并且您决定手动退款。

于 2013-10-14T14:36:46.493 回答