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

int*_*_32 24 android in-app-billing google-play

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

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);
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

并得到错误:

Problem setting up In-app Billing: IabResult: Billing service unavailable on device. (response: 3:Billing Unavailable)
Run Code Online (Sandbox Code Playgroud)

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

sok*_*kie 38

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

1)您是否在模拟器上进行测试?计费服务应该在设备上进行测试,但如果您真的需要在模拟器上进行测试,请确保模拟器已经安装并设置了Google Play.这非常重要!

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

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

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.");
}
}
Run Code Online (Sandbox Code Playgroud)

还有更多信息可能很有用,例如,如果您在模拟器或设备上测试,设备名称,Android版本等.


Car*_*arl 6

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

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

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


Gen*_*ene 5

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


int*_*_32 4

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