jonasbark / flutter_stripe_payment

[DISCONTINUED] A flutter plugin with stripe payment plugin integration
MIT License
308 stars 244 forks source link

No virtual method getCVC()Ljava/lang/String; in class Lcom/stripe/android/model/Card; or its super classes #183

Closed sam-parks closed 4 years ago

sam-parks commented 4 years ago

I'm getting this issue on android when I use StripePayment.paymentRequestWithNativePay. I am using the test environment and a test stripe key.

Sample Code

StripePayment.paymentRequestWithNativePay(
        androidPayOptions: AndroidPayPaymentRequest(
            currencyCode: "USD",
            totalPrice: _planCost,
            billingAddressRequired: false),
        applePayOptions: ApplePayPaymentOptions(
          countryCode: "US",
          currencyCode: "USD",
          items: [
            ApplePayItem(
              type: "Subscription",
              label: 'Cortado ' +
                  widget.reviewYourPlanPageArguments.planName +
                  " Subscription",
              amount: _planCost,
            )
          ],
          requiredBillingAddressFields: [RequiredBillingAddressFields.all],
        ))

Error D/AndroidRuntime(10687): Shutting down VM E/AndroidRuntime(10687): FATAL EXCEPTION: main E/AndroidRuntime(10687): Process: com.cortado.cortadoapp, PID: 10687 E/AndroidRuntime(10687): java.lang.NoSuchMethodError: No virtual method getCVC()Ljava/lang/String; in class Lcom/stripe/android/model/Card; or its super classes (declaration of 'com.stripe.android.model.Card' appears in /data/app/com.cortado.cortadoapp-c2hPOA-9GQ74GBnvU25kDA==/base.apk:classes3.dex) E/AndroidRuntime(10687): at com.gettipsi.stripe.util.Converters.convertCardToWritableMap(Converters.java:89) E/AndroidRuntime(10687): at com.gettipsi.stripe.util.Converters.convertTokenToWritableMap(Converters.java:52) E/AndroidRuntime(10687): at com.gettipsi.stripe.GoogleApiPayFlowImpl.onActivityResult(GoogleApiPayFlowImpl.java:241) E/AndroidRuntime(10687): at com.gettipsi.stripe.StripeModule$1.onActivityResult(StripeModule.java:73) E/AndroidRuntime(10687): at io.flutter.embedding.engine.FlutterEnginePluginRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEnginePluginRegistry.java:691) E/AndroidRuntime(10687): at io.flutter.embedding.engine.FlutterEnginePluginRegistry.onActivityResult(FlutterEnginePluginRegistry.java:378) E/AndroidRuntime(10687): at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onActivityResult(FlutterActivityAndFragmentDelegate.java:597) E/AndroidRuntime(10687): at io.flutter.embedding.android.FlutterActivity.onActivityResult(FlutterActivity.java:582) E/AndroidRuntime(10687): at android.app.Activity.dispatchActivityResult(Activity.java:7255) E/AndroidRuntime(10687): at android.app.ActivityThread.deliverResults(ActivityThread.java:4499) E/AndroidRuntime(10687): at android.app.ActivityThread.handleSendResult(ActivityThread.java:4546) E/AndroidRuntime(10687): at android.app.ActivityThread.-wrap20(Unknown Source:0) E/AndroidRuntime(10687): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1750)

_Originally posted by @sam-parks in https://github.com/jonasbark/flutter_stripe_payment/issues/164#issuecomment-659420745_

jonasbark commented 4 years ago

Are you using another stripe package? This can happen when multiple versions of the Stripe Android libraries are used.

sam-parks commented 4 years ago

The only stripe related package I have in my pubspec.yaml is stripe_payment ^1.0.7

sam-parks commented 4 years ago

I do see two references to Stripe my Podfile.lock:

 Stripe: d481c2dab9a892fd923f097f854661217f70dc7f
 stripe_payment: ad86f099179edb7b9fe12b9b62ac3746d5e56802

Would this be an issue?

sam-parks commented 4 years ago

Here are the dependencies in my pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter

  http: ^0.12.0+2

 # GEOLOCATION
  geolocator: ^5.3.2+2
  geocoder: ^0.2.1
  location: ^3.0.2
  google_maps_flutter: ^0.5.25+3
  flutter_google_places: ^0.2.4
  google_maps_webservice: ^0.0.16

  # FORMATTING
  auto_size_text: ^2.1.0
  intl: ^0.16.1

  # UTILITIES
  equatable: ^1.2.0
  path_provider: ^1.6.1
  url_launcher: ^5.4.2
  path: ^1.6.4
  linkify: ^2.0.3
  flutter_linkify: ^3.1.0
  get_it: ^3.1.0
  async: ^2.4.0
  flutter_spinkit: ^4.1.2+1
  device_simulator: ^0.9.6
  google_sign_in: ^4.4.2
  test: ^1.14.2
  dio: ^3.0.9
  date_utils: ^0.1.0
  quiver: ^2.0.5
  flushbar: ^1.10.4
  maps_launcher: ^1.2.0
  random_string: ^2.0.1
  wiredash: ^0.1.0
  apple_sign_in: ^0.1.0
  device_info: ^0.4.1+4

  #BLOC and PROVIDER
  flutter_bloc: ^4.0.0
  provider: ^4.0.4
  rxdart: ^0.23.1
  sortedmap: ^0.4.2+1

  # Billing
  stripe_payment: ^1.0.7
  credit_card_number_validator: ^1.0.4

  # FIREBASE
  firebase_core: 0.4.0+9
  firebase_auth: ^0.15.3+1
  firebase_dynamic_links: 0.5.0+1
  cloud_firestore: 0.12.9+4
  cloud_functions: ^0.4.1

  # IMAGES
  flutter_launcher_icons: ^0.7.5
  flutter_svg: ^0.18.0

  # Widgets
  pin_code_fields: ^2.4.0
  gradient_app_bar: ^0.1.3
  keyboard_avoider: ^0.1.2
  flutter_keyboard_visibility: ^0.7.0
  flutter_auth_buttons: ^0.8.0
  flutter_brand_icons: ^1.1.0
  font_awesome_flutter: ^8.8.1

Do you have any idea what could be going wrong? This is the only blocker I have for my application before releasing it to the play store. Thanks

sam-parks commented 4 years ago

Fixed! You were right, I had added a dependency in my build.gradle a while back for another stripe package:

 implementation 'com.stripe:stripe-android:14.5.0'