From 5a4392f0c501d86c3b31bd33963475ae3065934f Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 23 May 2020 12:32:33 -0400 Subject: [PATCH] android: BillingManager: Purchases must be acknowledged. --- .../citra/citra_emu/utils/BillingManager.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/BillingManager.java b/src/android/app/src/main/java/org/citra/citra_emu/utils/BillingManager.java index ce155f98d..5dc54c235 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/utils/BillingManager.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/BillingManager.java @@ -3,7 +3,10 @@ package org.citra.citra_emu.utils; import android.app.Activity; import android.content.SharedPreferences; import android.preference.PreferenceManager; +import android.widget.Toast; +import com.android.billingclient.api.AcknowledgePurchaseParams; +import com.android.billingclient.api.AcknowledgePurchaseResponseListener; import com.android.billingclient.api.BillingClient; import com.android.billingclient.api.BillingClientStateListener; import com.android.billingclient.api.BillingFlowParams; @@ -15,6 +18,7 @@ import com.android.billingclient.api.SkuDetails; import com.android.billingclient.api.SkuDetailsParams; import org.citra.citra_emu.CitraApplication; +import org.citra.citra_emu.R; import org.citra.citra_emu.features.settings.utils.SettingsFile; import org.citra.citra_emu.ui.main.MainActivity; @@ -97,10 +101,23 @@ public class BillingManager implements PurchasesUpdatedListener { } } - if (premiumPurchase != null) { + if (premiumPurchase != null && premiumPurchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) { // Premium has been purchased updatePremiumState(true); + // Acknowledge the purchase if it hasn't already been acknowledged. + if (!premiumPurchase.isAcknowledged()) { + AcknowledgePurchaseParams acknowledgePurchaseParams = + AcknowledgePurchaseParams.newBuilder() + .setPurchaseToken(premiumPurchase.getPurchaseToken()) + .build(); + + AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener = billingResult1 -> { + Toast.makeText(mActivity, R.string.premium_settings_welcome, Toast.LENGTH_SHORT).show(); + }; + mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener); + } + if (mUpdateBillingCallback != null) { try { mUpdateBillingCallback.run();