Articles of 应用内购买

Android应用内结算:使用sku android.test.purchased时出错(响应:5:开发人员错误)

我已经通过标准助手发送了testing购买意向: String SKU = "android.test.purchased"; mHelper.launchPurchaseFlow(this, SKU, 10001, mPurchaseFinishedListener); 购买成功,但是当我尝试使用购买的物品时: mHelper.consumeAsync(inv.getPurchase(SKU), mConsumeFinishedListener); 我得到以下错误: Error while consuming: IabResult: Error consuming sku android.test.purchased (response: 5:Developer Error) 我创build了一个Play商店已签名的apk并上传到开发者控制台 我已经在开发控制台中设置了一个testing项目 我已经实现onActivityResult 我错过了什么吗?

应用内购买:分享用户在Android和iOS之间的应用内购买

我打算将In-App购买添加到我的Productivity应用程序中。 增强function是购买产品(如免费增值)。 如果用户在任何一个平台上购买,我希望用户可以在Android和iOS上访问已购买的function。 从技术上讲,我打算将购买信息存储在服务器上,并且每当用户login到任一设备上时,都要检索购买信息,并在已购买的情况下解锁该function。 这是允许在iOS和Android? 苹果应用程序商店审查指南第11部分有这个解释。 点“11.1 / 11.2”和“11.14”听起来有冲突(或者我错过了某些东西)。 在Android上,我在政策中看不到这一点。 如果您有任何经验(在设备之间共享购买信息),我应该额外注意,欢迎任何build议。

IAB帮手没有设置。 无法执行操作:queryInventory

我试图在我的应用程序中实现应用程序内结算API,但是当我运行我的应用程序时,它会显示一个exception。 这是我第一次处理应用程序内付款API,所以build议将不胜感激。 这是我得到的exception的日志: Process: koemdzhiev.com.quickshoppinglist, PID: 10604 java.lang.RuntimeException: Unable to start activity ComponentInfo{koemdzhiev.com.quickshoppinglist/koemdzhiev.com.quickshoppinglist.ui.MainActivity}: java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2329) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389) at android.app.ActivityThread.access$900(ActivityThread.java:147) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) Caused by: java.lang.IllegalStateException: IAB helper is not set […]

mService.consumePurchase(3,packageName,purchaseToken)总是返回RESULT_DEVELOPER_ERROR = 5 – 提供给API的无效参数

我总是收到“RESULT_DEVELOPER_ERROR = 5 – 提供给API的无效参数”,当试图消费购买与 String purchaseToken = "inapp:" + getPackageName() + ":" + productId; int response = 0; try { response = mService.consumePurchase(3, getPackageName(), purchaseToken); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } 出于这个原因,我总是只能做一次购买。 但是,我需要能够更频繁地进行购买。 我一直试图解决这个问题2天,现在没有成功。 :/ 使用SKU“android.test.purchased”进行购买和生产是完全正常的,但是一旦我用生产密钥导出.apk文件并添加一个实时SKU,购买只出现一次,然后再也不会出现。 这里有更多的细节 Play商店中.apk的版本代码和我在手机上使用的导出的.apk版本代码是相同的,并且使用相同的密钥库 我已经对托pipe和非托pipe产品进行了尝试,但是这并不重要,因为根据最新的应用内结算文档 ,托pipe和非托pipe产品被视为托pipe产品,并且都必须消费 我只有5个SKU物品,所以它没有达到20的限制,这是这里的问题

如何获得过期的Google Play订阅?

有没有办法从Google Play获取用户的过期订阅? 我正在制作一个杂志式的应用程序,并且我希望用户能够访问在其订阅处于活动状态时发布的内容,而不pipe它们是否有订阅。 例如,如果用户在6月1日购买了一个月的订阅,那么在6月底之前取消,从7月开始,他们仍然可以访问6月份发布的任何内容。 使用Google的IabHelper.java示例库,似乎没有办法。 继续上面的例子,从7月开始, queryInventory()方法根本不再显示订阅。 这阻止我们检索purchaseToken ,这反过来阻止我们使用Google Play开发者API。 (如此处所述, Purchases.Subscriptions:get()方法需要令牌。) 我意识到我们可以在用户进行购买时在本地caching令牌,但这不适用于多个设备。 为了保持他们在多个设备上的购买,我们需要将购买令牌存储在服务器上。 但是,这将需要用户有办法login到我们的服务器,以检索他们的令牌,这增加了更多的复杂性。 有没有更好的办法?

