我正在从应用内结算 v3 迁移到 Play Billing Library v6.0.1。我陷入了困境,需要使用播放计费库 v6.0.1 查询并确认旧的(一次性)购买。通过应用内计费 v3,可以使用此方法轻松查询购买情况
.isPurchased()
无论是否购买商品都会返回。在这个新的播放计费库 v6.0.1 中,不存在这样方便的方法来轻松执行此任务。
提供一个代码示例,我可以在其中使用 Play Billing Library v6.0.1 查询和确认旧购买。
您可以使用此代码片段查询用户是否已经购买了您的任何订阅或一次性产品:
public static boolean isQueryPurchased = false;
public static boolean isAlreadyPurchaseQuery() {
if (billingClient.isReady()) {
billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder().setProductType(BillingClient.ProductType.INAPP).build(), new PurchasesResponseListener() {
@Override
public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
if (!list.isEmpty()){
if (list.contains("Your one-time product key")){
isQueryPurchased = true;
}
}
}
});
billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder().setProductType(BillingClient.ProductType.SUBS).build(), new PurchasesResponseListener() {
@Override
public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
if (!list.isEmpty()){
if (list.contains("Your subscription key")){
isQueryPurchased = true;
}
}
}
});
}
return isQueryPurchased;
}
初始化计费客户端后使用此方法。