我们需要将应用程序购买信息与用户在我们的服务器上关联起来。对于应用内商品,这很容易实现,因为我们可以接收购买令牌。
如何为直接从Google Play下载的付费应用程序实现相同的功能?我们找不到一种方法来接收订单ID或购买令牌以记录在我们的服务器上。
我们需要将应用程序购买信息与用户在我们的服务器上关联起来。对于应用内商品,这很容易实现,因为我们可以接收购买令牌。
如何为直接从Google Play下载的付费应用程序实现相同的功能?我们找不到一种方法来接收订单ID或购买令牌以记录在我们的服务器上。
支持开发者有效负载
Google Play计费库的2.0版本增加了对开发者有效负载的支持——可以附加到购买中的任意字符串。您可以将开发者有效负载参数附加到购买中,但仅在确认或消耗购买时才能这样做。这与AIDL中的开发者有效负载不同,在那里可以在启动购买流程时指定有效负载。因为现在可以从应用程序外部启动购买,所以此更改确保您始终有机会向购买添加有效负载。
在新库中访问有效负载,Purchase对象现在包括一个getDeveloperPayload()方法。
注意:分配有效负载后无法修改。
这里是一些示例代码:
可消耗品
BillingClient client = ...
ConsumeResponseListener listener = ...
ConsumeParams consumeParams =
ConsumeParams.newBuilder()
.setPurchaseToken(/* token */)
.setDeveloperPayload(/* payload */)
.build();
client.consumeAsync(consumeParams, listener);
非消耗品
BillingClient client = ...
AcknowledgePurchaseResponseListener listener = ...
AcknowledgePurchaseParams acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(/* token */)
.setDeveloperPayload(/* payload */)
.build();
client.acknowledgePurchase(acknowledgePurchaseParams, listener)