gpt4 book ai didi

java - android 计费 :4. 0.0 - queryPurchases(INAPP) 和 purchase.getSku()

转载 作者:行者123 更新时间:2023-12-04 11:05:54 30 4
gpt4 key购买 nike

我刷新到 android billing 版本 4 和 2 东西不再工作了。
首先我有这个:

else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED) {
Purchase.PurchasesResult queryAlreadyPurchasesResult = billingClient.queryPurchases(INAPP); // deprecated
List<Purchase> alreadyPurchases = queryAlreadyPurchasesResult.getPurchasesList();
if(alreadyPurchases!=null){
handlePurchases(alreadyPurchases);
}
}
不推荐使用 queryPurchases。
其次我有这个:
void handlePurchases(List<Purchase>  purchases) {
for(Purchase purchase:purchases) {
//if item is purchased
if (PRODUCT_ID.equals(purchase.getSku()) && purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED)
{
if (!verifyValidSignature(purchase.getOriginalJson(), purchase.getSignature())) {
// Invalid purchase
// show error to user
Toast.makeText(getApplicationContext(), R.string.plus_error, Toast.LENGTH_SHORT).show();
return;
}
getSku() 正在工作,但现在它被标记为 Cannot resolve method getSku() in Purchase任何想法如何解决这个问题?

来自文档:
Summary of changes
Added BillingClient.queryPurchasesAsync() to replace BillingClient.queryPurchases() which will be removed in a future release.

Added Purchase#getSkus() and PurchaseHistoryRecord#getSkus(). These replace Purchase#getSku and PurchaseHistoryRecord#getSku which have been removed.
但我不知道如何在上面的代码中应用这个新命令。
如果我将 getSku 更改为 getSkus 我的 if if (PRODUCT_ID.equals(purchase.getSkus()) && purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED)会说它总是假的。而且我不知道如何使用 queryPurchasesAsync(),现在需要 2 个参数。
谢谢。

最佳答案

正如我之前在评论中提到的,您将 String 与 List 对象进行比较,但正如 chitgoks 所说,它是 ArrayList<String>而不是 List<String>正如我假设的那样。我不确定您是否会得到多个 sku 字符串(因为您可能不会同时订购多件东西?)但要么仔细查看它们以确保,要么捕获机会将 PRODUCT_ID 与 only 进行比较购买.getSkus().get(0)。
新的异步购买调用似乎只需要很小的改动。
旧方法的示例:

Purchase.PurchasesResult result = billingClient.queryPurchases(BillingClient.SkuType.SUBS);
doSomethingWithPurchaseList(result.getPurchasesList());
这将是做同样事情的新方法:
billingClient.queryPurchasesAsync(BillingClient.SkuType.SUBS, new PurchasesResponseListener() {
@Override
public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
doSomethingWithPurchaseList(list);
}
});

关于java - android 计费 :4. 0.0 - queryPurchases(INAPP) 和 purchase.getSku(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67607661/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com