在新的Android设备上重新安装付费订阅

时间:2013-11-15 23:40:59

标签: android in-app-billing subscription

我有一个inapp订阅。我正在尝试确保在相同或新的应用程序上重新安装应用程序将识别用户具有有效订阅。 “已拥有”的响应应该具有值“7”,这对于可消耗的被管理产品来说很好。但是,对于订阅,我没有收到“7”回复。消息也不同。对于托管的消耗品,消息为“已拥有的项目”,并带有“7”响应。对于订阅,消息为“您已拥有此项目”,没有“7”响应,IAB结果为“-1005:用户取消”。该订阅在Google电子钱包中处于有效状态,尚未取消。我相信,我会从警报框解雇中得到答复。

问题是,我如何识别对IABsetup的这种回应?我已经尝试过如果request.mResponse = 1,但这不起作用。我显然没有获得有用的订阅响应代码。在测试期间,我必须关闭调试才能上传.apk,因此更难以遵循。

为什么来自服务器的订阅响应与已拥有的项目的被管理产品响应不同?

我需要能够根据已经拥有的响应激活应用程序。

感谢。

1 个答案:

答案 0 :(得分:2)

我发现IabHelper.java有这个:

else if (resultCode == Activity.RESULT_CANCELED) {
        logDebug("Purchase canceled - Response: " + getResponseDesc(responseCode));        
        result = new IabResult(IABHELPER_USER_CANCELED, "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, "User canceled.");
        if (mPurchaseListener != null) mPurchaseListener.onIabPurchaseFinished(result, null);
    }

请注意从(IABHELPER_USER_CANCELED,“用户取消。”)更改为(responseCode,“用户取消”)

现在,responseCode正在传递给

public void onIabPurchaseFinished(IabResult result, Purchase info)

所以我可以确定响应是否取消了对话框并允许活动订阅重新安装并联系我的服务器。那时我正在对Google进行0Auth API调用,以验证安装和有效订阅。

可能有其他方法可以做到这一点,但这很有用。

希望这可以帮助世界上正在进行Android inapp订阅的3个人。