帐单服务在设备上不可用.(回复:3:结算不可用)

Bon*_*ide 6 java android in-app-billing

我几天来一直在努力解决这个问题.我知道在SO上有很多关于同样问题的问题,但是我无法让它发挥作用.

我做了什么

  • 上传APK处于测试阶段
  • 创建了商家帐户
  • 添加了测试用户

AndroidManifest.xml中

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

MainActivity.java

public class MainActivity extends AppCompatActivity {
    private IabHelper mHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // ...

        setupInAppBillings();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    // [....]

    private void setupInAppBillings() {
        String base64EncodedPublicKey = "MY PUBLIC KEY";

        mHelper = new IabHelper(this, base64EncodedPublicKey);
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            public void onIabSetupFinished(IabResult result) {
                if (!result.isSuccess()) {
                    Toast.makeText(getContext(), "In-app Billing setup failed: " + result, Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getContext(), "In-app Billing is set up OK", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

经过测试

  • 华为P8(谷歌播放版6.2.14)
  • 在瑞士,支持应用程序结算的国家/地区

我试过的

我从这个列表中唯一没有做的就是设置许可证验证库(LVL).但我找不到任何有关应用程序内购买所需的步骤的信息.如果不需要我想在没有这个库的情况下这样做,因为我并不像谷歌网站上所说的那样需要它.

Google Play许可服务主要面向希望验证当前用户确实为Google Play上的应用付费的付费应用.

有什么我想念的吗?

sab*_*adi 5

如果您的目标是 android 31,您应该将其添加到您的清单中:

<queries>
    <intent>
        <action android:name="android.intent.action.MAIN" />
    </intent>
</queries>
Run Code Online (Sandbox Code Playgroud)


Bon*_*ide 3

我终于开始工作了!问题如下:即使我将其放入包IInAppBillingService.aidlcom.android.vending.billing,生成的类也位于错误的包中,如下面的代码所示。

/*
* This file is auto-generated.  DO NOT MODIFY.
* Original file:     C:\\path\\src\\main\\aidl\\com\\android\\vending\\billing\\IInAppBillingService.aidl
*/
package billing;

public interface IInAppBillingService extends android.os.IInterface { //... }
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我删除并重新创建了com.android.vending.billing带有IInAppBillingService.aidl. 因此,如果您遇到同样的问题,请检查两次IInAppBillingService.java生成位置。