TorbatYar/docs/phases/Payment/phase-14-1-psp-management.md
Mortezakoohjani 9fac160258 feat(payment): ship Torbat Pay MVP phases 14.0-14.5
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>
2026-07-27 17:57:04 +03:30

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.