尝试订阅产品时需要应用内计费 android 返回身份验证
Posted
技术标签:
【中文标题】尝试订阅产品时需要应用内计费 android 返回身份验证【英文标题】:in-app billing android return authentication is required when try to subscribe to product 【发布时间】: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 我必须通过哪个键? 为什么票数最高的答案在底部? 【参考方案1】:我以前也有同样的问题。转到您的 Google 开发者控制台并确保您的应用已发布到任何版本(alpha、beta 或 prod)。然后,应用内购买将起作用:)
【讨论】:
这对我有用。我的两分钱:点击“发布”您的应用后,需要几个小时才能获得批准。 此外,应用内产品需要处于活动状态,(如果禁用)会导致同样的问题。 当我的应用在生产中上传时出现此错误,测试模式但应用状态为草稿,是否必须发布相同的错误?【参考方案2】:同样的问题与可怕的消息:
需要身份验证。您需要登录自己的 Google 帐户。
我遇到了两个问题:
-
我尝试在我的代码中购买标识符为
"com.argonnetech.wordswriting.noads"
的产品,但在 Google Play 开发者 (GPD) 控制台中配置的应用内产品被简单命名为“noads”
在 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, "");
谢谢大家...
【讨论】:
***.com/questions/38648707/…【参考方案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/测试版) Testing Your In-app Billing Application【讨论】:
【参考方案6】:在我的情况下,versionCode
、versionName
和 applicationId
与开发者控制台上的应用程序的当前版本不同步。我在 build.gradle 文件中更改了这些。它们是不同的,因为我从 Eclipse 重写了 android studio 中的应用程序。在此之后,应用内计费工作。
【讨论】:
【参考方案7】:以下对我有用:
将草稿应用程序上传为 alpha 或 beta 以及一些版本代码。 使用具有有效订阅的帐户登录设备。 在此设备上安装与 alpha/beta 版本相同版本的签名应用程序。【讨论】:
以上是关于尝试订阅产品时需要应用内计费 android 返回身份验证的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 中测试 Google Play 计费订阅(非应用内购买)