InAppBilling v3 IabResult响应代码BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED

时间:2015-07-21 07:55:55

标签: android in-app-purchase in-app-billing in-app

按照开发者网站上的文档,我最近在我的应用中实现了InAppBilling v3。我已经使用了 TRIVIAL DRIVE 示例中提供的utils包中的类。

我面临的问题是,如果用户已经在另一台设备上再次启动purchse流程时购买了应用内商品,则播放商店对话框会显示项目已经拥有,但 IabResult 与常量 IabHelper.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED 不匹配。返回的响应代码实际上是IabHelper类中的错误代码之一(-1005用户已取消)。

我真的很想知道如何获得实际的响应代码而不是错误代码。任何帮助,将不胜感激。

以下是回调代码

'/'

1 个答案:

答案 0 :(得分:4)

我终于设法在 IabHelper 代码中找到了问题,所以只要在 handleActivityResult Activity.RESULT_CANCELED 结果代码,就会发生这种情况。 >方法所有此类案例的 IabResult 均由用户取消(-1005)修复,无论原因是什么。因此,为了获得正确的实际响应代码,请在 handleActivityResult

中替换以下代码
 else if (resultCode == Activity.RESULT_CANCELED) {
        logDebug("Purchase canceled - Response: " + getResponseDesc(responseCode));
        result = new IabResult(IABHELPER_USER_CANCELLED, "User canceled.");
        if (mPurchaseListener != null) mPurchaseListener.onIabPurchaseFinished(result, null);
    }

用这个

 else if (resultCode == Activity.RESULT_CANCELED) {
        logDebug("Purchase canceled - Response: " + getResponseDesc(responseCode));
        result = new IabResult(responseCode, null);
        if (mPurchaseListener != null) mPurchaseListener.onIabPurchaseFinished(result, null);
    }

希望它能节省一些人的时间