当我试图运行我的应用程序内计费我得到的错误:“这个版本的应用程序没有配置通过谷歌播放计费。查看帮助中心获取更多信息”。
我已经在Manifest文件中有计费权限,我有一个签名的。apk作为草稿上传到谷歌Play上,我也已经在我的手机上安装了相同的签名apk。
有什么帮助可以解决这个问题吗?
当我试图运行我的应用程序内计费我得到的错误:“这个版本的应用程序没有配置通过谷歌播放计费。查看帮助中心获取更多信息”。
我已经在Manifest文件中有计费权限,我有一个签名的。apk作为草稿上传到谷歌Play上,我也已经在我的手机上安装了相同的签名apk。
有什么帮助可以解决这个问题吗?
当前回答
如果你从2018年开始在这里,你需要直接从Play Store下载APK并安装“衍生”APK。也许是因为谷歌的Play Store有一个功能“谷歌Play的应用签名”。
其他回答
这个错误可能是由几个原因引起的。
以下是谷歌IAB测试的要求列表。
先决条件:
AndroidManifest must include "com.android.vending.BILLING" permission. APK is built in release mode. APK is signed with the release certificate(s). (Important: with "App Signing by Google Play" it only works if you download directly from GooglePlayStore!) APK is uploaded to alpha/beta distribution channel (previously - as a draft) to the developer console at least once. (takes some time ~2h-24h). IAB products are published and their status set to active. Test account(s) is added in developer console.
测试要求:
测试APK的versionCode与上传到开发人员控制台的版本相同。 测试APK使用与上传到dev.console的证书相同的证书进行签名。 测试帐户(不是开发人员)-是设备上的主要帐户。(根据@MinosL的评论,主账号可能不需要) 测试帐户被选择为测试人员,并与有效的支付方式相链接。(@Kyone)
p.s.:发布证书调试:https://stackoverflow.com/a/15754187/1321401(链接为Thnx @dipp)
p.p.s.:很久以前就想列这个清单了。
@zlgdev, @Kyone, @MinosL更新
如果你使用的apk版本与谷歌比赛中的apk版本不同,就会发生这种情况。
如果你想集成另一个没有发布的应用程序,但与已部署的应用程序具有相同的id、版本代码和版本名,那么不要忘记编辑appname。iml文件版本在扑动应用程序,因为我坚持它与相同的错误。
让我补充一下发生在我身上的事,也许能帮到别人。
这主要是由于签约。
由于我已经在Project结构中添加了签名细节,所以我认为每次运行时,都安装了期望的签名apk。但是选择了“调试”构建类型。
下面的修复为我解决了问题。
生成构建类型为“release”的签名apk。 手动安装apk。
与SO和其他网站上的许多答案和评论相反,你不需要使用从谷歌Play下载到测试设备上的产品alpha/beta版本进行初步测试(alpha/beta发布过程通常要花半天时间)。你也不需要从你的开发工作室加载和重新加载一个签名的apk到你的测试设备。
You CAN debug preliminary Google Play in app billing services using the debug app as loaded from your developer studio directly to your test device via ADB. If you are experiencing errors that prevent this, likely you have done something wrong in your code. Pay especially close attention to the CASE of your SKU's (product ids) and their format (for example, if you load your APK as com.mydomain.my_product_id, be sure your try to purchase it this way - providing the same case and domain). Also, pay especially close attention to your itemType - this should be either "inapp" or "subs" for managed/unmanaged in app purchases or subscriptions, respectively.
As suggested by Chirag Patel, provided you have your billing code properly established, perform all testing using the android.test.purchased Sku (product ID) during your preliminary tests. Check for this ID throughout your billing operations to pass it through signature, token and payload checks, since this data is not provided by the Google test system. Additionally, give one of your test products this ID to test its purchase, unlock/load and presentation all the way through your schema. To CLEAR the purchase, simply consume it, passing the same Sku AND a token string formatted this way - no other fields are relevant :
"inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";
Once you have completed this phase of testing, move to semi-live testing with your alpha/beta product. Create a Google group (essentially a mailing list), add your test users emails to it, and add/invite this group to test your device in this phase (performed at the "APK" portion of your app's Google developer listing). Purchases will be simulated but not actually charged - however to clear and re-test the purchases, Google indicates that you must refund them from your Google wallet. THIS is the only phase of testing that requires the time-consuming process of using alpha/beta loads and test users.