android 计费 3 到 5 - PurchasesResult、queryPurchases、getPurchasesList、getSku

Ric*_*Joe 8 android android-billing

我想使用 android billing 版本 5。问题是我使用的是版本 3,有些功能现在已弃用。

我有这个,但PurchasesResult、queryPurchases 和 getPurchasesList 不再存在:

@Override
            public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
                if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK){
                    Purchase.PurchasesResult queryPurchase = billingClient.queryPurchases(INAPP);
                    List<Purchase> queryPurchases = queryPurchase.getPurchasesList();
                    if(queryPurchases!=null && queryPurchases.size()>0){
                        handlePurchases(queryPurchases);
                    }
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它在版本 5 上工作?

也无法解析 getSku():

//if purchase is pending
            else if( PRODUCT_ID.equals(purchase.getSku()) && purchase.getPurchaseState() == Purchase.PurchaseState.PENDING)
            {
                Toast.makeText(getApplicationContext(),
                        R.string.plus_pending, Toast.LENGTH_SHORT).show();
            }
Run Code Online (Sandbox Code Playgroud)

谢谢

Chu*_*uck 7

他是 Google Play 计费库 4 到 5 迁移指南 https://developer.android.com/google/play/billing/migrate-gpblv5#processing-purchases

从您的示例来看,我想说您必须致电billingClient.queryPurchasesAsync。并且您不再需要调用queryPurchase.getPurchasesList(),您将收到作为 Listener 参数返回的购买列表。

billingClient.queryPurchasesAsync(
QueryPurchasesParams.newBuilder().setProductType(ProductType.SUBS).build(),
new PurchasesResponseListener() {
    public void onQueryPurchasesResponse(
            @NonNull BillingResult billingResult,
            @NonNull List<Purchase> purchases) {
        // Process the result
        if(purchases.size()>0){
            handlePurchases(purchases);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)