应用内结算v3库中的101错误代码是什么意思?

时间:2019-04-27 23:24:24

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

我在应用帐单v3库中使用,总是出错 并且错误代码为101

此错误代码是什么意思?

一些细节:  我是一名来自巴勒斯坦的开发人员,正在开发通过印度Google Play帐户上传的应用程序

我创建了包含三个用于购买删除广告的按钮的活动

-第一个订阅一个月的按钮

-订阅一年的第二次

-购买生命中的第三个

我使用了这个库'com.anjlab.android.iab.v3:library:1.0.44'

我在Google Play控制台中创建了产品,其名称为PRODUCT_ID 当用户单击“寿命”按钮时,将购买此产品

我创建了两个订阅

-名字叫SUBSCRIPTION_MONTH_ID 并在用户单击“一个月”按钮时购买

-第二个名称是SUBSCRIPTION_YEAR_ID 并在用户单击“年”按钮时购买

这是我使用的代码

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;

public class InAppBilling extends AppCompatActivity{
BillingProcessor bp;

private static final String PRODUCT_ID = "****";
private static final String SUBSCRIPTION_MONTH_ID = "***";
private static final String SUBSCRIPTION_YEAR_ID = "***";
private static final String LICENSE_KEY = "*****";
private static final String MERCHANT_ID = "**";

Button oneMonth, oneYear, lifeTime;
int flag;
String android_id;

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

    flag = 0;

    android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(),
            Settings.Secure.ANDROID_ID);

    final Toolbar toolbar = findViewById(R.id.toolbar);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        toolbar.setTitle("Remove Ads");
    }

    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });

    if(!BillingProcessor.isIabServiceAvailable(this)) {
        Toast.makeText(this, "In-app billing service is unavailable, please upgrade Android Market/Play to version >= 3.9.16", Toast.LENGTH_SHORT).show();
    }

    bp = new BillingProcessor(this, LICENSE_KEY, MERCHANT_ID, new BillingProcessor.IBillingHandler() {
        @Override
        public void onProductPurchased(String productId, TransactionDetails details) {
            Toast.makeText(InAppBilling.this, "successfully purchased, restart the app please", Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onBillingError(int errorCode, Throwable error) {
            Toast.makeText(InAppBilling.this, "Error Billing", Toast.LENGTH_SHORT).show();
            Log.e("nourbilling", "onBillingError: errorCode: "+errorCode+" error: "+error);
        }
        @Override
        public void onBillingInitialized() {
        }
        @Override
        public void onPurchaseHistoryRestored() {
            for(String sku : bp.listOwnedProducts())
                Log.d("nourbilling", "Owned Managed Product: " + sku);
            for(String sku : bp.listOwnedSubscriptions())
                Log.d("nourbilling", "Owned Subscription: " + sku);
        }
    });

    oneMonth = findViewById(R.id.oneMonth);
    oneYear = findViewById(R.id.oneYear);
    lifeTime = findViewById(R.id.lifetime);

    final Activity activity = this;

    oneMonth.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            flag = 1;
            createDialog(savedInstanceState, activity).show();
        }
    });

    oneYear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            flag = 2;
            createDialog(savedInstanceState, activity).show();
        }
    });

    lifeTime.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            flag = 3;
            createDialog(savedInstanceState, activity).show();
        }
    });
}

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

@Override
public void onDestroy() {
    if (bp != null)
        bp.release();
    super.onDestroy();
}

public Dialog createDialog(Bundle savedInstanceState, final Activity activity) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("are you sure to remove ads by billing?")
            .setPositiveButton("yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    if (flag == 1) {
                        bp.subscribe(activity, SUBSCRIPTION_MONTH_ID);
                    } else if (flag == 2) {
                        bp.subscribe(activity, SUBSCRIPTION_YEAR_ID);
                    } else if (flag == 3) {
                        bp.purchase(activity, PRODUCT_ID);
                    }
                }
            })
            .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                }
            });
    return builder.create();

}
}

能帮我吗?

0 个答案:

没有答案