IabResult:设备上无法使用结算服务。 (回复:3:结算不可用)

时间:2013-04-08 21:38:22

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

我正在尝试使用应用内结算:

mIabHelper = new IabHelper(this, BILLING_KEY);
        mIabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            @Override
            public void onIabSetupFinished(IabResult result) {
                if (!result.isSuccess()) {
                    Log.d(TAG, "Problem setting up In-app Billing: " + result);
                }
            }
        });

得到错误:

Problem setting up In-app Billing: IabResult: Billing service unavailable on device. (response: 3:Billing Unavailable)

为什么呢?试图清除Play商店的缓存,对我不起作用。

14 个答案:

答案 0 :(得分:38)

如果没有太多信息,我们无法帮助你。相反,我会尝试为你做一份清单,因为你错过了一些东西:

1)您是否在模拟器上进行测试?应在设备上测试计费服务,但如果您在 真的要在模拟器上测试一下,确保模拟器安装了google play并进行设置。这非常重要!

2)您是否在清单中设置了正确的权限? (com.android.vending.BILLING)

3)如果您仍在测试该应用程序,您是否从Playstore获得了测试应用程序许可证,在您的sdk中导入了lvl,设置了许可证验证库? (您可以点击这里:setting up

4)关于你的活动onActivityResult你是否正确处理了活动结果?正如谷歌的例子所示,你应该这样做:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

// Pass on the activity result to the helper for handling
if (!inappBillingHelper.handleActivityResult(requestCode, resultCode, data)) {
    super.onActivityResult(requestCode, resultCode, data);
}
else {
    Log.i(TAG, "onActivityResult handled by IABUtil.");
}
}

还有更多信息可能很有用,比如你在模拟器或设备上测试,设备名称,android版本等。

答案 1 :(得分:6)

此错误表示您已连接到设备上的应用内结算服务,但该服务不支持IAB版本3.可能是您设备的版本Google Play仅支持IAB版本2。您的设备上运行的是什么版本的Google Play?

您的Google Play版本是否正常运行(例如,您可以打开Goog​​le Play商店)吗?有时,如果设备上的日期已关闭,或者存在其他问题,Google Play本身可能会向南移动。

最后,你的logcat输出中有什么?如果您提供了更多详细信息,那么提供帮助会更容易。

答案 2 :(得分:4)

我在安装应用程序之前遇到了这个错误,然后我注册了所有内容并设置了Google Play商店。一旦我设置了Google Play商店帐户,错误就会消失。

答案 3 :(得分:3)

对于这个版本,版本2.0的文档实际上比3.0更有用,即使我使用版本3.0的结算。

以下是2.0如何描述响应代码3:

  

表示因为API_VERSION而无法使用应用内结算   您指定的内容未被Google Play应用 或<   用户没有资格进行应用内结算 (例如,用户   居住在禁止应用内购买的国家/地区。

对我来说,我必须先在手机上设置测试Google帐户,然后再进行测试。我忘了那一步。有一次我做了那件事就为我修好了......

在此处查找服务器响应代码:

http://developer.android.com/google/play/billing/v2/billing_reference.html

http://developer.android.com/google/play/billing/billing_reference.html

答案 4 :(得分:3)

我发现要修复的问题,请使用您的LuckyPatcher尝试root,打开config Toggles - &gt;禁用结算。

enter image description here

答案 5 :(得分:2)

擦拭帮助了我。奇怪的错误。

答案 6 :(得分:2)

当我从手机中删除所有Google帐户时,我确实遇到了此错误(因此擦除了修复程序,因为擦除后您可能会在重新启动手机后设置帐户)。

我添加帐户后,我没有看到此错误。

相关问题What are the possibilities to get this error code 3 in InApp purchase?

答案 7 :(得分:1)

有同样的问题。

我的设备已植根并且使用较旧版本的Google Market进行了ROM,并且没有自行更新。 您可以通过在AppManager中查看来验证您的市场/游戏版本。

我实际上决定使用其他设备,但我想我必须找到升级市场/播放版本的方法。

答案 8 :(得分:1)

我从擦除Google Play缓存中收到此错误。您必须重新打开Goog​​le Play应用并在IAB再次运行之前接受这些条款。

答案 9 :(得分:0)

这是因为当前登录设备的帐户未在Google Developer Console中注册。 要解决这个问题, 1.转到您的Google Developer Consol 2.在帐户明细选项卡中,在“具有测试访问权限的Gmail帐户”中输入电子邮件地址(位于设备中),然后按顶部的保存按钮。

多数民众赞成。

答案 10 :(得分:0)

在我的情况下,我为serviceIntent.setPackage(“com.android.vending”)设置了不同的值;来自IabHelper。请确保保留此值

答案 11 :(得分:0)

我有同样的错误然后注意到我的手机处于飞行模式!连接恢复后,我很高兴。

答案 12 :(得分:0)

<强> IabHelper.java

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");

如果无法将action和packageName正确指定为IInAppBillingService.aidl,则会出错。

答案 13 :(得分:0)

提出了解决方案。

尝试以下3个步骤:

  1. 清除Google Play应用和Google Play服务应用的缓存。
  2. 删除IInAppBillingService.aidl文件。
  3. 从sdk文件夹中再次复制上述文件并将其粘贴到我的应用程序中的aidl文件夹中。
  4. 当我们将aidl文件从一个项目复制到另一个项目时,通常会发生此问题。