这是一个风景,我们有多个老师在我们的应用程序。用户可以从老师那里购买三种不同的物品,价格分别为20美元、30美元、40美元。所以我在google控制台上创建了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()
中设置额外数据的任何方法
我是如何看到我们可以为BillingFlowParams.newBuilder()
.setObfuscatedAccountId()
和.setObfuscatedProfileId()
设置这两个参数的,我应该使用这些参数吗?在我看来是个黑客。
我想拿回购买对象中的额外参数
override fun onPurchasesUpdated(
billingResult: BillingResult?,
purchases: MutableList<Purchase>?
) {
for (purchase in purchases) {
consumePurchase(purchase)
}
}
}
发布于 2020-06-19 12:23:45
似乎使用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.com/google/play/billing/developer-payload#attribute
https://stackoverflow.com/questions/62257225
复制相似问题