【问题标题】:Is there a way to add extra data when purchasing using Inapp purchases有没有办法在使用 Inapp 购买时添加额外数据
【发布时间】:2020-06-08 07:40:23
【问题描述】:

这是一个场景,我们的应用程序上有多个老师。用户可以从老师那里购买 3 种不同的物品,价格为 20 美元、30 美元、40 美元。所以我在 google play console 中创建了 3 个产品。用户购买时 一些物品我怎么知道他是从哪个老师那里购买的?购买商品时,我看不到任何设置额外数据的方法。人们通常如何处理这些案件?

这是我用来启动支付屏幕的方法

 fun buyAnItem(activity:Activity,skuDetails: SkuDetails) {
    val flowParams = BillingFlowParams.newBuilder()
        .setSkuDetails(skuDetails)
        .build()
    val responseCode =
        billingClient.launchBillingFlow(activity, flowParams)
    log(responseCode.toString())
}

我没有看到任何方法可以在 SkuDetailsBillingFlowParams.newBuilder() 中设置额外数据

我怎么看到我们可以设置这两个参数,我们可以为 BillingFlowParams.newBuilder() .setObfuscatedAccountId().setObfuscatedProfileId() 设置,我应该使用这些吗?对我来说,这看起来像是一个 hack。

我想取回购买对象中的额外参数

 override fun onPurchasesUpdated(
    billingResult: BillingResult?,
    purchases: MutableList<Purchase>?
) {
        for (purchase in purchases) {
           consumePurchase(purchase)
       }
    }
}

【问题讨论】:

标签: android in-app-purchase in-app-billing


【解决方案1】:

似乎使用setObfuscatedProfileIdsetObfuscatedAccountId 是正确的方法。为不同的用户设置一些唯一值。每个属性最多允许 64 个字符。

val flowParams = BillingFlowParams.newBuilder()
        .setSkuDetails(skuDetails)
        .setObfuscatedProfileId(profileId)  //Some data you want to send
        .setObfuscatedAccountId(id)  //Some data you want to send
        .build()
    val responseCode =
        billingClient?.launchBillingFlow(activity, flowParams)

检索:-您可以使用purchase.accountIdentifiers?.obfuscatedAccountIdpurchase.accountIdentifiers?.obfuscatedProfileId 检索数据

override fun onPurchasesUpdated(
    billingResult: BillingResult?,
    purchases: MutableList<Purchase>?
) {

    if (billingResult?.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) {
        for (purchase in purchases) {
            CoroutineScope(Dispatchers.Main).launch {
                log(purchase.accountIdentifiers?.obfuscatedAccountId)
                log(purchase.accountIdentifiers?.obfuscatedProfileId)
                consumePurchase(purchase)
            }
        }
    }
}

官方文档:- https://developer.android.com/google/play/billing/developer-payload#attribute

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多