【问题标题】:How to process RTDN from Google Play?如何处理来自 Google Play 的 RTDN?
【发布时间】:2022-10-05 10:23:18
【问题描述】:

我的服务器从 Google Play 接收实时开发者通知 (RTDN)。怎么办?

如何检查 Google Play 的 RTDN 是否来自 Google,而不是来自黑客?假设我使用purchases.products.get API 来检查它。然后黑客可以向我发送重复的 RTDN,这会导致我的服务器认为购买发生了两次(实际上是一次)。

我希望我的服务器在每次从我的应用程序购买时都将用户帐户放在首位。我希望购买金额是任意的(由用户指定)。我是否应该将美元金额包含在产品productId/SKU 中,例如:credit-$0.78

此外,还不清楚如何确定已完成购买的应用程序的安装 ID(我在安装时存储在应用程序数据中的 UUID)。我应该在productId/SKU 中包含 UUID 吗?

【问题讨论】:

    标签: google-play in-app-purchase rtdn


    【解决方案1】:

    引用https://developer.android.com/google/play/billing/security

    应该在后端处理的敏感数据和逻辑的一个特殊情况是购买验证。用户购买后,您应该执行以下操作:

    1. 将对应的purchaseToken发送到您的后端。这意味着您应该维护所有购买的所有 purchaseToken 值的记录。
    2. 验证当前购买的 purchaseToken 值是否与之前的任何 purchaseToken 值不匹配。 purchaseToken 是全球唯一的,因此您可以安全地将此值用作数据库中的主键。
    3. 使用 Google Play Developer API 中的 Purchases.products:get 或 Purchases.subscriptionsv2:get 端点向 Google 验证购买是否合法。
    4. 如果购买是合法的并且过去没有使用过,那么您可以安全地授予应用内商品或订阅的权利。

      [跳过订阅验证]

    【讨论】:

      【解决方案2】:

      实时开发者通知 (RTDN) 是一种在您的应用中用户的权利发生变化时从 Google 接收通知的机制。 RTDN 使用经过编码且安全的Google Cloud Pub/Sub,每个发布到 Cloud Pub/Sub 主题的内容都包含单个 base64 编码数据字段。

      笔记:您必须在收到实时开发者通知后调用Google Play Developer API 以获取完整状态并更新您自己的后端状态。这些通知仅告诉您购买状态已更改。他们不会为您提供有关购买的完整信息。

      Google Play Developer API 是一种服务器到服务器 API,它补充了 Android 上的 Google Play 计费库。此 API 提供 Google Play 结算库中不可用的功能,例如安全地验证购买并向您的用户发放退款。

      【讨论】:

      • 你没有回答如何进行验证(以避免黑客进行虚假购买和重复购买)。您的回答是部分的,请重新阅读我的要求。此外,您似乎声称 Pub/Sub 是安全的,并且要在外部进行安全验证(通过 Google Play Developer API);这对我来说似乎是一个矛盾。
      猜你喜欢
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2015-12-22
      • 2020-09-29
      相关资源
      最近更新 更多