将应用程序内购买添加到现有的已发布应用程序并进行testing,而无需发布

我正在尝试为现有已发布的应用程序添加应用程序内购买,这些应用程序之前没有帐单许可。 我上传了带有结算权限的更新后的APK,但由于我不想发布此草稿,因此未启用此function。 但是,我无法添加应用内商品 – 仍然显示“当前的应用版本不使用BILLING权限”。 任何方式来解决/解决这个问题?

Google Analytics(分析)的应用内价格格式

我的应用包含可以购买的应用内商品。 我使用结算API来检索可以购买的产品列表及其价格。 检索的价格是包含货币和价格的格式化的string ,例如“$ 2.50”。 现在,我使用Google Analytics API来跟踪购买。 为了发送价格,这个API在micros中占用很长的参数。 所以我应该发(2.50 * 1000000)。 是否有API将第一个价格(从Billing API中检索)转换为第二个(发送到Analytics API)? 当然,我可以自己做一个简单的stringparsing转换,但是如果我这样做的话,恐怕会出现意想不到的情况。 例如,在一些地区,价格将包含“,”而不是“。”。 编辑 一个自然的解决办法是使用NumberFormat从“$ 2.50”转换为2.50。 Double price = NumberFormat.getCurrencyInstance().parse(priceStr).doubleValue(); 但是,从Google Play中检索到的价格string格式显然位于电话所在国家/地区的语言环境中,但NumberFormat将使用不一定相同的电话区域设置。

无法更改应用内结算的默认货币

我目前正在开发者控制台添加项目,但是我遇到了一个问题。 问题是,谷歌要求我为我自己的国家添加一个价格。 在我的情况下,这是与挪威货币挪威。 我希望包括挪威在内的所有国家的价格都是平等的,因为我已经将价格硬编码到我的应用程序中。 我还没有发现任何设置在我的开发者控制台上“更改默认货币”,并根据文件,我必须为我自己的国家添加一个价格。 另外一个问题,就是现在货币当然只是改变挪威克朗的价格,因为美元的最低价格略低于挪威克朗的最低价格。 是否有任何解决方法临时更改默认货币?

从活动中解耦应用内帐单

我可以在Android In-App-Billing V3中find的所有教程都假定您有一个单独的活动来处理与计费相关的所有事宜。 在我的情况下,有多个活动需要访问帐单。 我将如何处理这样一个最优雅的东西? 我偶然发现的一个示例问题:在使用Google结算助手类时,您总是将当前活动作为参数进行交付。 稍后的callback(例如onActivityResult)在该活动上被调用。 但是,如果主动活动一直改变呢? 我是否必须始终closures并重新初始化结算?

应用内结算 – BillingHelper没有完全实例化

我试图做的 你好,伙计们,我正在尝试为我的应用程序创build一些应用程序内部产品,以供捐赠使用。 因为我免费赠送我的朋友的音乐 – 他说唱。 无论如何,我在我的developer-account上创build了5个应用内产品: donate_small donate_midsmall donate_medium donate_large donate_xlarge 这是我在那里生成的参考键。 他们被保存并发布。 现在,如果通过本教程编写了应用内服务: 应用内简易教程 。 代码似乎工作完美,没有错误,当我编译演示代码的作品。 但是,当我尝试它,我得到总是这个错误: 12-06 14:23:49.400: E/BillingService(4719): BillingHelper not fully instantiated 题 那么,我需要改变用户可以select不同的应用内产品? 我需要在什么地方申报吗? 另外,如果你有一个很好的教程,这个东西都很好的描述和充分的工作,请告诉我。 这是我用于我的应用程序服务的类: de.stepforward ChannelActivity SplashActivity de.stepforward.billing AppMainTest.class – >这是我的活动 BillingHelper.class BillingReceiver.class BillingSecurity.class BillingService.class C.class de.stepforward.billing.util Base64.class Base64DecoderException.class 目前我会为您提供我的账单帮助和活动代码,如果您需要更多代码,请告诉我。 码 AppMainTest.class package de.stepforward.billing; import de.stepforward.R; import de.stepforward.R.id; import […]