当前位置: 首页 > 知识库问答 >
问题:

跨会话/设备处理应用内购买/消耗品?

邢凯歌
2023-03-14

我的问题是围绕着用谷歌的应用内计费API处理应用内消耗品的购买。(https://developer.android.com/google/play/billing/api.html#consumetypes)

相反,您可以对可供多次购买的产品实施消费。通常,这些产品提供某些暂时效果。例如,用户在游戏中的角色可能会获得生命点数或者在他们的库存中获得额外的金币。在应用程序中分配购买的产品的好处或效果称为配置托管产品。您负责控制和跟踪如何向用户提供托管产品。

消耗品是可以多次购买的物品(比如游戏货币、游戏物品或升级使用等),而非消耗品只能购买一次(无广告、皮肤/角色等)

在关于消费购买的文档(https://developer.android.com/training/play-billing-library/purchure-iab-products.html)中,它还提到:

你如何使用你的应用中的消费机制是由你自己决定的。通常,您会为用户可能想要多次购买的具有临时利益的产品(如游戏内货币或可补充的游戏代币)实现消费。您通常不希望为一次性购买并提供永久效果的产品(如高级升级)实现消耗。

我的问题是如何跟踪消耗性产品的用户库存?文档和各种视频似乎很快就掩盖了这一点,基本上是说,当确认购买成功时,应用程序必须应用消耗品的效果。但这并不是事实的全部。如果用户注销后使用不同的帐户重新登录,该怎么办?或者他们切换到一部新手机,他们应该在那部手机上安装该产品。

您不能将购买记录真正保存在SharedPreferences或持久缓存中,因为它与手机绑定在一起。如果一个用户在不同的手机上登录,那么他们应该拥有他们所做的所有购买的好处。

举下面的例子:

共有1个答案

郎鸿
2023-03-14

我自己正在实现应用内购买。

你需要运行一个独立于谷歌的私有服务器来跟踪这些东西的购买/消费吗?

是的,当然,正如谷歌在html" target="_blank">安全最佳实践中所建议的

这是验证购买的流程:

  1. 用户单击“购买”按钮。
  2. 使用Google支付。
  3. 应用程序从谷歌接收“回执”并在本地存储
  4. 将此“回执”发送到服务器。
  5. 服务器将“PurchaseToken”发送到Google Play Developer API进行验证
  6. Google Play Developer API发送带有状态代码的响应。
  7. 将收据存储在服务器数据库中(如果我们要保留用户购买的历史记录)。

这是消费产品的流程:

    null

我使用了以下文章:

  • 教程:如何在Android Link中实现应用内计费
  • 关于实现InApp购买链接的文章。
  • 如何在服务器端验证android应用程序的购买(应用程序计费v3中的google play)链接。
  • 另一个SO应答链接。
  • 另一个SO应答链接。
  • 代码项目示例链接。
 类似资料:
  • 我遵循了谷歌关于应用内购买服务的实施说明。 我被提供了访问Google Play开发者控制台的邀请用户。我从它的私钥,并添加我的谷歌帐户到输入字段与测试帐户。之后,我craetad APK文件,并签署了它与有效的证书。然后将应用程序上传到Google Play,但没有发布。之后,我创建了需要的应用内购买并发布它们。然后在我的设备上安装了相同的签名apk文件。 我的问题是:如何测试从不同设备和帐户购

  • 准备工作 付费应用协议 如果你还没有,你需要在 iTunes Connect 签署付费应用协议, 并设置您的银行和税务信息。 iTunes Connect 开发人员帮助: 协议、税务和银行概述 创建您的应用内购买 然后,您需要在iTunes Connect中配置您的应用内购买,并包含名称,定价和说明等详细信息,以突出显示您的应用内购买的功能。 iTunes Connect开发人员帮助:创建应用程序

  • 这个问题(Android应用内计费动态产品列表)是3年前问过的。动态的应用内购买项目在Android上还是不可用的吗? 我之所以要实现这种功能,是因为我的应用程序提供了一种让某些用户创建自己的应用内购买的方式,供其他人购买。

  • 我正在开发一个应用内购买。我已将该应用程序放在 Play 商店进行封闭测试。在帐户设置中使用测试人员电子邮件和添加的测试人员电子邮件。我在 Play 商店中有 2 个托管产品。我在调试模式下测试了 android.test.purchased 并且工作正常。但是在我购买 SKU 时从 Play 商店安装的发布版本中,它成功完成了购买,但由于某种原因我收到了失败响应。我试图弄清楚这一点。此外,我在购

  • 我在测试我的应用内计费时遇到了麻烦。 (使用Google Play应用内计费版本3 API) 问题: 已退款的应用程序内购买仍然存在于购买列表中,该列表由BillingClient.query购买()提供。 当我在一月份尝试退款时,退款的物品从购物清单上消失了。 我所做的: 作为测试人员购买了一些物品。 (我很确定对话框说是测试购买。) 之后在谷歌游戏控制台退款。 等到他们的付款状态变成退款。 清

  • 是否可以限制会话和与之相关的请求可以使用的内存量? 例如,我希望将每个用户会话限制为一兆字节。此限制应适用于处理请求时创建的任何对象。有可能吗?