stripe / stripe-android

Stripe Android SDK
https://stripe.com/docs/mobile/android
MIT License
1.25k stars 639 forks source link

[Feature] Add PaymentMethod object on PaymentOptionCallback #8071

Open Hospes opened 6 months ago

Hospes commented 6 months ago

Is your feature request related to a problem? Please describe.

I've implemented payment flow like described in this article paymentsheet-flowcontroller. Docs says that after using flowController.presentPaymentOptions() we will handle selected PaymentOption through PaymentOptionCallback to update our own UI if needed. In my case it's needed but PaymentOption doesn't contain all needed information. It has only label and icon but in my case I need to know what type of PaymentMethod was selected like paypal/klarna/card/etc...

Describe the solution you'd like

Add more usefull information about selected payment to PaymentOption, mostly needed information are exists in PaymentMethod class like type/id.

Describe alternatives you've considered

Would be perfect if we can receive and PaymentOption and PaymentMethod at the same time, so we can update our UI according to selected type of payment

Additional context

Currently to properly update our UI I have to fake start payment process and pass invalid clientSecret on CreateIntentCallback because I want to receive PaymentMethod and then I'm updating our UI with adjusted prices and then I'm again doing reconfig of FlowController and then I'm waiting for user starts payment process. I would like to avoid any fake actions

jaynewstrom-stripe commented 6 months ago

Hi @Hospes we recently added something similar on iOS: https://github.com/stripe/stripe-ios/pull/3165

Would adding the payment method type, and the billing details solve your use case?

(We don't actually create the PaymentMethod until flowController.confirm() is called, so we don't have it available in the callbacks.)

Hospes commented 6 months ago

@jaynewstrom-stripe my case - yes, if you add PaymentMethod.Type to PaymentOption will fully solve my problem.

jaynewstrom-stripe commented 6 months ago

@Hospes what if we add val paymentMethodType: String? Where the value would match PaymentMethod.Type.code?

I asked because we're also planning some upcoming features where we can't expose PaymentMethod.Type directly.

Hospes commented 6 months ago

@jaynewstrom-stripe Yes, it's fine by me. The main idea is to have constant that will explain selected type 👍

Hospes commented 2 months ago

Any news on this issue ? @jaynewstrom-stripe

jaynewstrom-stripe commented 2 months ago

Hi @Hospes, it's still on our backlog, no word on when we will pick it up yet.