尝试订阅产品时需要应用程序内计费android返回身份验证

Ami*_*ail 45 android in-app-purchase in-app-billing google-play google-play-services

这是我第一次在android中处理In-App Billing 1)我正在使用API​​ v3 2)我已上传我的应用程序的alpha版本,以便能够测试然后

在此输入图像描述

3)我创建了一个订阅产品

在此输入图像描述

4)这是我在产品中订阅的代码

mSubscribeButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            try {

                Bundle subscribeIntentBundle = mService.getBuyIntent(3, getPackageName(), "my_product_id", "subs", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
                PendingIntent pendingIntent = subscribeIntentBundle.getParcelable("BUY_INTENT");

                if (subscribeIntentBundle.getInt("RESPONSE_CODE") == 0) {

                    startIntentSenderForResult(pendingIntent.getIntentSender(), 4002, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
                } else {
                    Toast.makeText(MainActivity.this, "Error Code: " + subscribeIntentBundle.getInt("RESPONSE_CODE"), Toast.LENGTH_SHORT).show();
                }
            } catch (RemoteException e) {
                e.printStackTrace();
            } catch (SendIntentException e) {
                e.printStackTrace();
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

5)我收到以下错误

在此输入图像描述

  • 我尝试使用不同的设备并且都有相同的错误,我也使用我的Google帐户登录,可以打开Goog​​le Play商店并查看我的应用

  • 我还试图从应用管理器中清除Google Play商店的数据

有人可以帮忙吗?

mmw*_*610 40

我之前有同样的问题.转到您的谷歌开发者控制台,并确保您的应用程序已出版的任何版本(α,β或正式版).然后,In app购买将工作:)

  • 此外,应用内产品需要处于活动状态(如果禁用),这会导致同样的问题. (10认同)
  • 这对我有用.我的两分钱:一旦你点击"发布"你的应用程序,它将需要几个小时的批准. (2认同)

a.d*_*cco 19

与可怕的消息有同样的问题:

需要身份验证.您需要登录自己的Google帐户.

我有两个问题:

  1. 我试图在我的代码中使用标识符购买产品,"com.argonnetech.wordswriting.noads"但在Google Play Developer(GPD)控制台中配置的应用内商品名称只是"noads"
  2. 在GPD控制台中更改应用内商品的名称后,我不得不将其切换为"活动"模式

它起作用了.错误消息具有误导性,如"在应用程序项目中不存在会更好"这样的错误.

  • 第二点对我有用.即使我已发布(测试版)应用程序,我也有同样的错误.激活inapp项已解决了这个问题. (3认同)

Naj*_*ala 6

针对应用内购买帐户的Android Developer测试应遵循此键.

Base64EncodedPublicKey

//测试base64EncodedPublicKey

public static final String base64EncodedPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg" +
 "KCAQEAhNe2XQ70DceAwE6uyYJGK1dIBbZcPdlER/9EEzylr6RDU6tnGj0Tk7kceN03GKvRf/ucT+ERLL3O" +
 "aHR22PXRXLZ17NZ81x6oS2vGmLyXBnjrU/I+asl8cNuLGySaoCdXxPAV+A9g6OG13dk+KY9i0O1roGpFH" +
 "fsAFyKCgSqR0PMJZ1bS+wFFBYf3M4IxgBcxuuZKDmR+MztCgm5N4zc6w2CwFZn3mXeDoTg15mWDU3sZO" +
 "WeRwFeynhV+FCYdDp8DpAkLk1b5IiXYFQ53wxCh/GxiKqBB6uQMmAixFjAcZV1QWfcBABae9vxiV5" +
 "VAEJvOOnhPxnaT9HYadW0pQ/UbJwIDAQAB";
Run Code Online (Sandbox Code Playgroud)

和项目购买的关键是这样的

ITEM_PURCHASED

//测试ITEM_PURCHASED

public static final String ITEM_PURCHASED = "android.test.purchased";
Run Code Online (Sandbox Code Playgroud)

并开始将此代码onCreate()放到初始化IabHelper类进行 应用内购买,

IabHelper helper = new IabHelper(this, Constants.base64EncodedPublicKey);
helper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
                Log.d("#InAppStartSetup#", "In-app Billing setup failed: " + result);
            } else {
                Log.d("#InAppStartSetup#", "In-app Billing setup successful.");
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

最后在这里代码处理上购买了时间,

helper.launchPurchaseFlow(YOUR_ACTIVITY, Constants.ITEM_PURCHASED,
                YOUR_REQUEST_CODE, mPurchaseFinishedListener, "");
Run Code Online (Sandbox Code Playgroud)

感谢你们...