Answers:
可能由于多种原因导致此错误。
以下是Google IAB测试的要求列表。
先决条件:
测试要求:
PS:使用发行证书进行调试:https : //stackoverflow.com/a/15754187/1321401(链接为Thnx @dipp)
PPS:想要很长一段时间列出此清单。
经过几个小时的尝试,Ahh找到了解决方案。
如果您发布的版本与您在手机上测试的版本不同,则会发生同样的情况。
例如,上传的版本为android:versionCode="1"
,而您正在手机上测试的版本为android:versionCode="2"
android:versionCode="1"
手机,电话是否android:versionCode="2"
可以,或者我必须更改我的apk google play?
您需要使用实时证书签署APK。然后将其安装到测试设备上。然后,您可以测试InAppBilling。如果通过eclipse直接运行到设备来测试应用程序(在调试模式下),则会收到此错误。
如果您将其android.test.purchased
用作SKU,它将一直有效,但是最终响应中不会包含developerPayload。
如果您在应用程序项目中使用自己的草稿,则可以进行所有测试,但需要付费,因此以后必须自己退还。
您不能使用与Google Play开发控制台相同的Gmail帐户购买商品。
让我补充一下发生的事情,可能会有所帮助。
这主要是由于签署。
由于我已经在项目结构中添加了签名详细信息,因此我一直认为每次运行时都会安装预期的签名apk。但是选择了构建类型“ debug”。
修复以下问题为我解决了问题。
与SO和其他网站上的许多答案和评论相反,您不必对已从Google Play下载到测试设备上的产品的alpha / beta版本执行初步测试(alpha / beta发布过程通常会很费劲半天)。您也不必从开发人员工作室中将签名的发行版APK加载或重新加载到测试设备。
您可以使用调试应用程序调试初步的Google Play in app计费服务,该调试应用程序是从开发人员工作室通过ADB直接加载到测试设备中的。如果遇到阻止此错误的错误,则可能是您的代码做错了什么。特别注意您的SKU(产品ID)的大小写及其格式(例如,如果您将APK加载为com.mydomain.my_product_id,请确保尝试以这种方式购买它-提供相同的大小写和域) 。另外,请特别注意您的itemType-对于应用程序购买或订阅中的托管/非托管,这应该分别为“ inapp”或“ subs”。
根据Chirag Patel的建议,如果您已正确建立帐单代码,请在初步测试期间使用android.test.purchased Sku(产品ID)执行所有测试。由于Google测试系统未提供此数据,因此在整个结算操作过程中都要检查该ID,以便通过签名,令牌和有效载荷检查来传递此ID。此外,为您的测试产品之一提供此ID,以在整个模式中测试其购买,解锁/加载和演示。要清除购买的商品,只需消耗它,传递相同的Sku和以这种方式格式化的令牌字符串-没有其他相关字段:
"inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";
完成此测试阶段后,请使用您的alpha / beta产品进行半实时测试。创建一个Google网上论坛(本质上是一个邮件列表),向测试用户添加电子邮件,然后在此阶段添加/邀请该网上论坛对您的设备进行测试(在您应用的Google开发者列表的“ APK”部分执行)。系统会模拟购买交易,但不会实际收取费用-但是,要清除并重新测试购买交易,Google表示您必须从Google电子钱包中退还这些款项。这是测试的唯一阶段,需要使用alpha / beta负载和测试用户的耗时过程。
如果要调试IAB,您需要做的是:
提交清单上具有IAB许可的Google Play版本的应用:
在Google Play上向您的应用添加产品:管理应用内结算
设置签名的定制调试密钥库:将Eclipse配置为使用签名的密钥库
最近,谷歌对他们的系统进行了更改,由于您已将至少一个APK上传到控制台,因此您可以使用任何版本代码/编号的应用测试您的应用内请求。
交叉参考LINK
配置
gradle
以对调试版本进行签名以进行调试。
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file("my-release-key.jks")
storePassword "password"
keyAlias "my-alias"
keyPassword "password"
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
...
}
}
}
解
将您的应用程序上载到Play商店后,请稍等片刻,因为Google需要一些时间来更新应用程序版本。它将起作用!