Add missing files from P1-040/P1-041 implementation:
- CheckoutRateLimitException for 429 responses when rate limit exceeded
- FraudAssessment data object for fraud scoring results
- FraudService for velocity checks and Stripe Radar integration
- Register services in Boot.php
- Add fraud detection configuration in config.php
- Add CouponServiceTest for input sanitisation
The CheckoutRateLimiter (already tracked) is now properly integrated with
the exception handling, and the FraudService provides defence-in-depth
with velocity-based and geo-anomaly detection.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
P1-040: Verified rate limiting already integrated in checkout flow
P1-041: Integrated FraudService into checkout and webhook handlers
P1-042: Added coupon code sanitisation in CouponService
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove FK constraint to invoice_items table (not yet created)
- Shorten index names to avoid MariaDB 64-char limit
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Credit notes can exist independently of orders. Foreign keys will be
added when orders and refunds modules are implemented.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace generic Core PHP Framework template with documentation specific
to this commerce package, including service layer architecture, payment
gateways, domain events, and correct directory structure.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updates all references from Core\Mod\Tenant to Core\Tenant following
the monorepo separation. The Tenant module now lives in its own package
with the simplified namespace.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Align commerce module with the monorepo module structure by updating
all namespaces to use the Core\Mod\Commerce convention. This change
supports the recent monorepo separation and ensures consistency with
other modules.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>