- Notifications
You must be signed in to change notification settings - Fork 72
Closed
Labels
category: coreWC Payments core related issues, where it’s obvious.WC Payments core related issues, where it’s obvious.component: checkoutIssues related to CheckoutIssues related to Checkoutstatus: blockedThe issue is blocked from progressing, waiting for another piece of work to be done.The issue is blocked from progressing, waiting for another piece of work to be done.type: bugThe issue is a confirmed bug.The issue is a confirmed bug.
Description
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.WC Payments core related issues, where it’s obvious.component: checkoutIssues related to CheckoutIssues related to Checkoutstatus: blockedThe issue is blocked from progressing, waiting for another piece of work to be done.The issue is blocked from progressing, waiting for another piece of work to be done.type: bugThe issue is a confirmed bug.The issue is a confirmed bug.