首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法购买项目,错误响应:7:项目已拥有

无法购买项目,错误响应:7:项目已拥有
EN

Stack Overflow用户
提问于 2016-02-28 17:02:22
回答 2查看 2.5K关注 0票数 1

当我再次尝试购买商品时,会出现以下错误。请不要将此作为副本关闭。我知道在堆栈溢出中有很多这样的问题,但似乎都没有帮助。请参考我的代码。

代码语言:javascript
复制
 public class BtnListener implements View.OnClickListener
{
    // On-click event handler for all the buttons
    @Override
    public void onClick(View view)
    {
        switch (view.getId())
        {

            case R.id.TwoSeconds:
                mHelper.launchPurchaseFlow(TimeBoosterActivity.this, ITEM_SKU, 10001,
                        mPurchaseFinishedListener, "2");
                break;
        }
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode,
                                Intent data)
{
    if (!mHelper.handleActivityResult(requestCode,
            resultCode, data)) {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
        = new IabHelper.OnIabPurchaseFinishedListener() {
    public void onIabPurchaseFinished(IabResult result,
                                      Purchase purchase)
    {
        if (result.isFailure()) {
            // Handle error
            return;
        }
        else if (purchase.getSku().equals(ITEM_SKU)) {
            consumeItem();
            //buyButton.setEnabled(false);

        }

    }
};

public void consumeItem() {
    mHelper.queryInventoryAsync(mReceivedInventoryListener);
}

IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener
        = new IabHelper.QueryInventoryFinishedListener() {
    public void onQueryInventoryFinished(IabResult result,
                                         Inventory inventory) {

        if (result.isFailure()) {
            Toast.makeText(getApplicationContext(), "Failed to consume item",
                    Toast.LENGTH_SHORT).show();
        } else {
            mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU),
                    mConsumeFinishedListener);
        }
    }
};

IabHelper.OnConsumeFinishedListener mConsumeFinishedListener =
        new IabHelper.OnConsumeFinishedListener() {
            public void onConsumeFinished(Purchase purchase,
                                          IabResult result) {

                if (result.isSuccess()) {
                    String getSeconds=purchase.getDeveloperPayload();
                    SharedPreferences saveTwoSeconds=getSharedPreferences(getSeconds, Context.MODE_PRIVATE);
                    //clickButton.setEnabled(true);
                } else {
                    // handle error
                    Toast.makeText(getApplicationContext(), "Failed to consume item",
                            Toast.LENGTH_SHORT).show();
                }
            }
        };

@Override
public void onDestroy() {
    super.onDestroy();
    if (mHelper != null) mHelper.dispose();
    mHelper = null;
}
EN

回答 2

Stack Overflow用户

发布于 2016-02-29 20:11:02

首先,你需要弄清楚为什么会出现这个错误(错误响应:7:物品已经拥有)

有一些常见的情况:

1你只是购买了itemA,还没有消费它;

2另一个人(与你使用相同的谷歌账号)只需购买此itemA

第一种情况:只需消费itemA,您就可以再次购买。

情况2:您需要重启或删除google play服务和play商店缓存。然后使用消费该itemA的同一个google play帐户。

在第二种情况下,itemA的回执信息没有存储在您的设备中。重启或删除google play服务和play商店缓存,向google商店发出应用内计费请求,以获取购买的收据信息。所以你不能一次又一次地消费它。

票数 0
EN

Stack Overflow用户

发布于 2016-02-29 20:28:01

我认为你的消费购买没有被调用,因为你在onActivityResult中的代码。

尝试使用以下代码

代码语言:javascript
复制
  @Override
  protected void onActivityResult(int requestCode, int resultCode,
                            Intent data){
  super.onActivityResult(requestCode, resultCode, data);
 if (requestCode == <Code you sent during launching purchase flow> || requestCode == <Code you sent during launching consume flow> )
     mHelper.handleActivityResult(requestCode,resultCode, data))
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35680576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档