3DS authentication with Stripe.js 2?


I’ve scoured the web to find sources on how to use the stripe.js 2 plugin from @copilot and can’t find much at all.

I’m trying to get 3DS authentication working, here is the current flow:

  • User adds payment method (s)
  • We attach payment methods to the stripe customer
  • User creates an order
  • User selects the payment method they would like to use for this order
  • User clicks “Pay now”
  • We create a payment intent for the payment method (using the id)
  • No 3DS auth pop up so the payment fails in the stripe dashboard

Anyone know how to get this working?

Hey @veribuy,

We cover 3DS right in our Stripe Payments course. If you’d rather go with written material, check out Stripe’s documentation (it’s quite thorough!).

Feel free to reach out to plugins@withcopilot.com if you believe you’ve encountered a bug. :slight_smile:

I’m quite familiar with the stripe API’s but that doesn’t help me with the plugin - the problem is there is no written documentation for this plugin (which is guess in on purpose to increase sales to the paid course)

People are saying the course is out of date and doesn’t go into much detail, can you confirm that it goes over what i’m asking specifically?

i.e. how to bring up the authentication modal after creating a payment intent from a pre-existing card.

It might be a bug, i’ve uploaded a picture of the error message (“cannot read property confirmPayment”), the workflow is simply:

  • Create payment intent for payment method
  • Confirm payment with StripePaymentElement element action
  • Error

We don’t receive complaints like those you’ve mentioned, perhaps you’re referring to older courses or comments just on the forum. It’s difficult to verify purchases otherwise. We make it a point to keep the plugin up to date, as well as make periodic updates to the course. The course helps educate users and directly supports continued development of the plugin.

If you have more questions about the course, reach out to us at support@withcopilot.com. :raised_hands:

This doesn’t answer any of the question I posed so i’m assuming the course won’t cover my question

Just went through the process of setting up a stripe integration using stripe.js 2 using both Stripe Payments and Stripe Intents. I haven’t seen the course.

From what you wrote, it looks like you’re missing a step in the Payment Element Process. The correct order is:

  1. Create PaymentIntent
  2. Create Payment with StripeElementPayment
  3. Confirm Payment with StripeElementPayment
  4. Check for Success of Payment

I also set a state of client_secret after step 1 to capture the result of step 1 because I found the client_secret would go null during step 2 when using the insert dynamic response of “response from step 1’s client_secret” and throw an error.

Just looked at your picture again and it looks like you have the StripeElement loaded on the page (thin credit card input) but your workflow is using StripePaymentElement which is for the large multi-line credit card input version of stripe.js 2 Payment Element.

Assuming this is the case, you need to be using Stripe Element actions, not Stripe Payment Element actions.