我正在尝试使用应用内结算:
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商店的缓存,对我不起作用。
答案 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版本是否正常运行(例如,您可以打开Google 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;禁用结算。
答案 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缓存中收到此错误。您必须重新打开Google 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个步骤:
当我们将aidl文件从一个项目复制到另一个项目时,通常会发生此问题。