这是一个场景,我们有多个老师在我们的应用程序。用户可以购买3个不同的项目,从老师的成本20元,30元,40元。所以,我创建了3个产品在谷歌播放控制台。当用户购买一些项目,我怎么能知道他从哪个老师购买的项目?我没有看到任何方法来设置额外的数据时,购买的项目。人们一般如何处理这些情况?
这是我用来启动支付屏幕的方法
fun buyAnItem(activity:Activity,skuDetails: SkuDetails) {
val flowParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetails)
.build()
val responseCode =
billingClient.launchBillingFlow(activity, flowParams)
log(responseCode.toString())
}
我没有看到任何方法可以设置额外的数据在 SkuDetails
或 BillingFlowParams.newBuilder()
我怎么曾经看到过我们可以设置这2个参数,我们可以设置为 BillingFlowParams.newBuilder()
.setObfuscatedAccountId()
和 .setObfuscatedProfileId()
我应该用这些吗? 它看起来像一个黑客给我。
我想找回采购对象中的额外参数。
override fun onPurchasesUpdated(
billingResult: BillingResult?,
purchases: MutableList<Purchase>?
) {
for (purchase in purchases) {
consumePurchase(purchase)
}
}
}
似乎使用 setObfuscatedProfileId
和 setObfuscatedAccountId
是正确的方法。为不同的用户设置一些独特的值,每个属性最多允许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?.obfuscatedAccountId
和 purchase.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.comgoogleplaybillingdeveloper-payload#attribute。