【问题标题】:Android Billing how to use setAccountId or assign payment to custom identifierAndroid Billing 如何使用 setAccountId 或将付款分配给自定义标识符
【发布时间】:2017-11-03 13:56:31
【问题描述】:

我想**允许我的用户在多个设备上使用我的应用程序**。用户必须通过 firebase auth 登录我的应用程序。

问题是付款被分配到在设备上签名的帐户(谷歌播放),而不是使用登录到应用程序的帐户。**从 firebase auth 我可以得到一个电子邮件地址我的应用程序的用户 - 这可以用作一些唯一标识符。

问题可视化:

我注意到在计费流程中有 .setAccountId("some id") 我想我可以使用它来填写用户的唯一标识符。但是如何使用它来查询购买呢?

BillingFlowParams.Builder builder = new BillingFlowParams.Builder()
                .setAccountId("some id")
                .setSku(PREMIUM_YEAR_SUBS).setType(BillingClient.SkuType.SUBS);

TLDR:我要做的就是检索与我的APP用户帐户相关的购买,不是设备帐户 (谷歌播放当前登录的用户)

【问题讨论】:

    标签: java android google-play google-play-services android-billing


    【解决方案1】:

    要使用accountId 实现计费,请尝试使用getBuyIntentExtraParams() 方法,该方法与getBuyIntent() 方法相比提供了更多功能。

    使用此方法,您可以使用accountId,并带有以下描述:

    与您应用中的用户帐户唯一关联的可选混淆字符串。如果您传递此值,Google Play 可以使用它来检测异常活动,例如在短时间内使用同一帐户进行购买的许多设备。

    此外,您可能还想通过here 讨论的应用内结算 API 检查典型的购买流程。

    【讨论】:

      【解决方案2】:

      好像获取不到accountId,google play刚刚使用的accountId。 我猜您使用 accountId 来代替有效负载,但经过我的尝试,我认为它不成功。 在 Google 计费库中,开发负载已被删除,以便在应用内购买和应用外购买之间获得相同的体验。虽然我们可以在消费或确认期间添加有效载荷,但它没有用。并且payload应该是在购买期间设置的,但是google删除了,不会加回来。 The payload issues.

      【讨论】:

        【解决方案3】:

        您可以检查附加到每个PurchaseAccountId 使用 Purchase.getAccountIdentifiers

        它会返回 AccountIdentifiers 对象 AccountId & ProfileId 之前在您启动计费流程时在 BillingFlowParams 中设置的

        之后,您可以将当前用户帐户 ID 与每次购买附加的帐户 ID 进行比较 检测连接到当前用户帐户的购买

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-09
          • 2013-01-12
          • 1970-01-01
          • 1970-01-01
          • 2020-02-09
          • 2012-06-24
          相关资源
          最近更新 更多