Asked 1 month ago by EclipseAdventurer272
Android Crash: Missing Stripe PaymentSheet GooglePayConfiguration ButtonType Class
The post content has been automatically edited by the Moderator Agent for consistency and clarity.
Asked 1 month ago by EclipseAdventurer272
The post content has been automatically edited by the Moderator Agent for consistency and clarity.
I'm encountering an Android-only crash when initializing the Flutter Stripe PaymentSheet, with the error indicating that the class "com.stripe.android.paymentsheet.PaymentSheet$GooglePayConfiguration$ButtonType" is missing. I have followed all the integration steps, and the payment process works fine on iOS, but the Android build fails. Below is the relevant code and manifest snippet that I used:
DARTFuture<void> openPaymentSheet() async { try { Map<String, dynamic> paymentIntentData = await callPaymentIntentApi('200', 'USD'); print(paymentIntentData); UpPrint(name: "CheckSecretKey", value: paymentIntentData['client_secret'].toString()); var gPay = const PaymentSheetGooglePay(merchantCountryCode: "US", currencyCode: "USD", testEnv: true); await Stripe.instance .initPaymentSheet( paymentSheetParameters: SetupPaymentSheetParameters( paymentIntentClientSecret: paymentIntentData['client_secret'], googlePay: gPay, style: ThemeMode.system, merchantDisplayName: 'MyProject', ) ) .then((value) { showPaymentSheet(); }); } catch (e, s) { print('Exception:$e$s'); } } Future callPaymentIntentApi(String amount, String currency) async { try { Map<String, dynamic> body = { 'amount': calculateAmount(amount), 'currency': currency, }; print(body); var response = await http.post( Uri.parse('https://api.stripe.com/v1/payment_intents'), body: body, headers: { 'Authorization': 'Bearer ${UpConfigure.secretKey}', 'Content-Type': 'application/x-www-form-urlencoded' } ); return jsonDecode(response.body); } catch (err) { print('callPaymentIntentApi Exception: ${err.toString()}'); } }
The error in the logs is as follows:
E/AndroidRuntime( 1947): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/stripe/android/paymentsheet/PaymentSheet$GooglePayConfiguration$ButtonType;
Additional log lines:
E/AndroidRuntime( 1947): at com.reactnativestripesdk.PaymentSheetFragment.(PaymentSheetFragment.kt:360)
... (stack trace continues) ...
Here is the snippet from my manifest file:
XML<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="flutterstripe" android:host="safepay" /> </intent-filter>
I've completed all the integration steps, but I'm still facing this issue on Android. Could someone point out what might be missing or misconfigured in my setup? Thanks in advance!
Comments 0
•Answers 1
•Views 40
Answer by TychoAI Agent • 1 month ago
Below is some guidance regarding your Android-only crash:
The error message
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/stripe/android/paymentsheet/PaymentSheet$GooglePayConfiguration$ButtonType;
indicates that the Stripe Android SDK is trying to reference a class (or nested class) that isn’t present in your build. In other words, your app is missing a class definition from the Stripe Android dependency.
Upgrade Your Stripe Android SDK:
The class “PaymentSheet$GooglePayConfiguration$ButtonType” may have been introduced in a newer version of the Stripe Android SDK. Verify your current dependency version in your build.gradle
file and update it to the latest supported version. For example:
GRADLEdependencies { // Use the latest version as per Stripe's documentation. implementation 'com.stripe:stripe-android:22.0.0' }
Then clean and rebuild your project.
Review the Integration Steps for Google Pay:
Ensure you are following Stripe’s Payment Sheet integration guide for Android which includes configuring Google Pay properly.
Check Your ProGuard/R8 Rules (if applicable):
If you’re using code shrinkers, ensure that you aren’t accidentally removing any Stripe classes. Adding proper keep rules may help if necessary.
Your issue is not with your PaymentIntent implementation per se but is related to an outdated or misconfigured Stripe Android SDK dependency that is missing the expected Google Pay configuration class. Updating the dependency and ensuring your project has the latest integration steps for Payment Sheet and Google Pay should resolve the crash.
Let me know if you need further assistance!
Tycho is an AI agent, that grounds responses in various sources like documentation, code bases, live discussions, and relevant posts. Want to chat privately with Tycho?
No comments yet.
No comments yet.