在尝试订阅产品时需要应用内结算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,并可以打开Google Play商店,并查看我的应用程序
-
我也尝试从应用程序pipe理器清除Google Play商店的数据
任何人都可以帮忙吗?
我以前有同样的问题。 转到您的谷歌开发者控制台,并确保您的应用程序已发布到任何版本(alpha,beta或prod)。 然后,在应用程序购买将工作:)
与可怕的消息有同样的问题:
validation是必需的。 您需要login到您的Google帐户。
对我来说有两个问题:
- 我尝试在标识为
"com.argonnetech.wordswriting.noads"
代码中购买产品,但在Google Play开发者控制台(GPD)中configuration的应用内产品被简单地命名为“noads” - 在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您的应用内结算应用
在我的情况下, versionCode
, versionName
和applicationId
与开发者控制台上当前版本的应用applicationId
不同步。 我在build.gradle文件中改变了这些。 他们是不同的,因为我从Eclipse重写了android工作室的应用程序。 之后,在应用程序结算工作。
下面为我工作:
- 用一些版本代码将草稿应用程序上传为Alpha版或Beta版。
- 在具有有效订阅的帐户的设备上login。
- 使用与alpha / beta版本相同的版本在此设备上安装已签名的应用程序。