簡體   English   中英

應用內計費確認購買問題[使用谷歌播放應用內計費庫]

[英]In-app billing acknowledgePurchase issue [using google play in-app billing library]

我是 android 新手,第一次嘗試實現應用內計費。

我正在使用谷歌播放應用程序庫。 https://developer.android.com/google/play/billing/billing_library_overview

我想實現可消耗的應用內購買。 我正在使用 'android.test.purchased' 保留 ID 進行測試。 我可以加載skuDetails並成功購買並成功消費購買

這是我的 handlePurchase 方法,它使用了 consumerAsync

void handlePurchase(Purchase purchase) {



BillingClient client = BillingClient.newBuilder(NewAdActivity.this)
        .enablePendingPurchases() 
        .setListener(this)
        .build();


if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
     System.out.println("item successfully purchased");


        if (!purchase.isAcknowledged()) {


                    ConsumeParams consumeParams = ConsumeParams.newBuilder()
                        .setPurchaseToken(purchase.getPurchaseToken())
                        .setDeveloperPayload(purchase.getDeveloperPayload())
                        .build();


                     ConsumeResponseListener consumeResponseListener = new ConsumeResponseListener() {
                    @Override
                    public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
                          if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchaseToken != null) {
                              System.out.println("SUCCESSFULLY consumed PURCHASE");
                              providecontent();

                           } 
                        else { 
                              System.out.println("FAILED TO consume:”);
                            }

                    }

                };

                client.consumeAsync(consumeParams, consumeResponseListener); 



        }

    }



}

當我消費購買時,它是否也承認購買? 我是否需要手動設置“acknowledged”:true 在 purchase.originalJson 中?

我的代碼是否正確消耗購買的物品? 或者我需要在消費項目之前包括一個單獨的acknowledgePurchase。

請回復。 任何幫助都非常感謝。

謝謝。

對於消費品,您希望使用consumeAsync()。 對於不可消耗的產品,您需要使用acknowledgePurchase()。 有關在您的應用中確認購買的更多信息,請查看官方文檔: https : //developer.android.com/google/play/billing/billing_library_overview#acknowledge

歡迎使用 stackoverflow!

您錯誤地使用了consumeAsync() ,要確認購買,您應該調用consumeAsync() acknowledgePurchase()

consumeAsync()刪除購買的物品,例如,如果購買允許用戶玩 10 次並且他使用了所有這些,那么您將調用consumeAsync()讓用戶再次購買該物品

一個例子:

  if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
            // Grant entitlement to the user.
            boolean signOk = verifyPurchaseSignature(purchase.getOriginalJson(), purchase.getSignature());
            if (!signOk) {
                // Alert the user about wrong signature
                return;
            } else if (!purchase.isAcknowledged()) {
                AcknowledgePurchaseParams acknowledgePurchaseParams =
                        AcknowledgePurchaseParams.newBuilder()
                                .setPurchaseToken(purchase.getPurchaseToken())
                                .build();
                billingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
                    @Override
                    public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
                        //Give thanks for the purchase                        

                    }
                });
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM