Android Billing客户端库:如何指定Developer Payload(额外数据)

时间:2018-03-27 19:58:10

标签: android play-billing-library

我正在尝试使用新的Android Billing Client library(1.0)

以前,在尝试执行购买时,可以选择向intent添加额外数据。

但是,在使用新库时,事情已经在很大程度上得到了简化。但是有没有办法将开发者有效负载(额外字符串)添加到购买流程中?

2 个答案:

答案 0 :(得分:1)

计费库的新版本支持开发人员有效负载

您可以在了解购买或使用它时设置开发人员有效载荷。

val client: BillingClient = ...
val listener: AcknowledgePurchaseResponseListener = ...

val acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
    .setPurchaseToken(/* token */)
    .setDeveloperPayload(/* payload */)
    .build()

client.acknowledgePurchase(acknowledgePurchaseParams, listener)

Attach a developer payload in Android Billing Library v2.0

答案 1 :(得分:0)

找到答案,名字已经改变,因此混乱。

BillingFlowParams构建器公开了一个名为setAccountId(String accountId)的函数。该功能的定义是:

  

指定可选的混淆字符串,该字符串与用户的帐户唯一关联         你的应用。        如果您传递此值,Google Play可以使用它来检测不规则的活动,例如很多         设备在短时间内在同一帐户上购物。不要使用         此字段的开发者ID或用户的Google ID。另外,这个领域不应该         以明文形式包含用户的ID。我们建议您使用单向哈希生成         来自用户ID的字符串,并将散列字符串存储在此字段中。

我认为这是指定开发人员有效负载的新方法,或者用于额外验证层的任何额外字符串。 所以代码看起来像这样:

private fun makePurchaseFromGoogle(developerPayload : String) {
    val purchaseParams = BillingFlowParams.newBuilder()
            .setSku(product.sku)
            .setType(product.type)
            .setAccountId(developerPayload) // dev-payload
            .build()
    googleBillingClient.launchBillingFlow(activity, purchaseParams)
}