Now let me also check if there are any remaining Stripe/PayPal references in the roadmap file.


25:| Payments | Stripe + PayPal | Mock PSP (in-process) | No external API calls. MockPaymentProvider handles credit card, PayPal, bank transfer with magic card numbers for testing. |
649:| `PaymentMethod` | `CreditCard`, `Paypal`, `BankTransfer` |
660:| Enum | `App\Enums\PaymentMethod` | CreditCard, Paypal, BankTransfer |
668:| `charge(Checkout $checkout, PaymentMethod $method, array $details): PaymentResult` | Processes payment in-process. For credit_card: validates magic card numbers, returns success/decline. For paypal: always succeeds. For bank_transfer: returns pending (deferred capture). |
674:- Credit card / PayPal: instant capture, returns PaymentResult with status=captured
996:| `tests/Feature/Payments/` | `StripeWebhookTest.php`, `PaymentServiceTest.php` |
1433:#### tests/Feature/Payments/StripeWebhookTest.php
1437:| handles checkout.session.completed webhook | POST /api/webhooks/stripe with valid signature and checkout.session.completed event | checkout completed, order created | happy path |
1440:| handles refund.created webhook | refund webhook from Stripe | refund record created/updated | happy path |
1450:| creates a Stripe checkout session | mock Stripe API; begin payment for checkout | session URL returned, payment record created | happy path |
1451:| resolves the correct payment provider | default config uses Stripe | resolved provider is StripePaymentProvider | happy path |
1885:| `Payments/StripeWebhookTest` | Stripe webhook feature tests |
1962:| `Payments\StripePaymentProvider` | Stripe Checkout Sessions, webhook handling |
1963:| `Payments\PaypalPaymentProvider` | Stub implementation |


There are more Stripe/PayPal references in the roadmap. Let me read those sections and fix them.


There are still Stripe/PayPal references in the test sections. Let me fix them.


   990→| `tests/Feature/Tenancy/` | `TenantResolutionTest.php`, `StoreIsolationTest.php` |
   991→| `tests/Feature/Auth/` | `AdminAuthTest.php`, `CustomerAuthTest.php`, `SanctumTokenTest.php` |
   992→| `tests/Feature/Products/` | `ProductCrudTest.php`, `VariantTest.php`, `InventoryTest.php`, `CollectionTest.php`, `MediaUploadTest.php` |
   993→| `tests/Feature/Cart/` | `CartServiceTest.php`, `CartApiTest.php` |
   994→| `tests/Feature/Checkout/` | `CheckoutFlowTest.php`, `CheckoutStateTest.php`, `PricingIntegrationTest.php`, `DiscountTest.php`, `ShippingTest.php`, `TaxTest.php` |
   995→| `tests/Feature/Orders/` | `OrderCreationTest.php`, `RefundTest.php`, `FulfillmentTest.php` |
   996→| `tests/Feature/Payments/` | `StripeWebhookTest.php`, `PaymentServiceTest.php` |
   997→| `tests/Feature/Customers/` | `CustomerAccountTest.php`, `AddressManagementTest.php` |
   998→| `tests/Feature/Admin/` | `DashboardTest.php`, `ProductManagementTest.php`, `OrderManagementTest.php`, `DiscountManagementTest.php`, `SettingsTest.php` |
   999→| `tests/Feature/Search/` | `SearchTest.php`, `AutocompleteTest.php` |
  1000→| `tests/Feature/Analytics/` | `EventIngestionTest.php`, `AggregationTest.php` |
  1001→| `tests/Feature/Webhooks/` | `WebhookDeliveryTest.php`, `WebhookSignatureTest.php` |
  1002→| `tests/Feature/Api/` | `StorefrontCartApiTest.php`, `StorefrontCheckoutApiTest.php`, `AdminProductApiTest.php`, `AdminOrderApiTest.php` |
  1003→| `tests/Browser/` | Covered in `08-PLAYWRIGHT-E2E-PLAN.md` |
  1004→
  1005→---
  1006→
  1007→### Unit Tests
  1008→
  1009→---

