Add independent payment-service (port 8012, payment_db) with foundation licensing, BYO-PSP, merchant accounts, idempotent requests, callbacks, and immutable ledger. Co-authored-by: Cursor <cursoragent@cursor.com>
2.0 KiB
Phase 14.1 — PSP Management
| Field | Value |
|---|---|
| Identifier | payment-14.1 |
| Implementation Priority | HIGH |
| Status | Complete |
| Service | payment |
| Depends On | payment-14.0 |
Full specification: payment-roadmap.md
Purpose
Enable tenants to connect BYO-PSP credentials (ZarinPal, IDPay, NextPay, Pay.ir, Mellat, Parsian, Saman, …), test connections, and configure routing priority with adapter registry.
Business Scope
Connect, test, suspend, and prioritize tenant-owned PSP gateways. Failover between primary and secondary PSP.
Technical Scope
Aggregates: PspConnection, PspCredentialVaultRef, PspConnectionHealthCheck, PspRoutingPolicy. MockPspAdapter + provider-family stubs. Secret refs only in API responses.
Dependencies
payment-14.0
Out of Scope
Merchant facilitator onboarding (14.2), payment capture (14.3), callbacks (14.4), international live PSPs.
Capabilities
payment.psp_connections, payment.psp_routing, payment.psp_health_check
Permissions
payment.psp_connections.view|create|update|delete|test|manage, payment.psp_routing.manage
Events
payment.psp_connection.created|updated|suspended|activated|tested, payment.psp_routing.updated
API Contracts
/api/v1/psp-connections, /api/v1/psp-routing-policies, POST .../test
Data Ownership
Payment owns connection and routing metadata; vault stores secrets.
Provider Ownership
All PSP SDK calls in Payment adapters.
Integration Rules
Credential rotation must not break in-flight requests. Adapter protocol versioned.
Quality Gates
Secret redaction, tenant isolation, adapter contract tests.
Definition of Done
Tenant PSP connect/test/suspend works with mock adapter; no payment requests yet.
Future Compatibility
Region/currency on connections; Stripe/PayPal adapter slots without schema break.