在尝试订阅产品时需要应用内结算Android返回authentication

这是我第一次处理android中的应用内结算1)我使用API​​ v3 2)我已经上传我的应用程序的alpha版本可以testing然后

在这里输入图像说明

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

在这里输入图像说明

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帐户login,并可以打开Goog​​le Play商店,并查看我的应用程序

  • 我也尝试从应用程序pipe理器清除Google Play商店的数据

任何人都可以帮忙吗?

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

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

validation是必需的。 您需要login到您的Google帐户。

对我来说有两个问题:

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

它的工作。 错误消息是误导性的,像“在应用程序项目不存在会更好”的错误。

Android开发人员testing应用内购买帐户应按照此键。

Base64EncodedPublicKey

//testingbase64EncodedPublicKey

 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

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

感谢你们…

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

如果您想在发布应用内结算的情况下进行testing,则必须创build一个Google组并添加testing人员的Alpha列表。 请参阅此处: https : //support.google.com/googleplay/android-developer/answer/3131213?hl = zh_CN

UPDATE

截至2015年年中,这已不再是必要的。 在Google Play开发者控制台中有几个新的testing选项。

大多数上述解决scheme的工作,但对于仍然有这个问题的人,试试这个:

  • 在Android Studio中,使用发行版密钥对应用程序进行签名(这将创build一个已签名的app-release.apk文件)
  • 然后确保使用adb install path / to / your / app-release.apk不通过Alpha / Beta )将其安装在物理设备上
  • testing您的应用内结算应用

截图

在我的情况下, versionCodeversionNameapplicationId与开发者控制台上当前版本的应用applicationId不同步。 我在build.gradle文件中改变了这些。 他们是不同的,因为我从Eclipse重写了android工作室的应用程序。 之后,在应用程序结算工作。

下面为我​​工作:

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