| `tests/Feature/Tenancy/` | `TenantResolutionTest.php`, `StoreIsolationTest.php` |
| `tests/Feature/Auth/` | `AdminAuthTest.php`, `CustomerAuthTest.php`, `SanctumTokenTest.php` |
| `tests/Feature/Products/` | `ProductCrudTest.php`, `VariantTest.php`, `InventoryTest.php`, `CollectionTest.php`, `MediaUploadTest.php` |
| `tests/Feature/Cart/` | `CartServiceTest.php`, `CartApiTest.php` |
| `tests/Feature/Checkout/` | `CheckoutFlowTest.php`, `CheckoutStateTest.php`, `PricingIntegrationTest.php`, `DiscountTest.php`, `ShippingTest.php`, `TaxTest.php` |
| `tests/Feature/Orders/` | `OrderCreationTest.php`, `RefundTest.php`, `FulfillmentTest.php` |
| `tests/Feature/Payments/` | `StripeWebhookTest.php`, `PaymentServiceTest.php` |
| `tests/Feature/Customers/` | `CustomerAccountTest.php`, `AddressManagementTest.php` |
| `tests/Feature/Admin/` | `DashboardTest.php`, `ProductManagementTest.php`, `OrderManagementTest.php`, `DiscountManagementTest.php`, `SettingsTest.php` |
| `tests/Feature/Search/` | `SearchTest.php`, `AutocompleteTest.php` |
| `tests/Feature/Analytics/` | `EventIngestionTest.php`, `AggregationTest.php` |
| `tests/Feature/Webhooks/` | `WebhookDeliveryTest.php`, `WebhookSignatureTest.php` |
| `tests/Feature/Api/` | `StorefrontCartApiTest.php`, `StorefrontCheckoutApiTest.php`, `AdminProductApiTest.php`, `AdminOrderApiTest.php` |
| `tests/Browser/` | Covered in `08-PLAYWRIGHT-E2E-PLAN.md` |

---

### Unit Tests

---


  1425→| adds tracking information | ship fulfillment with tracking_company="DHL", tracking_number="123456" | tracking info saved, shipped_at set | happy path |
  1426→| transitions fulfillment from pending to shipped | ship fulfillment | status = shipped | happy path |
  1427→| transitions fulfillment from shipped to delivered | deliver fulfillment | status = delivered | happy path |
  1428→| prevents fulfilling more than ordered quantity | order line qty 2; attempt to fulfill qty 3 | validation error | validation |
  1429→| only allows admin, owner, or staff to create fulfillments | support user attempts to create fulfillment | 403 Forbidden | authorization |
  1430→
  1431→---
  1432→
  1433→#### tests/Feature/Payments/StripeWebhookTest.php
  1434→
  1435→| Test Name | Setup / Preconditions | Key Assertions | Category |
  1436→|-----------|----------------------|----------------|----------|
  1437→| handles checkout.session.completed webhook | POST /api/webhooks/stripe with valid signature and checkout.session.completed event | checkout completed, order created | happy path |
  1438→| rejects webhook with invalid signature | POST with wrong signature | 400 response | validation |
  1439→| processes payment_intent.succeeded event | payment intent succeeded | payment status = captured, order financial_status = paid | happy path |
  1440→| handles refund.created webhook | refund webhook from Stripe | refund record created/updated | happy path |
  1441→| is idempotent for duplicate events | send same event twice | only one order created | edge case |
  1442→| handles payment_intent.payment_failed event | payment failed webhook | payment status = failed, checkout remains in payment_pending | edge case |
  1443→
  1444→---
  1445→
  1446→#### tests/Feature/Payments/PaymentServiceTest.php
  1447→
  1448→| Test Name | Setup / Preconditions | Key Assertions | Category |
  1449→|-----------|----------------------|----------------|----------|
  1450→| creates a Stripe checkout session | mock Stripe API; begin payment for checkout | session URL returned, payment record created | happy path |
  1451→| resolves the correct payment provider | default config uses Stripe | resolved provider is StripePaymentProvider | happy path |
  1452→| throws for unsupported payment provider | attempt to resolve unknown provider | exception thrown | validation |
  1453→| creates a payment record with pending status | begin payment | payment row in DB with status=requires_action | happy path |
  1454→| updates payment status on capture | process successful payment callback | payment status = captured | happy path |
  1455→
  1456→---
  1457→
  1458→#### tests/Feature/Customers/CustomerAccountTest.php
  1459→
  1460→| Test Name | Setup / Preconditions | Key Assertions | Category |
  1461→|-----------|----------------------|----------------|----------|
  1462→| renders the customer dashboard | acting as customer; GET /account | 200 response, sees customer name | happy path |
  1463→| lists customer orders | customer with 3 orders; GET /account/orders | sees all 3 order numbers | happy path |
  1464→| shows order detail | customer with order #1001; GET /account/orders/1001 | sees order items and totals | happy path |
  1465→| prevents accessing another customers orders | customer A logged in; GET /account/orders/{customerB-order-number} | 404 response | authorization |
  1466→| redirects unauthenticated requests to login | GET /account without auth | redirected to /account/login | authorization |
  1467→| updates customer profile | update name and marketing_opt_in | changes persisted in DB | happy path |
  1468→
  1469→---
  1470→
  1471→#### tests/Feature/Customers/AddressManagementTest.php
  1472→
  1473→| Test Name | Setup / Preconditions | Key Assertions | Category |
  1474→|-----------|----------------------|----------------|----------|

