如何检查用户是否成功购买

时间:2019-08-25 04:40:27

标签: java android in-app-purchase

我已经在我的应用程序的购买应用程序中实现了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);

                }
            }


        }

1 个答案:

答案 0 :(得分:0)

在购买现有商品时不要奖励用户。

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代码。