问题标签 [android-billing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 为什么使用应用内计费设置开发人员有效负载很重要?
我正在使用第 3 版的应用内计费 API。我有一个单一的、托管的、非消耗品。我还没有在我的应用程序中发布这个功能,所以我想在购买之前决定购买有效载荷的内容。
来自“安全最佳实践”:
发出购买请求时设置开发者有效负载字符串
使用 In-app Billing Version 3 API,您可以在向 Google Play 发送购买请求时包含一个“开发者有效负载”字符串令牌。通常,这用于传递唯一标识此购买请求的字符串令牌。如果您指定字符串值,Google Play 会将此字符串与购买响应一起返回。随后,当您查询此次购买时,Google Play 会返回此字符串以及购买详情。
您应该传入一个字符串令牌,以帮助您的应用程序识别进行购买的用户,以便您以后可以验证这是该用户的合法购买。对于消耗品,您可以使用随机生成的字符串,但对于非消耗品,您应该使用唯一标识用户的字符串。
当您从 Google Play 收到响应时,请确保验证开发人员有效负载字符串与您之前随购买请求发送的令牌匹配。作为进一步的安全预防措施,您应该在自己的安全服务器上执行验证。
对或错,我决定不采取设置服务器进行购买验证的“进一步安全预防措施”。而且我不存储自己的购买记录——我总是调用计费 API。那么我真的有任何理由进行此有效负载验证吗?验证 API 本身肯定会在将商品报告为已购买之前验证用户的身份,如果攻击者入侵了设备(应用程序或 google play API),我看不出进行额外检查有什么好处用户在设备上的标识,很容易被绕过。还是有我没有想到的这样做的理由?
android - 应用内购买问题
在我的最新应用上工作,我正在实施应用内购买。
我在网上寻找了很好的教程,并从 Bundell 找到了一个。
我检查了很多次代码,但我不断收到错误消息。看起来像这样:
这是一个 nullpointerException 但我不知道发生了什么。我使用此代码进行应用内购买:
你看我有一个按钮,当点击它会完成活动。每次我完成活动时都会收到此错误....
当 onDestroy 被调用时,事情就变糟了。我认为这与 stopService() 方法有关。
该方法如下所示:
拜托你们..你能给我提示/指针或只是一个解释吗?
编辑
好的...完成了...我已删除 onDestroy 并将 stopService 复制到完成方法之前...获取另一个 nullpointerexception ..有点相同:
android - 在 Android 中使用示例库进行应用内计费:由 IInAppBillingService.aidl 创建的接口
使用 Google 新的应用内计费库(第 3 版),将计费添加到一个应用程序应该会变得更加容易。开发人员博客(见链接)中显示的代码看起来已经很简单了。
但是,我在 SDK 的文件夹中发现了示例应用程序extras\google\market_billing\in-app-billing-v03
。它被称为“TrivialDrive”。
当我尝试使用示例代码时,提出了一些问题:
- 将文件粘贴
IInAppBillingService.aidl
到新包中com.android.vending.billing
是否正确?然后创建的 Java 界面为我显示了两条待办事项消息,例如getBuyIntent()
:“TODO:将其更改为特定于应用程序的键”。听起来不太好。但是,这个接口是否已准备好生产? util
示例的“src”中有一个文件夹,其中包含 、IabHelper
和其他类。我可以简单地复制该目录并按原样使用所有这些辅助函数吗?Base64
Purchase
android - 来自 Android 计费示例的 IabHelper 类的在线文档?
Android 的 In-app billing V3 开发人员指南附带一个名为TrivialDrive的示例应用程序。其中有一个名为 IabHelper 的实用程序类,指南建议我们将其导入到我们自己的应用程序中。
我想知道是否有 IabHelper 类的在线文档?我搜索了 d.android.com 但没有找到任何东西。或者我应该只从源文件中提取 Javadocs 吗?
android - Android计费库错误
每个人。
我刚开始在我的应用程序中购买应用程序。
这对我来说是新事物。
现在在网上看到一些例子,我发现github上的一个项目在我链接计费库之前就充满了错误。
当我这样做时,我刚刚解决了项目中的错误,但由于android计费库包有错误,它仍然有一个感叹号红色标记。
我检查了错误,但我无法解决它,因为我不明白如何解决。
拜托各位,我真的需要一些帮助。
我在这些行中得到了错误
在 asBinder 中,错误及其说“此行有多个标记
与此代码相同,我也收到错误
我不知道这些错误是什么。
我刚刚得到这个库,并将它放在我的 Eclipse 项目中。
错误出现在 InAppBillingService 中,我无法访问它,因为它是自动生成的!!
提前致谢。
android-billing - 在应用程序购买问题“您的订单无法处理”?
我一直在“应用内订阅”中工作,我按照http://www.robotmedia.net/2011/06/android-billing-library-in-app-billing-made-simple/中给出的所有步骤进行操作,一切正常很好,但是当我尝试购买并付款时,我收到“您的付款无法处理。请再试一次”,然后我登录我收到了一些错误,例如
在过去的三天里,我一直在打破我的头。有人可以帮我解决这个问题。提前致谢。
c# - 我可以将 Android 计费服务集成到使用 MonoDroid 制作的应用程序中吗?
目前正在讨论将 Xamarin 用于项目,有人对 android 计费系统有任何想法吗?理想情况下在订阅服务上。都是通过play store完成的吗?
android - 从 google play 获取应用内商品价格
我参考这个链接
亲爱的大家,我必须从 google play 显示我的应用的应用内产品的价格。虽然我试图从 google play 获取价格,如上面的链接所示......有一个错误
告诉那个
我该如何解决这个错误?或者我可以通过什么方式从 google play 获得应用内产品价格?
这是我的代码。
android - Android 应用内计费:无法启动异步操作,因为另一个异步操作(正在进行中)
我正在使用IabHelper
Google 教程推荐的实用程序类,但我受到了这个错误的严重打击。显然IabHelper
不能同时运行多个异步操作。我什至设法在盘点仍在进行时尝试开始购买。
我已经尝试按照这里onActivityResult
的建议在我的主类中实现,但在错误发生之前我什至没有调用该方法。然后我找到了这个,但我不知道在哪里可以找到这个方法——它不在课堂上。flagEndAsync
IabHelper
现在我正在寻找解决这个问题的方法(不重新实现整个she-bang)。我能想到的唯一解决方案是创建一个asyncActive
在异步任务启动之前检查的布尔字段,如果有另一个任务处于活动状态,则不要这样做。但这还有许多其他问题,并且不适用于跨活动。此外,我更希望有一个异步任务队列并在允许时立即运行,而不是根本不运行。
这个问题有什么解决方案吗?
android - Android In App Billing:无法启动launchPurchaseFlow,因为launchPurchaseFlow 正在进行中
我是第一次实施 In App Billing,我正在使用静态 SKU id 测试我的第一次购买。
第一次效果很好。我打电话mHelper.launchPurchaseFlow(...)
并完成了测试购买。我的活动收到了onActivityResult
回调,我确保使用mHelper.handleActivityResult(...)
. 一切都很棒。
但是,我想测试下一部分,所以我重新启动了应用程序并尝试购买相同的 SKU(静态purchased
SKU)。
我第二次尝试购买该项目时,我OnIabPurchaseFinishedListener
被调用,我purchase failed
在我的日志中看到:“应用内计费错误:无法购买项目,错误响应:7:项目已拥有”
这是有道理的,但如果我尝试购买另一件商品,我的应用程序会因以下错误而崩溃:
java.lang.IllegalStateException:无法启动异步操作 (launchPurchaseFlow),因为另一个异步操作 (launchPurchaseFlow) 正在进行中。
当onActivityResult
我尝试进行失败的购买时,不会发生回调,因此失败的启动流程不会得到处理和清理。所以,当我尝试另一次购买时,这就是它崩溃的原因,因为它仍然应该在最后一次失败的交易中间。
我究竟做错了什么?如何确保在失败后清理 launchPurchaseFlow()?