| adds tracking information | ship fulfillment with tracking_company="DHL", tracking_number="123456" | tracking info saved, shipped_at set | happy path |
| transitions fulfillment from pending to shipped | ship fulfillment | status = shipped | happy path |
| transitions fulfillment from shipped to delivered | deliver fulfillment | status = delivered | happy path |
| prevents fulfilling more than ordered quantity | order line qty 2; attempt to fulfill qty 3 | validation error | validation |
| only allows admin, owner, or staff to create fulfillments | support user attempts to create fulfillment | 403 Forbidden | authorization |

---

#### tests/Feature/Payments/StripeWebhookTest.php

| Test Name | Setup / Preconditions | Key Assertions | Category |
|-----------|----------------------|----------------|----------|
| handles checkout.session.completed webhook | POST /api/webhooks/stripe with valid signature and checkout.session.completed event | checkout completed, order created | happy path |
| rejects webhook with invalid signature | POST with wrong signature | 400 response | validation |
| processes payment_intent.succeeded event | payment intent succeeded | payment status = captured, order financial_status = paid | happy path |
| handles refund.created webhook | refund webhook from Stripe | refund record created/updated | happy path |
| is idempotent for duplicate events | send same event twice | only one order created | edge case |
| handles payment_intent.payment_failed event | payment failed webhook | payment status = failed, checkout remains in payment_pending | edge case |

---

#### tests/Feature/Payments/PaymentServiceTest.php

| Test Name | Setup / Preconditions | Key Assertions | Category |
|-----------|----------------------|----------------|----------|
| creates a Stripe checkout session | mock Stripe API; begin payment for checkout | session URL returned, payment record created | happy path |
| resolves the correct payment provider | default config uses Stripe | resolved provider is StripePaymentProvider | happy path |
| throws for unsupported payment provider | attempt to resolve unknown provider | exception thrown | validation |
| creates a payment record with pending status | begin payment | payment row in DB with status=requires_action | happy path |
| updates payment status on capture | process successful payment callback | payment status = captured | happy path |

---

#### tests/Feature/Customers/CustomerAccountTest.php

| Test Name | Setup / Preconditions | Key Assertions | Category |
|-----------|----------------------|----------------|----------|
| renders the customer dashboard | acting as customer; GET /account | 200 response, sees customer name | happy path |
| lists customer orders | customer with 3 orders; GET /account/orders | sees all 3 order numbers | happy path |
| shows order detail | customer with order #1001; GET /account/orders/1001 | sees order items and totals | happy path |
| prevents accessing another customers orders | customer A logged in; GET /account/orders/{customerB-order-number} | 404 response | authorization |
| redirects unauthenticated requests to login | GET /account without auth | redirected to /account/login | authorization |
| updates customer profile | update name and marketing_opt_in | changes persisted in DB | happy path |

---

#### tests/Feature/Customers/AddressManagementTest.php

| Test Name | Setup / Preconditions | Key Assertions | Category |
|-----------|----------------------|----------------|----------|


  1875→| `Cart/CartApiTest` | Cart API feature tests |
  1876→| `Checkout/CheckoutFlowTest` | Checkout flow feature tests |
  1877→| `Checkout/CheckoutStateTest` | Checkout state machine feature tests |
  1878→| `Checkout/PricingIntegrationTest` | Pricing integration feature tests |
  1879→| `Checkout/DiscountTest` | Checkout discount feature tests |
  1880→| `Checkout/ShippingTest` | Checkout shipping feature tests |
  1881→| `Checkout/TaxTest` | Checkout tax feature tests |
  1882→| `Orders/OrderCreationTest` | Order creation feature tests |
  1883→| `Orders/RefundTest` | Refund feature tests |
  1884→| `Orders/FulfillmentTest` | Fulfillment feature tests |
  1885→| `Payments/StripeWebhookTest` | Stripe webhook feature tests |
  1886→| `Payments/PaymentServiceTest` | Payment service feature tests |
  1887→| `Customers/CustomerAccountTest` | Customer account feature tests |
  1888→| `Customers/AddressManagementTest` | Address management feature tests |
  1889→| `Admin/DashboardTest` | Admin dashboard feature tests |
  1890→| `Admin/ProductManagementTest` | Admin product management feature tests |
  1891→| `Admin/OrderManagementTest` | Admin order management feature tests |
  1892→| `Admin/DiscountManagementTest` | Admin discount management feature tests |
  1893→| `Admin/SettingsTest` | Admin settings feature tests |
  1894→| `Search/SearchTest` | Search feature tests |

