From 4afd755bdec9143ccd0aa44f27d9e5fa779b61f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Apr 2026 17:15:11 +0000 Subject: [PATCH 1/2] Bump com.google.android.gms:play-services-wallet from 19.5.0 to 20.0.0 Bumps com.google.android.gms:play-services-wallet from 19.5.0 to 20.0.0. --- updated-dependencies: - dependency-name: com.google.android.gms:play-services-wallet dependency-version: 20.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4838d85687c..621287d92b8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,7 +12,7 @@ espressoVersion = "3.7.0" firebaseMessagingVersion = "24.1.2" flexbox = "3.0.0" fragmentKtx = "1.8.9" -googlePayVersion = "19.5.0" +googlePayVersion = "20.0.0" googleServices = "4.4.4" gradle = "9.1.0" hcaptcha = "4.4.0" From a93a622c9f2c21dbe0ea0ccf08006ed2a344a86e Mon Sep 17 00:00:00 2001 From: williamrai Date: Mon, 13 Apr 2026 13:58:09 -0400 Subject: [PATCH 2/2] - replaces removed AutoResolveHelper class with TaskResultContracts --- .../org/wikipedia/donate/GooglePayActivity.kt | 65 ++++++++----------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/app/src/extra/java/org/wikipedia/donate/GooglePayActivity.kt b/app/src/extra/java/org/wikipedia/donate/GooglePayActivity.kt index 51f8585d7d2..c85a935d946 100644 --- a/app/src/extra/java/org/wikipedia/donate/GooglePayActivity.kt +++ b/app/src/extra/java/org/wikipedia/donate/GooglePayActivity.kt @@ -14,11 +14,11 @@ import androidx.core.widget.addTextChangedListener import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle -import com.google.android.gms.wallet.AutoResolveHelper -import com.google.android.gms.wallet.PaymentData +import com.google.android.gms.common.api.CommonStatusCodes import com.google.android.gms.wallet.PaymentsClient import com.google.android.gms.wallet.button.ButtonConstants import com.google.android.gms.wallet.button.ButtonOptions +import com.google.android.gms.wallet.contract.TaskResultContracts import com.google.android.material.button.MaterialButton import kotlinx.coroutines.launch import org.json.JSONArray @@ -48,6 +48,30 @@ class GooglePayActivity : BaseActivity() { private val transactionFee get() = max(DonateUtil.getAmountFloat(binding.donateAmountText.text.toString()) * GooglePayComponent.TRANSACTION_FEE_PERCENTAGE, viewModel.transactionFee) + private val paymentDataLauncher = registerForActivityResult(TaskResultContracts.GetPaymentDataResult()) { taskResult -> + when (taskResult.status.statusCode) { + CommonStatusCodes.SUCCESS -> { + taskResult.result?.let { paymentData -> + viewModel.submit(paymentData, + binding.checkBoxTransactionFee.isChecked, + binding.checkBoxRecurring.isChecked, + if (viewModel.emailOptInRequired) binding.checkBoxAllowEmail.isChecked else true, + intent.getStringExtra(DonateDialog.ARG_CAMPAIGN_ID).orEmpty().ifEmpty { CAMPAIGN_ID_APP_MENU }) + } + } + + CommonStatusCodes.CANCELED -> { + // The user cancelled the payment attempt + } + + CommonStatusCodes.ERROR -> { + taskResult.status.statusMessage?.let { message -> + FeedbackUtil.showMessage(this, message) + } + } + } + } + public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityDonateBinding.inflate(layoutInflater) @@ -122,10 +146,8 @@ class GooglePayActivity : BaseActivity() { DonorExperienceEvent.submit("donate_confirm_click", "gpay", "add_transaction: ${binding.checkBoxTransactionFee.isChecked}, recurring: ${binding.checkBoxRecurring.isChecked}, email_subscribe: ${binding.checkBoxAllowEmail.isChecked}") - AutoResolveHelper.resolveTask( - paymentsClient.loadPaymentData(viewModel.getPaymentDataRequest()), - this, LOAD_PAYMENT_DATA_REQUEST_CODE - ) + val task = paymentsClient.loadPaymentData(viewModel.getPaymentDataRequest()) + task.addOnCompleteListener(paymentDataLauncher::launch) } binding.donateAmountText.addTextChangedListener { text -> @@ -280,38 +302,7 @@ class GooglePayActivity : BaseActivity() { shouldWatchText = true } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - - if (requestCode == LOAD_PAYMENT_DATA_REQUEST_CODE) { - when (resultCode) { - RESULT_OK -> { - data?.let { dataIntent -> - PaymentData.getFromIntent(dataIntent)?.let { paymentData -> - viewModel.submit(paymentData, - binding.checkBoxTransactionFee.isChecked, - binding.checkBoxRecurring.isChecked, - if (viewModel.emailOptInRequired) binding.checkBoxAllowEmail.isChecked else true, - intent.getStringExtra(DonateDialog.ARG_CAMPAIGN_ID).orEmpty().ifEmpty { CAMPAIGN_ID_APP_MENU }) - } - } - } - RESULT_CANCELED -> { - // The user cancelled the payment attempt - } - AutoResolveHelper.RESULT_ERROR -> { - AutoResolveHelper.getStatusFromIntent(data)?.let { - it.statusMessage?.let { message -> - FeedbackUtil.showMessage(this, message) - } - } - } - } - } - } - companion object { - private const val LOAD_PAYMENT_DATA_REQUEST_CODE = 42 private const val CAMPAIGN_ID_APP_MENU = "appmenu" const val FILLED_AMOUNT = "filledAmount"