在InApp购买中获得此错误代码3有哪些可能性?

Raj*_*ddy 24 android in-app-purchase

我在我的应用程序中使用InApp V3代码进行应用内购买,我收到此错误,BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE并且error value :3当设备中没有Google帐户时.我想知道是否还有其他可能性来获取此错误,因为当我收到此错误时,我需要向用户显示一些数据弹出窗口.如果由于设备上没有Google帐户而导致此问题,我将显示包含相关文字的对话框.这是我正在使用的代码

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
    public void onIabSetupFinished(IabResult result) {              
        if (!result.isSuccess()) {
                // error here               
            return;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

这是错误 Error checking for billing v3 support. (response: 3:Billing Unavailable)

Car*_*les 35

正如我们可以直接在google提供的示例的IabHElper 设置代码中看到的,错误意味着:

"设备上无法使用结算服务."

你可以在这里看到错误的意思

Billing API version is not supported for the type requested
Run Code Online (Sandbox Code Playgroud)

这是应用内结算参考(IAB版本3),因此错误意味着设备上未安装IAB v3.

实际上这意味着用户有一个谷歌帐户,也可能是一个应用程序内的计费服务,但它没有最新版本.这种情况发生在旧设备中,并且用户从不更新任何内容,它用作可以看到旧的Market应用程序而不是Play应用程序的设备.

因此,您必须向用户显示的错误以及您必须执行的测试不是设备是否具有Google帐户,而是是否已安装并正确更新了Google Play服务.

更新:

如果你指望所有的库SDK的代码,谷歌提供的辅助类,唯一的地方,我们可以发现,正是在您所呼叫的功能:startSetup在的IabHelper

Intent serviceIntent = new Intent(
                "com.android.vending.billing.InAppBillingService.BIND");
        if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0)
                .isEmpty()) {
            // service available to handle that Intent
            mContext.bindService(serviceIntent, mServiceConn,
                    Context.BIND_AUTO_CREATE);
        } else {
            // no service available to handle that Intent
            mServiceConn=null;
            if (listener != null) {
                listener.onIabSetupFinished(new IabResult(
                        BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE,
                        "Billing service unavailable on device."));
            }
        }
Run Code Online (Sandbox Code Playgroud)

这意味着应用无法连接到设备中的服务,因为包管理器甚至都不知道它.这是唯一可以触发该错误的选项.什么意味着它无法连接到服务?这意味着其中之一:

  • 设备没有安装该服务.
  • 它有一个旧版本,因为我们知道最新版本的Play商店使用的是IAB v3.

因此,您的错误只能意味着其中之一,对您而言意味着您必须向用户显示"您没有安装Google Play服务,或者您必须更新它"的信息.并没有其他可能性或得到错误.

但是,如果您想让用户更轻松,您可以说他们需要将Google Play应用更新到最新版本.这将使一切都像一个魅力.

  • 这个答案是对的.如果设备上没有Google用户登录,则可能会出现错误3. (5认同)
  • 除了这个,还有其他可能得到这个错误吗 (2认同)

par*_*oel 17

用户从设备中删除其Google帐户后,也会收到此错误.


Bab*_*yan 6

使用任何帐户登录Play商店。

登录后,即使在Android Studio模拟器上也可以使用结算功能。


N S*_*rma 5

您的问题的BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE主要可能性是,在某些国家/地区仍然不允许像塞尔维亚和许多国家那样购买应用程序.

因此,Google Play不支持In App Purchase的国家/地区的任何用户都可以获得BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE.

这样用户手机上没有安装更新的Google Play服务的可能性就会降低,所以不要担心这种情况.