| `Cart/CartApiTest` | Cart API feature tests |
| `Checkout/CheckoutFlowTest` | Checkout flow feature tests |
| `Checkout/CheckoutStateTest` | Checkout state machine feature tests |
| `Checkout/PricingIntegrationTest` | Pricing integration feature tests |
| `Checkout/DiscountTest` | Checkout discount feature tests |
| `Checkout/ShippingTest` | Checkout shipping feature tests |
| `Checkout/TaxTest` | Checkout tax feature tests |
| `Orders/OrderCreationTest` | Order creation feature tests |
| `Orders/RefundTest` | Refund feature tests |
| `Orders/FulfillmentTest` | Fulfillment feature tests |
| `Payments/StripeWebhookTest` | Stripe webhook feature tests |
| `Payments/PaymentServiceTest` | Payment service feature tests |
| `Customers/CustomerAccountTest` | Customer account feature tests |
| `Customers/AddressManagementTest` | Address management feature tests |
| `Admin/DashboardTest` | Admin dashboard feature tests |
| `Admin/ProductManagementTest` | Admin product management feature tests |
| `Admin/OrderManagementTest` | Admin order management feature tests |
| `Admin/DiscountManagementTest` | Admin discount management feature tests |
| `Admin/SettingsTest` | Admin settings feature tests |
| `Search/SearchTest` | Search feature tests |


  1955→| `OrderService` | Order creation from checkout, numbering, inventory commit |
  1956→| `RefundService` | Refund creation, provider API, inventory restock |
  1957→| `FulfillmentService` | Fulfillment CRUD, tracking, status management |
  1958→| `NavigationService` | Menu tree building, URL resolution, caching |
  1959→| `SearchService` | FTS5 index management, query execution, autocomplete |
  1960→| `AnalyticsService` | Event tracking, daily aggregation |
  1961→| `WebhookService` | Event dispatch, HMAC signing, delivery management |
  1962→| `Payments\StripePaymentProvider` | Stripe Checkout Sessions, webhook handling |
  1963→| `Payments\PaypalPaymentProvider` | Stub implementation |
  1964→
  1965→---
  1966→
  1967→## 6. File Count Estimate
  1968→
  1969→| Category | Estimated Files |
  1970→|----------|-----------------|
  1971→| Migrations | 28-32 |
  1972→| Models | 32-36 |
  1973→| Livewire Components (Admin) | 28-30 |
  1974→| Livewire Components (Storefront) | 15-17 |

| `OrderService` | Order creation from checkout, numbering, inventory commit |
| `RefundService` | Refund creation, provider API, inventory restock |
| `FulfillmentService` | Fulfillment CRUD, tracking, status management |
| `NavigationService` | Menu tree building, URL resolution, caching |
| `SearchService` | FTS5 index management, query execution, autocomplete |
| `AnalyticsService` | Event tracking, daily aggregation |
| `WebhookService` | Event dispatch, HMAC signing, delivery management |
| `Payments\StripePaymentProvider` | Stripe Checkout Sessions, webhook handling |
| `Payments\PaypalPaymentProvider` | Stub implementation |

---

## 6. File Count Estimate

| Category | Estimated Files |
|----------|-----------------|
| Migrations | 28-32 |
| Models | 32-36 |
| Livewire Components (Admin) | 28-30 |
| Livewire Components (Storefront) | 15-17 |


Edit

| `tests/Feature/Payments/` | `StripeWebhookTest.php`, `PaymentServiceTest.php` |

| `tests/Feature/Payments/` | `MockPaymentProviderTest.php`, `PaymentServiceTest.php`, `BankTransferConfirmationTest.php` |