Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removing the confirm step causes stripe failed payments (due to 3DS) to show up as paid #313

Open
ulysses-bull opened this issue Aug 11, 2023 · 0 comments
Labels
bug Something isn't working

Comments

@ulysses-bull
Copy link

If you remove the checkout confirmation step and a 3D secure is needed, the order will be completed with payment status "paid" without the 3D secure popup appearing, but in Stripe dashboard the payment will have the status "requires_action".

Solidus Version: 4.0.0

To Reproduce

  1. Setup a new store with the starter front end and stripe
  2. Remove the confirmation step from the checkout flow, as suggested in the guides
#app/overrides/my_app/spree/order/remove_checkout_step.rb
# frozen_string_literal: true

module MyApp
  module Spree
    module Order
      module RemoveCheckoutStep
        def self.prepended(base)
          base.remove_checkout_step :confirm
        end

        ::Spree::Order.prepend self
      end
    end
  end
end
  1. Create an order and pay using a stripe test card that requires a 3DS Challenge.

Current behavior
The order will be completed with payment status "paid" even if the 3D secure challenge has never been presented.

Expected behavior
Ideally, a 3DS pop-up should appear when the users tries to advance from the payment step. Since removing the confirm step could be considered a significant modification of the default/supported checkout flow, it might be reasonable to expect developers to handle presenting the 3DS challenge themselves, but, displaying a payment as paid when this was never the case on stripe's side is probably a bug.

Screenshots
Screenshot of expected pop-up:
Captura de tela 2023-08-11 141651

Additional context
Currently, due to the acceptable transitions in the order state machine, removing the confirmation step will also raise an exception if a payment fails, as the order will attempt to transition from payment to payment_failed, which is not currently allowed.

@ulysses-bull ulysses-bull added the bug Something isn't working label Aug 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant