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
Claude
082be5ad90
chore: fix pint code style and add test config
...
CI / tests (push) Failing after 1m25s
Add phpunit.xml and tests/Pest.php for standalone test execution.
Apply Laravel Pint formatting fixes across all source files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 03:50:05 +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