仍会在购买中显示消耗性的IAP吗?

时间:2020-09-15 21:41:41

标签: android-studio google-play in-app-purchase

我在Android Studio中。当我收到购买的商品时,仍然显示我以为已经消费的购买商品。

这是我的提手购买

void handlePurchases(List<Purchase>  purchases) {
        String str;
        int numberOfPurchases = 0;

        for(Purchase purchase:purchases) {
            switch(purchase.getPurchaseState()) {
                case Purchase.PurchaseState.PURCHASED:
                    if (!verifyValidSignature(purchase.getOriginalJson(), purchase.getSignature())) {
                        // Invalid purchase
                        // show error to user
                        Toast.makeText(getApplicationContext(), "Error : Invalid Purchase", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    // else purchase is valid
                    //if item is purchased and not acknowledged
                    if (!purchase.isAcknowledged()) {
                        AcknowledgePurchaseParams acknowledgePurchaseParams =
                                AcknowledgePurchaseParams.newBuilder()
                                        .setPurchaseToken(purchase.getPurchaseToken())
                                        .build();
                        mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, ackPurchase);
                    }
                    //else item is purchased and also acknowledged
                    else {
                        numberOfPurchases++;

                        // HOW DOES IT KNOW IF IT IS CONSUMED???

                        // DONT DELETE - if you want to keep on consuming
                        // ConsumeParams consumeParams = ConsumeParams.newBuilder()
                        //        .setPurchaseToken(purchase.getPurchaseToken())
                        //        .build();
                        //
                        //ConsumeResponseListener consumeResponseListener = new ConsumeResponseListener() {
                        //    @Override
                        //    public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
                        //
                        //        Toast.makeText(DiamondsActivity.this, "Purchase successful", Toast.LENGTH_SHORT).show();
                        //
                        //        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                        //
                        //            if (purchase.getSku().equalsIgnoreCase(ITEM_SKU_diamond_500)) {
                        //                Toast.makeText(DiamondsActivity.this, "Thank you for purchasing!", Toast.LENGTH_SHORT).show();
                        //            }
                        //        }
                        //    }
                        //};
                        //billingClient.consumeAsync(consumeParams, consumeResponseListener);
                    }
                    break;
                case Purchase.PurchaseState.PENDING:
                    Toast.makeText(getApplicationContext(), "Purchase is Pending. Please complete Transaction", Toast.LENGTH_SHORT).show();
                    break;
                case Purchase.PurchaseState.UNSPECIFIED_STATE:
                    Toast.makeText(getApplicationContext(), "Purchase Status Unknown", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }

关键点是// HOW DOES IT KNOW IF IT IS CONSUMED???

如何确定购买的商品是否已消费?

已消费的购买是否仍在购买阵列中?

我的IAP的Google Play程序员帐户中应该做些什么吗,例如某种标志来说明它是可消耗的?

0 个答案:

没有答案