从Google Play获取付费应用的购买令牌

7

我们需要将应用程序购买信息与用户在我们的服务器上关联起来。对于应用内商品,这很容易实现,因为我们可以接收购买令牌。

如何为直接从Google Play下载的付费应用程序实现相同的功能?我们找不到一种方法来接收订单ID或购买令牌以记录在我们的服务器上。


你没有访问你的客户购买应用程序的标识符吗? - axel axel
@axelaxel 如果您能告诉我如何获取购买应用程序的人的ID /电子邮件,那将解决我们的问题。不幸的是,我们不知道这样的方法。可以在设备上获取与Google Play连接的帐户列表。但是,无法确定哪个帐户实际购买了该应用程序。 - Andriy Gordiychuk
你找到解决方案了吗?我遇到了类似的问题,当用户在 Google Play 内恢复过期的订阅时 - 只会创建一个带有新令牌的新付款。而我不知道如何将其连接到后端用户。 - violarium
1个回答

0
我在研究自己的问题时遇到了这个问题和你的问题。我认为this可能是你要找的:

支持开发者有效负载

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)

2
你提到了Google Play计费库,它用于销售应用内产品。但是我们可以使用购买令牌和订单ID来跟踪应用内购买。问题是如何跟踪在Google Play中购买的已下载应用程序。 - Vitaly Zinchenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接