共享首选项中设置一个值以标记用户已购买此项目是否可行且安全?如果用户在共享首选项中破解此值怎么办。或者我需要每次连接IAP服务以检查,然后用户才能使用它?
(1( 使用谷歌安卓IAP V3的最佳实践是什么?
(2(而且,如果用户的设备没有安装Google Play,我可能想使用PayPal付款,但是如果我要求用户使用简单的PayPal付款来获取许可证密钥,如何跟踪购买并为用户解锁功能?我不想使用任何其他计费SDK,如果用PayPal网页购买许可证,如何实现?
(1( 使用 Google Android IAP V3 时,最佳实践是什么?
-->官方文件说,只有支付交易才会由Google Play本身处理,但在应用程序中,你必须设置你的业务逻辑,如何在产品购买后处理UI集成和其他事情。您也可以使用应用内购买v3。
(2(而且,如果用户的设备没有安装Google Play,我可能想使用PayPal付款,但是如果我要求用户使用简单的PayPal付款来获取许可证密钥,如何跟踪购买并为用户解锁功能?我不想使用任何其他计费SDK,如果用PayPal网页购买许可证,如何实现?
-->您可以要求用户动态更新谷歌播放版本。谷歌开发人员文档表示,超过90%的设备使用安装了Google Play商店的2.2操作系统。我不能说PayPal交易,因为我以前没有使用过它,但是是的,在使用v3的应用程序购买中,实现和理解付款过程非常简单。
如何在应用程序中使用
管理应用程序产品数据的三种方法。
1( 共享优先权:您可以使用共享优先级值并检查它是否已购买。 如果用户卸载了应用程序,然后重新安装应用程序,那么您可以检查用户是否已购买,此时您将获得该项目已经购买。而且您必须管理用户才能访问您的应用程序数据。
2(本地数据库:您还可以使用本地SQLite数据库来存储购买详细信息和购买状态。如果用户清除数据或卸载应用程序,然后再次请求购买项目并检查用户是否购买了项目,则与上述相同。
或
2(服务器数据库:如果您使用 Web 服务器来存储用户数据,则与上述方法相比,这是更好的方法。在这种类型中,如果用户卸载应用程序或清除应用程序数据,您甚至不需要第二次管理这种情况。
3(混淆:(与共享优先级相比最有效的方法(
编辑:
在"共享首选项"中设置一个值以标记用户已购买此项目是否正常且安全?如果用户在共享首选项中破解此值怎么办。或者我需要每次连接IAP服务以检查,然后用户才能使用它?
当我在互联网上搜索时Nikolay Elenkov's
我找到了如下答案:
如果您只是在共享首选项中保存一个标志,则任何具有root的用户 设备可以随意翻转旗帜并"订阅"而无需付费。 所以你至少应该做一些混淆。这是一个示例方法 它。此外,还有一个 API 可以检查订阅状态,因此 您应该定期检查以确保订阅有效。
更多信息请查看尼古拉·埃连科夫的答案
什么是最适合计费的应用内购买或PayPal?
这取决于产品类型,
--> 应用内计费:最适合谷歌应用内计费,
对于数字产品,包括可下载的内容,如媒体 文件或 照片、游戏关卡或药水等虚拟内容、高级 服务和功能等。
http://developer.android.com/google/play/billing/index.html
-->PayPal:最适合PayPal计费,
对于物理内容或产品,您要共享。你不是 允许使用"应用内购买"销售实物商品或服务 由于通过此方法购买的商品必须与 使用它们的应用程序。
从iPhone应用程序购买实体产品,而无需在应用程序内购买Apple。
希望对您有所帮助。
文档:
因为 Google Play 客户端现在会缓存应用内结算信息 在本地设备上,可以使用版本 3 API 进行查询 更频繁地获取信息,例如通过 getBuyers 调用。 与以前版本的 API 不同,许多版本 3 API 调用 将通过缓存查找而不是通过网络提供服务 连接到Google Play,这大大加快了API的速度 响应时间。
这基本上意味着您每次都可以查找购买情况,Play商店应用程序几乎会立即做出响应。
根据我的经验,我可以向你保证一件事。
** 事实上,用布尔值标记它是否是溢价的是不好的**。
- 我所做的是混淆共享代码
- 在我创建了一些奇怪的字符串或数字之后,如果用户是高级用户,则仅通过应用程序内的代码进行识别。
- 除此之外,数据库中标识购买类型的数字代码除外。因此,通过检查两者,我可以确保用户是高级用户。
在这一点上,如果他们想用手机的根欺骗我,他们应该首先了解我的应用程序的代码是如何工作的,然后了解在哪里进行交互,因为如果只有共享的偏好发生变化,什么都不会改变,他们会被鞭打。
**这并不能转化为高安全性,但至少安全级别更高,根将无法轻易获得奖励。还因为他们应该了解在共享数据库中插入的确切代码是什么,并通过删除混淆来查找它们。老实说,我认为这对他们来说不值得。**
正如 Kuffs 所提到的,最好查询应用内结算库的应用端实现,而应用内结算库又会查询设备的 Google Play 客户端。这将确保最近从Google Play服务器获得的购买历史记录将是可靠且相对最新的信息。
另外,请记住,如果您要在Google Play上分发应用,则必须通过应用内结算使用Google Play付款机制。就目前而言,Google Play和钱包尚不支持PayPal或电汇/银行转账方法,因此如果您要在Play上发布该选项,则不应集成该选项。
http://play.google.com/about/developer-content-policy.html#payments