laravel-shop/tests/Unit/Stripe
Fabian @ Blax Software 6aae653dac fix(stripe): safe return from Checkout, retries and duplicate events
- checkoutSession() keeps pending purchases in step with the cart: a buyer
  who cancels on Stripe and edits the cart pays for (and is invoiced) the
  cart as it is, not the first attempt.
- checkout.session.completed is idempotent and locked per payment: a
  redelivered event, a concurrent charge.succeeded or the success page
  record the payment once. An unpaid (async) session creates the order but
  records no payment until Stripe settles it.
- New StripeCheckoutConfirmation + WS cart.confirm {session_id}: the
  success page settles a paid session through the webhook's code path, so
  the order exists the moment the buyer is back.
- CartService::guest() never hands a converted cart back to its session.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 12:03:38 +02:00
..
StripeCheckoutReturnTest.php fix(stripe): safe return from Checkout, retries and duplicate events 2026-09-25 12:03:38 +02:00
StripeCheckoutTotalsTest.php fix(stripe): take checkout totals (shipping, discount, tax) from the session 2026-09-24 11:30:55 +02:00
StripeRefundTest.php fix(stripe): cents everywhere, idempotent refunds, admin refunds, webhook ledger sync 2026-09-24 10:50:25 +02:00
StripeWebhookAddressTest.php feat(i18n,stripe): de/pl translations + order address snapshots from Checkout Session 2026-09-21 13:39:40 +02:00
StripeWebhookOrderModelTest.php fix(orders): dispatch OrderPaid once; honour shop.models.order on webhook + service paths 2026-09-24 08:22:55 +02:00
StripeWebhookOrderTest.php fix(stripe): cents everywhere, idempotent refunds, admin refunds, webhook ledger sync 2026-09-24 10:50:25 +02:00