Android应用内购买设置不断返回 - 设备上的结算服务不可用。 (回复:3:结算不可用)

时间:2014-12-17 12:55:10

标签: android in-app-purchase in-app-billing

我正在尝试在Google Play商店中的应用中实施应用内结算功能。 对于运行应用程序的任何设备,我都会得到相同的结果。 (我在没有帮助的情况下阅读了教程和所有问题)

为了测试,我正在将已签名的apk上传到市场,并且我将每个结算设置结果响应保存在服务器上,因此我可以看到所有用户的结果。 (所有结果都相同 - 响应3 )。所以我知道这不是设备,位置,谷歌播放服务版本等问题。

我可以上传一些代码,但基本上我一直在使用这些教程,所以它很直接。

部分代码

清单中的权限:

 <uses-permission android:name="com.android.vending.BILLING" />

OnActivityResult:

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

    // Pass on the activity result to the helper for handling
    if (mHelper == null || !mHelper.handleActivityResult(requestCode, resultCode, data)) {
        // not handled, so handle it ourselves (here's where you'd
        // perform any handling of activity results not related to in-app
        // billing...
        super.onActivityResult(requestCode, resultCode, data);

这里我正在做一些与结算无关的其他事情

    }
    else {
        Log.d(TAG, "onActivityResult handled by IABUtil.");
    }
}

这就是我初始化结算助手的方式:

    private void InitBilling() {
        mHelper = new IabHelper(this, base64EncodedPublicKey);
    isBillingAvailable = false;
    // perform the binding by calling the bindService method
    Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
    serviceIntent.setPackage("com.android.vending");
    bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);


    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
                // Oh noes, there was a problem.
                Log.e(TAG, "Problem setting up In-app Billing: " + result);

                return;
            }

            // Hooray, IAB is fully set up!
            Log.d(TAG, "In-app Billing is set up OK");
            isBillingAvailable = true;
            ArrayList<String> listOfItemsToCheck = new ArrayList<String>();
            // getting list of items..

            checkForPurchasedItems(listOfItemsToCheck);
        }
    });
}

是什么导致这种情况,我该如何解决这个问题? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

有很多情况可能导致此问题,因此您需要描述到目前为止您所做的事情。一些检查站:
- 您的清单中的权限是否正确 - 你在onActivityResult中处理游戏服务库的响应吗? - 您是否还在测试,所以您在开发者帐户的测试部分输入了帐户

通常,这表示设备上的API版本不匹配(如果您使用不同的设备,则不太可能)或者不允许用户使用它:

  

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

BTW:测试不适用于您自己的开发者帐户,但您需要注册测试帐户。