【问题标题】:Confirmed on server side Android app installations已在服务器端 Android 应用程序安装中确认
【发布时间】:2023-02-06 01:13:57
【问题描述】:

我想在 Android 应用程序数据中存储每次安装唯一的令牌(一个随机数,例如 128 位长)。我也想在之后将此令牌传递到后端确认的购买。也就是说,后端应该拒绝黑客存储令牌的尝试,如果不是在购买应用程序之后。

换句话说,我需要实施应用程序“激活”,以便只有在购买真正的 Google Play 后才能激活。

解释为什么我需要这个:

  • 假设我在 10 美元的付费应用程序中以 2 美元的价格转售 1 美元的产品。
  • 用户使用此服务的权利出现在他购买我的付费应用程序时。
  • 如果用户可以伪造应用程序安装,那么他可能会以 10 美元的价格获得 1000 件产品,因此我将损失 990 美元。
  • 因此我需要在服务器端存储一个生成的令牌确认的(在后端)购买。

这可能与 Play Market 相关吗?

【问题讨论】:

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


    【解决方案1】:

    在 Flutter 中(我相信,在普通的 Android 中也是如此),它可以通过这种方式完成:

    每次购买都需要“确认”。

    在验证购买收据并将内容交付给用户后,重要的是调用 InAppPurchase.completePurchase 以告知底层商店购买已完成。调用 InAppPurchase.completePurchase 将通知底层商店该应用已验证并处理了购买,并且商店可以继续完成交易并向最终用户的支付帐户收费。

    警告:未能在购买后 3 天内致电InAppPurchase.completePurchase并获得成功回复将导致退款。

    所以,任务可以这样完成:

    • 购买已创建(在客户端应用程序端,通过联系 Play 商店)。
    • 应用程序使用购买令牌(可能还有其他信息)联系我的服务器。
    • 在来自应用程序的请求期间,服务器通过purchases.products.get 检索购买以验证购买不是由黑客伪造并增加用户的应用程序内资金。
    • 应用程序在收到服务器的成功回复后,通过InAppPurchase.completePurchase确认购买。

    如果应用程序未能确认,购买将在 3 天内退款。

    【讨论】:

      猜你喜欢
      • 2014-03-23
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 2016-09-14
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多