【问题标题】:What is the recommended way to validate subscriptions using Unity IAP with the new Google Play Billing library?使用 Unity IAP 和新的 Google Play 计费库验证订阅的推荐方法是什么?
【发布时间】:2020-07-16 20:31:10
【问题描述】:

Unity IAP 新推出的 Google Play 计费库 does not support SubscriptionManager

通常,我会使用SubscriptionManager 验证收据并检查is_subscribedis_expired 等属性并采取相应措施。

Unity 的文档没有与这些新信息保持同步。 Google Play 结算文档没有提供关于如何验证订阅是否仍然有效的解决方案或见解。 “不支持”几乎不是一个有效的回答,订阅是许多使用 Unity 制作的游戏和软件的一部分。

如何使用 Unity IAP 在 Unity 项目中验证 Google Play 订阅是否有效且未过期。无法使用 Unity IAP,欢迎任何其他解决方案或见解。

【问题讨论】:

    标签: android unity3d google-play-services


    【解决方案1】:

    似乎这个新插件强制在服务器端验证用户订阅。在实现插件时,我必须创建一个后端服务,将到期日期提供给我们的应用程序,因为我们不能再使用SubscriptionManager 来获取该信息。

    我不能真正推荐一种具体的方法,因为每个人的后端都会不同。对我们来说,我们在DigitalOcean droplets 上使用Docker 容器,我们的应用程序和数据库可以与之通信。这使我们能够为后端服务提供一个集中位置,我们使用 Python 使用 Flask 编写它。

    我们已经设置了一个可以通过我们的数据库,根据保存的 DateTime 查找每个已过期的订阅,并验证它是否已续订。如上所述,我们向该服务添加了一个额外的端点,用于获取 Google Play 订阅的到期日期。

    可以通过访问 Google Play REST API 的purchases.subscriptions.get 获取订阅信息。这将返回一个SubscriptionPurchase 对象,该对象提供相关信息,然后您可以处理这些信息以找出is_subscribedis_expired 等属性。

    可能可以直接从您的 Unity 应用/游戏发送此信息,但这也可能导致中间人攻击(诚然,我在这方面的知识并不完全,所以我建议您这样做你自己的阅读)。


    作为一般性建议,我建议您尝试在此处和 UnityIAP 子论坛上发布问题。 UnityIAP 支持人员非常活跃,即使他们因为这是 Google 实施而无法提供帮助,但绝对应该将其放在他们的雷达上!我尽可能在那里发帖,因为它允许他们对 UnityIAP 进行改进。 (:

    【讨论】:

      【解决方案2】:

      是的,目前我们应该使用服务器端 API 来获取订阅相关信息。由于 SubscriptionManger 依赖于已弃用的开发人员有效负载。见第二段https://developer.android.com/google/play/billing/developer-payload

      【讨论】:

        猜你喜欢
        • 2021-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-09
        • 1970-01-01
        • 2020-03-15
        • 2022-08-09
        • 2017-10-09
        相关资源
        最近更新 更多