Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试订阅产品时,需要应用内计费android返回身份验证_Android_In App Purchase_Google Play_Google Play Services_In App Billing - Fatal编程技术网

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

尝试订阅产品时,需要应用内计费android返回身份验证,android,in-app-purchase,google-play,google-play-services,in-app-billing,Android,In App Purchase,Google Play,Google Play Services,In App Billing,这是我第一次在android中处理应用内计费 1) 我使用的是API v3 2) 我已经上传了我的应用程序的alpha版本,以便能够进行测试 3) 我已经创建了一个订阅产品 4) 这是我在产品中订阅的代码 mSubscribeButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try {

这是我第一次在android中处理应用内计费 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 Store并查看我的应用程序

  • 我还试图从app manager中清除Google Play Store的数据


有人能帮忙吗?

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

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

base64EncodedPublicey

//测试Base64EncodedPublicey

public static final String base64EncodedPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg" +
 "KCAQEAhNe2XQ70DceAwE6uyYJGK1dIBbZcPdlER/9EEzylr6RDU6tnGj0Tk7kceN03GKvRf/ucT+ERLL3O" +
 "aHR22PXRXLZ17NZ81x6oS2vGmLyXBnjrU/I+asl8cNuLGySaoCdXxPAV+A9g6OG13dk+KY9i0O1roGpFH" +
 "fsAFyKCgSqR0PMJZ1bS+wFFBYf3M4IxgBcxuuZKDmR+MztCgm5N4zc6w2CwFZn3mXeDoTg15mWDU3sZO" +
 "WeRwFeynhV+FCYdDp8DpAkLk1b5IiXYFQ53wxCh/GxiKqBB6uQMmAixFjAcZV1QWfcBABae9vxiV5" +
 "VAEJvOOnhPxnaT9HYadW0pQ/UbJwIDAQAB";
和那个样的钥匙

购买的物品

//测试项目(已购买)

public static final String ITEM_PURCHASED = "android.test.purchased";
并开始将此代码onCreate()放入 应用程序内购买

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

谢谢大家…

在我的例子中,
versionCode
versionName
applicationId
与开发者控制台上当前版本的应用程序不同步。我在build.gradle文件中更改了这些。它们不同,因为我在android studio中从eclipse重写了应用程序。在这之后,应用程序内计费就起作用了。

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

如果你想在不发布的情况下测试你的应用内计费,你必须创建一个谷歌组并添加一个测试人员的alpha列表。请看这里:

更新


截至2015年年中,这已不再必要。您在google play开发者控制台中有几个新的测试选项。

在可怕的消息中遇到同样的问题:

需要进行身份验证。您需要登录到您的Google帐户

我有两个问题:

  • 我试图在我的代码中购买一款标识符为“com.argonnetech.wordswriting.noads”的产品,但在Google Play Developer(GPD)控制台中配置的应用内产品名为“noads”
  • 在GPD控制台中更改了应用内产品的名称后,我不得不将其切换到“活动”模式
  • 结果它成功了。错误消息具有误导性,类似“应用内项目不存在”这样的错误会更好。

    以下内容对我适用:

    • 将草稿应用程序上载为alpha或beta版本,并附带一些版本代码
    • 使用具有活动订阅的帐户登录设备
    • 使用与alpha/beta版本相同的版本在此设备上安装已签名的应用程序

    上述大多数解决方案都有效,但对于仍存在此问题的用户,请尝试以下方法:

    • 在Android Studio中,使用发布密钥对应用程序进行签名(这将创建一个签名的app-release.apk文件)
    • 然后确保使用adb安装路径/to/your/app-release.apk(不是通过Alpha/Beta版)将其安装到物理设备上。



    我现在看到的是我新创建的一款应用内产品。我怀疑,一旦应用内产品被谷歌“发布”到他们所有的服务器上,它将在几个小时内消失。问题在我发布应用时解决了,我试图在未发布的应用上测试,所以我得到了以前的错误,但当我发布应用时,我再也没有收到这个错误,但如果要测试我的应用,我现在需要什么,关于如何使用沙箱模式测试订阅模块,或者至少使用静态响应(如buy product)测试订阅模块,您是否有任何信息。@Amira请帮助我解决同样的问题。你能发布你的应用程序内购买相关的全部代码吗?bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ我必须通过哪个键?为什么投票率最高的答案在底部?这对我很有用。我的二分钱:一旦你点击“发布”你的应用程序,它将需要几个小时才能获得批准。此外,应用程序内产品需要处于活动状态(如果已禁用),这会导致相同的问题。当我的应用程序以生产、测试模式上载,但应用程序状态为草稿时,我会收到此错误,发布相同的错误是必须的?第二点对我很有用。即使我已经发布了(测试版)应用程序,我也有同样的错误。激活inapp项解决了问题。这是我的解决方案,ID不匹配。是的,第二个!就是这样。这几个新选项是什么?阿尔法和贝塔测试,有几个选项:个人电子邮件邀请、组和其他一些我认为(这是一个下拉菜单,打开它,看看里面有什么)。