我已经在我的应用程序的购买应用程序中实现了Android。购买时有问题。一些用户无需购买即可获得奖励。因此,我如何理解用户是否成功购买。如果购买成功,他将获得奖励。

谁能检查我的工具是否正常?我还需要添加更多内容来了解​​用户购买是否成功。请帮我解决问题。

mBillingClient = BillingClient.newBuilder(this).setListener(this).build();
        mBillingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(int responseCode) {
                List skuList = new ArrayList<>();
                skuList.add(ITEM_S);
                skuList.add(ITEM_G);
                skuList.add(ITEM_D);
                SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
                params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);

                mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(int responseCode, List skuDetailsList) {
                        // Process the result.
                        if (responseCode != BillingClient.BillingResponse.OK && skuDetailsList == null) {

                    }
                });

                Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);

                for (Purchase purchase : purchasesResult.getPurchasesList()) {
                    consumePurchase(purchase);
                }
            }

            @Override
            public void onBillingServiceDisconnected() {

            }
        });



    @Override
        public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {

            if (responseCode == BillingClient.BillingResponse.OK
                    && purchases != null) {
                for (Purchase purchase : purchases) {


                    consumePurchase(purchase);

                }
            }


        }

最佳答案

在消费现有购买商品时,请勿奖励您的用户。

handlePurchase(purchase);方法中删除consumePurchase方法调用。

如果购买成功,则奖励您的用户。您将在onPurchasesUpdated方法中获得与购买相关的回调。

您的实现将如下所示:

@Override
public void onPurchasesUpdated(
        BillingResult billingResult,
        List<Purchase> purchases) {

    if (responseCode == BillingClient.BillingResponse.OK
                && purchases != null) {

            for (Purchase purchase : purchases) {

                handlePurchase(purchase);
                consumePurchase(purchase);

            }
        }
}


B.N.这不是一个可靠的实现,这只是一个sudo代码。

关于java - 如何检查用户是否成功购买,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57643285/

10-14 10:59