Snider
4e4337e412
feat(commerce): implement RFC.md — billing, subscriptions, Stripe + BTCPay, Commerce Matrix ( #845 )
...
Extends prior #860 DunningService with the full RFC.md surface.
Lands across 44 modified/new files:
* Contracts/PaymentGatewayContract.php — implemented by both
Services/StripeGateway.php and Services/BTCPayGateway.php
* Boot.php — provider bindings + route groups + Commerce Matrix training
mode middleware
* Services/WebhookService.php — DB::transaction wrapping + ProcessWebhookEvent
job dispatched ->afterCommit; idempotency via webhook_events unique
(gateway, event_id) — duplicates rejected silently
* Jobs/ProcessWebhookEvent.php
* DTOs/ — readonly PHP 8.2+ classes per RFC.dto.md
* Services/SubscriptionStateMachine.php — active → suspended (failed
payment) → cancelled → expired transitions
* Services/ProrationService.php — credit unused old plan time, charge
new plan remainder, applied via CreditNote + Invoice
* DunningService extended — 1d/3d/7d/14d retry config + cancel
* Migrations — guarded migrations for missing short-name billing tables
(orders/payments/invoices) + RFC compatibility columns
* routes/api.php — /v1/* endpoints
* Checkout success/cancel routes
* Commerce Matrix training-mode endpoint + record-permissions logic
* Console/Commands — RFC.commands.md signatures
* Events per RFC.events.md
* Models extended
php -l clean. composer validate passes. pest unrunnable in sandbox.
Co-authored-by: Codex <noreply@openai.com>
Closes tasks.lthn.sh/view.php?id=845
2026-04-25 22:55:51 +01:00
Snider
df167eb423
fix(dx): add declare(strict_types=1) and fix PSR-12 compliance
...
CI / PHP 8.3 (pull_request) Failing after 3s
CI / PHP 8.4 (pull_request) Failing after 3s
Added missing strict_types declarations to 65 PHP files and ran
Laravel Pint to fix PSR-12 violations (ordered imports, unary
operator spacing, brace positioning, fully qualified strict types).
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 09:08:03 +00:00
Snider
8f27fe85c3
refactor: update Tenant module imports after namespace migration
...
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>
2026-01-27 17:39:12 +00:00
Snider
a774f4e285
refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce
...
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>
2026-01-27 16:23:12 +00:00
Snider
a74a02f406
monorepo sepration
2026-01-27 00:24:22 +00:00