在InApp购买中获得此错误代码3的可能性有多大?

我在应用程序中使用InApp V3代码进行应用程序内购买,如果Google帐户在设备中不可用,则会收到此错误BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLEerror value :3 。 我想知道是否有任何其他可能性得到这个错误,因为当我得到这个错误,我需要显示一个popup窗口给用户一些数据。 如果这是由于Google帐户在设备上不可用造成的,我将显示相关文本的对话框。 这是我正在使用的代码

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

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

Solutions Collecting From Web of "在InApp购买中获得此错误代码3的可能性有多大?"

正如我们在google提供的示例的IabHElper 的设置代码中直接看到的那样,错误的意思是:

“设备上的帐单服务不可用”。

正如你可以在这里读到错误的意思

 Billing API version is not supported for the type requested 

这是应用内结算参考(IAB版本3),所以错误意味着IAB v3没有安装在设备上。

其实这意味着用户有一个谷歌帐户,也可能是一个应用内结算服务,但它没有最后一个版本。 这种情况发生在旧设备上,而用户从不更新任何内容,因此用于设备,您可以在这里看到旧的Market应用程序,而不是Play应用程序。

所以,你必须向用户显示错误,而你必须执行的testing不是如果设备有谷歌帐户,但如果它有谷歌播放服务安装和正确更新。

更新:

如果您查找所有库SDK中的代码以及google提供的帮助程序类,那么我们唯一可以在您正在调用的函数中find的地方: IabHelper类的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.")); } } 

这意味着应用程序无法连接到设备中的服务, 因为包pipe理器甚至不知道它 。 那是唯一可以触发这个错误的选项。 而这意味着它不能连接到服务? 这意味着其中之一:

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

所以,你的错误只能是其中的一个,对于你来说意味着你必须向用户显示一个信息,比如“你没有安装谷歌播放服务,或者你必须更新它”。 并没有其他的可能性或得到这个错误。

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

用户从设备中删除他们的Google帐户后,也会收到此错误。

您的问题BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE主要可能性是,在一些国家,仍然不允许像塞尔维亚和许多国家在应用程序内购买。

因此,来自Google Play不支持的国家/地区的任何用户在App Purchase中,您将获得BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE

如果用户没有更新安装在手机上的Google Play服务,那么这个机会就会减less,所以不要担心这种情况。

试试这个黑客

删除播放应用程序的caching,数据和更新,重新启动播放应用程序应该工作! 或尝试最新的更新(如果它是固定的)

供参考:

请记住:

  • IABv3内置于Google Play服务中,因此需要更新Play服务apk。

  • V2内置于Play商店客户端本身。 caching/ EULA问题与IAB没有特别的关系,它与设置Play服务有关(对于大多数用户而言,希望caching部分是不必要的)。

  • 在这个过渡时期,Play服务必须在应用程序利用之前进行更新是一件好事,但我认为大多数人都会认为它比等待操作系统升级更好。

看到这个参考: 错误报告 , G +后

有时,如果您尚未使用Google帐户validation您的设备,可能会收到此错误。

对于任何仍然面临这个问题的人来说,威廉姆斯说,在大多数情况下,你的国家不支持iab。 您可以使用VPN来使其工作。