Skip to content

Duplicate Payments: Open two checkout tabs, and use 3DS cards with non-UPE flow #5678

@htdat

Description

@htdat

Describe the bug

Duplicate payments for a single order happens when shoppers open two checkout tabs, use 3DS cards, and confirm 3DS modals in both tabs in between.

To Reproduce

  • Use non-UPE flow or a saved card in UPE flows (as it eventually routes to non-UPE flow)
  • Add one or some products into cart.
  • Go to the checkout page (tab 1), and make a payment with a 3DS card - 4000 0027 6000 3184, which always triggers authentication (See more https://woocommerce.com/document/woocommerce-payments/testing-and-troubleshooting/testing/#3ds-test-cards)
  • See the modal to confirm the payment in tab 1. BUT STOP, do not confirm.
  • Open the checkout page on another tab (tab 2), and use the same card for the checkout.
  • See the modal to confirm the payment in tab 2, and confirm it.
  • Go to tab 1, confirm the modal.

Actual behavior

  • Check the latest order, there will be two payments (payment intents) in this order.
  • Confirm this in the Stripe Dashboard too.

Screenshots

Expected behavior

Only one payment should be processed, the other one should be void.

Additional context

See Order 1564354 - date: 2023-02-07 in this spike with a real merchant site - repo: woocommerce-payments-meta/issues/75#issuecomment-1455511181

Metadata

Metadata

Assignees

Labels

category: coreWC Payments core related issues, where it’s obvious.component: checkoutIssues related to Checkoutstatus: blockedThe issue is blocked from progressing, waiting for another piece of work to be done.type: bugThe issue is a confirmed bug.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions