【问题标题】:in-app billing android return authentication is required when try to subscribe to product尝试订阅产品时需要应用内计费 android 返回身份验证
【发布时间】:2015-03-11 15:55:28
【问题描述】:

这是我第一次在 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();
            }
        }
    });

5) 我收到以下错误

  • 我尝试使用不同的设备,都出现同样的错误,我也用我的 Google 帐户登录,可以打开 Google Play 商店并查看我的应用程序

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

有人可以帮忙吗??

【问题讨论】:

  • 我现在正在为我新创建的应用内产品之一看到这一点。我怀疑一旦应用内产品被谷歌“发布”到他们的所有服务器,它会在几个小时内消失。
  • 当我发布应用程序时问题解决了,我试图在未发布的应用程序上测试,所以我得到了以前的错误,但是当我发布它时我没有收到这个错误了,但是什么我现在需要测试我的应用程序,您是否有任何关于如何使用沙盒模式测试订阅模块的信息,或者至少使用像购买产品这样的静态响应。
  • @Amira 请帮我解决同样的问题。您可以发布您与应用内购买相关的整个代码吗?
  • bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ 我必须通过哪个键?
  • 为什么票数最高的答案在底部?

标签: android in-app-purchase google-play google-play-services in-app-billing


【解决方案1】:

我以前也有同样的问题。转到您的 Google 开发者控制台并确保您的应用已发布到任何版本(alpha、beta 或 prod)。然后,应用内购买将起作用:)

【讨论】:

  • 这对我有用。我的两分钱:点击“发布”您的应用后,需要几个小时才能获得批准。
  • 此外,应用内产品需要处于活动状态,(如果禁用)会导致同样的问题。
  • 当我的应用在生产中上传时出现此错误,测试模式但应用状态为草稿,是否必须发布相同的错误?
【解决方案2】:

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

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

我遇到了两个问题:

  1. 我尝试在我的代码中购买标识符为 "com.argonnetech.wordswriting.noads" 的产品,但在 Google Play 开发者 (GPD) 控制台中配置的应用内产品被简单命名为“noads”
  2. 在 GPD 控制台中更改应用内产品的名称后,我不得不将其切换到“活动”模式

它奏效了。错误消息具有误导性,类似“应用内项目不存在会更好”之类的错误。

【讨论】:

  • 第二点对我有用。即使我已经发布了(测试版)应用程序,我也遇到了同样的错误。激活inapp项解决了问题。
  • 这是我的解决方案,ID 不匹配。
  • 是的,第二个!就是这样。
【解决方案3】:

应用内购买帐户的 Android 开发者测试应遵循此键。

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";

和物品购买的钥匙一样

ITEM_PURCHASED

// 测试ITEM_PURCHASED

public static final String ITEM_PURCHASED = "android.test.purchased";

然后开始把这个代码 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.");
            }
        }
    });

最后在这里购买了这段代码句柄的时间,

helper.launchPurchaseFlow(YOUR_ACTIVITY, Constants.ITEM_PURCHASED,
                YOUR_REQUEST_CODE, mPurchaseFinishedListener, "");

谢谢大家...

【解决方案4】:

developer.android.com 上的文档似乎已经过时了。

如果您想在不发布的情况下测试您的应用内结算,您必须创建一个 Google 群组并添加一个 Alpha 版测试人员列表。看这里: https://support.google.com/googleplay/android-developer/answer/3131213?hl=en

更新

从 2015 年年中开始,不再需要这样做。您在 google play 开发者控制台中有几个新的测试选项。

【讨论】:

  • 这几个新选项是什么?
  • alpha 和 beta 测试,有几个选项:个人电子邮件邀请、组和我认为的其他一些(这是一个下拉菜单,打开它,看看里面有什么)。
【解决方案5】:

上述大多数解决方案都有效,但对于那些仍然遇到此问题的人,请尝试以下操作:

  • 在 Android Studio 中,使用发布密钥为您的应用签名(这将创建一个签名的 app-release.apk 文件)
  • 然后确保您使用 adb install path/to/your/app-release.apk不通过 Alpha/测试版)


【讨论】:

    【解决方案6】:

    在我的情况下,versionCodeversionNameapplicationId 与开发者控制台上的应用程序的当前版本不同步。我在 build.gradle 文件中更改了这些。它们是不同的,因为我从 Eclipse 重写了 android studio 中的应用程序。在此之后,应用内计费工作。

    【讨论】:

      【解决方案7】:

      以下对我有用:

      • 将草稿应用程序上传为 alpha 或 beta 以及一些版本代码。
      • 使用具有有效订阅的帐户登录设备。
      • 在此设备上安装与 alpha/beta 版本相同版本的签名应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-11
        • 2017-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多