应用内结算v3 - 请勿检测退款

时间:2012-12-13 14:10:57

标签: android in-app-billing google-checkout

我接受了Google的“应用内结算v3”培训。我买了一件物品,但我遇到了问题。

https://developer.android.com/training/in-app-billing/index.html

我已取消并退还购买但该应用程序检测到买入为真。我无法继续测试我的应用程序,因为我始终检测到购买该项目。

我在logCat中发现的唯一错误是下一个错误:

[3687] InAppBillingService.logResponseBundle:Bundle不包含响应代码

启动mHelper.queryInventoryAsync(mGotInventoryListener)后出现。

有什么想法吗?

4 个答案:

答案 0 :(得分:20)

P.S。 - 这表明退款需要时间才能更新

http://code.google.com/p/marketbilling/issues/detail?id=88#makechanges

但我不相信 - 我发现他们已经在设备上缓存购买数据,但24小时很长时间......

更新以便在我取消' test'后超过24小时添加交易,这些帐户仍然是许可!!

再次更新 - 36小时后该应用仍然获得许可。我卸载并重新安装,它仍然是STILL许可!!

更新了AGAIN! - 我出厂重置设备,登录,安装了应用程序,它是未经许可的......

和另一次更新 - Google的回复表明退款会自动处理'但最长可达72个小时。在设备上刷新 - 没有其他途径可以检测到退款,因此玩家可以免费获得3天的免费服务。如果他们退款 - 呃,好吧这是应用程序而不是App购买,但仍然,这似乎是一个BIT过度?

答案 1 :(得分:2)

在等了大约12个小时并尝试了这里和类似线程的所有建议之后,我仍然面临同样的问题。对我来说诀窍是以下adb命令:

adb shell pm clear com.android.vending

答案 2 :(得分:1)

您可以通过使用该项目轻松否定购买以进行测试。

使用Trivial Drive示例我在MainActivity.java中添加了以下代码,它将消耗"消费"应用程序启动时的高级升级:

        // Do we have the premium upgrade?
        Purchase premiumPurchase = inventory.getPurchase(SKU_PREMIUM);
        mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase));
        Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));

        // dss added for test: Consume the premium upgrade for test purposes.
        boolean testConsume = true;
        if (mIsPremium && testConsume) {
            Log.d(TAG, "NOT FOR PRODUCTION: We have a premium upgrade. Consuming it.");
            mHelper.consumeAsync(inventory.getPurchase(SKU_PREMIUM), mConsumeFinishedListener);
            mIsPremium = false;
        } //dss end add

作为奖励,当您消费升级时,您可以获得一个免费的四分之一气体储气罐,因为该样品将所有消耗量视为其他地方的汽油。搜索MainActivity for" Provisioning"找到哪里。

答案 3 :(得分:0)

我正在解决的方法是使用一段代码忽略我所做的具体购买。我在代码中有一个日志声明打印出购买信息,然后我在我的buyTimes应用程序中硬编码列表以忽略。这是一团糟,每次我想测试时我都要重新编译,但我还没有找到更好的方法。